ACL2 is a first-order applicative programming language based on Common Lisp. It is also a mathematical logic for which a mechanical
theorem-prover has been implemented in the style of the Boyer-Moore theorem prover. The ACL2 system is used primarily in the
modeling and verification of computer hardware and software, where the executability of the language allows models to be used
as prototype designs or “simulators.” To support efficient execution of certain kinds of models, especially models of microprocessors,
ACL2 provides “singlethreaded objects,” structures with the usual “copy on write” applicative semantics but for which writes
are implemented destructively. Syntactic restrictions insure consistency between the formal semantics and the implementation.
The design of single-threaded objects has been influenced both by the need to make execution efficient and the need to make
proofs about them simple. We discuss the issues.