Abstract
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.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
E. Barendsen and S. Smetsers. Uniqueness typing for functional languages with graph rewriting semantics. In Mathematical Structures in Computer Science 6, pages 579–612. 1996.
R. S. Boyer and J S. Moore. A Computational Logic. Academic Press, New York, 1979.
R. S. Boyer and J S. Moore. A Computational Logic Handbook, Second Edition. Academic Press, New York, 1997.
J.-Y. Girard. Linear logic. In Theoretical Computer Science, volume 50, pages 1–102. 1987.
D. Greve, M. Wilding, and D. Hardin. High-speed, analyzable simulators. In Kaufmann et al. [9], pages 113–136.
David A. Greve. Symbolic simulation of the JEM1 microprocessor. In G. Gopalakrishnan and P. Windley, editors, Formal Methods in Computer-Aided Design-FMCAD, LNCS 1522. Springer-Verlag, 1998.
David Hardin, Matthew Wilding, and David Greve. Transforming the theorem prover into a digital design tool: From concept car to off-road vehicle. In Alan J. Hu and Moshe Y. Vardi, editors, Computer-Aided Verification-CAV’ 98, volume 1427 of Lecture Notes in Computer Science. Springer-Verlag, 1998. See URL http://pobox.com/users/hokie/docs/concept.ps.
P. Hudak. Continuation-based mutable abstract data types, or how to have your state and munge it too. Technical Report YaleU/DCS/RR-914, Department of Computer Science, Yale University, July 1992.
M. Kaufmann, P. Manolios, and J S. Moore, editors. Computer-Aided Reasoning: ACL2 Case Studies. Kluwer Academic Press, 2000.
M. Kaufmann, P. Manolios, and J. S. Moore. Computer-Aided Reasoning: An Approach. Kluwer Academic Press, 2000.
Matt Kaufmann and J. Moore. A precise description of the acl2 logic. In http://www.cs.utexas.edu/users/moore/publications/km97a.ps.Z. Department of Computer Sciences, University of Texas at Austin, 1997.
J. S. Moore. Rewriting for symbolic execution of state machine models. In Computer-Aided Verification-CAV’01, volume 2102 of Lecture Notes in Computer Science. Springer-Verlag, 2001. See URL http://www.cs.utexas.edu/users/moore/publications/nu-rewriter.
G. Plotkin. Call-by-name, call-by-value, and the λ-calculus. In Theoretical Computer Science, volume 1, pages 125–159. 1975.
D. Schmidt. Detecting global variables in denotational specifications. ACM Trans. Prog. Lang, 7:299–310, 1985.
G. L. Steele, Jr. Common Lisp The Language, Second Edition. Digital Press, 30 North Avenue, Burlington, MA 01803, 1990.
W. Stoye. Message-based functional operating systems. 6(3):291–311, 1986.
P. Wadler. Monads for functional programming. In Advanced Functional Programming. Springer Verlag, LNCS 925, 1995.
P. Wadler. How to declare an imperative. ACM Computing Surveys, 29(3):240–263, September 1997.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2002 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Boyer, R.S., Strother Moore, J. (2002). Single-Threaded Objects in ACL2. In: Krishnamurthi, S., Ramakrishnan, C.R. (eds) Practical Aspects of Declarative Languages. PADL 2002. Lecture Notes in Computer Science, vol 2257. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-45587-6_3
Download citation
DOI: https://doi.org/10.1007/3-540-45587-6_3
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-43092-6
Online ISBN: 978-3-540-45587-5
eBook Packages: Springer Book Archive