Abstract
In this paper we sketch an ACL2-checked proof that a simple but unbounded Von Neumann machine model is Turing Complete, i.e., can do anything a Turing machine can do. The project formally revisits the roots of computer science. It requires re-familiarizing oneself with the definitive model of computation from the 1930s, dealing with a simple “modern” machine model, thinking carefully about the formal statement of an important theorem and the specification of both total and partial programs, writing a verifying compiler, including implementing an X86-like call/return protocol and implementing computed jumps, codifying a code proof strategy, and a little “creative” reasoning about the non-termination of two machines.
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
Bevier, W., Hunt Jr., W.A., Moore, J.S., Young, W.: Special issue on system verification. Journal of Automated Reasoning 5(4), 409–530 (1989)
Boyer, R.S., Moore, J.S.: A mechanical proof of the turing completeness of pure lisp. In: Bledsoe, W.W., Loveland, D.W. (eds.) Contemporary Mathematics: Automated Theorem Proving: After 25 Years, vol. 29, pp. 133–168. American Mathematical Society, Providence (1984)
Boyer, R.S., Moore, J.S.: A mechanical proof of the unsolvability of the halting problem. Journal of the Association for Computing Machinery 31(3), 441–458 (1984)
Cohen, E., Dahlweid, M., Hillebrand, M., Leinenbach, D., Moskal, M., Santen, T., Schulte, W., Tobies, S.: VCC: A practical system for verifying concurrent C. In: Berghofer, S., Nipkow, T., Urban, C., Wenzel, M. (eds.) TPHOLs 2009. LNCS, vol. 5674, pp. 23–42. Springer, Heidelberg (2009)
Kaufmann, M., Manolios, P., Moore, J.S.: Computer-Aided Reasoning: An Approach. Kluwer Academic Press, Boston (2000)
Kaufmann, M., Moore, J.S.: The ACL2 home page. Dept. of Computer Sciences, University of Texas at Austin (2014), http://www.cs.utexas.edu/users/moore/acl2/
Klein, G., Elphinstone, K., Heiser, G., Andronick, J., Cock, D., Derrin, P., Elkaduwe, D., Engelhardt, K., Kolanski, R., Norrish, M., Sewell, T., Tuch, H., Winwood, S.: seL4: Formal verification of an os kernel. In: ACM Symposium on Operating Systems Principles, pp. 207–220 (October 2009)
Lindholdm, T., Yellin, F.: The Java Virtual Machine Specification, 2nd edn. Prentice Hall (1999)
Liu, H.: Formal Specification and Verification of a JVM and its Bytecode Verifier. PhD thesis, University of Texas at Austin (2006)
Milner, R., Weyhrauch, R.: Proving compiler correctness in a mechanized logic. In: Machine Intelligence 7, pp. 51–72. Edinburgh University Press (1972)
Ray, S., Moore, J.S.: Proof styles in operational semantics. In: Hu, A.J., Martin, A.K. (eds.) FMCAD 2004. LNCS, vol. 3312, pp. 67–81. Springer, Heidelberg (2004)
Rogers, H.: A Theory of Recursive Functions and Effective Commputability. McGraw-Hill (1967)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2014 Springer International Publishing Switzerland
About this paper
Cite this paper
Moore, J.S. (2014). Proof Pearl: Proving a Simple Von Neumann Machine Turing Complete. In: Klein, G., Gamboa, R. (eds) Interactive Theorem Proving. ITP 2014. Lecture Notes in Computer Science, vol 8558. Springer, Cham. https://doi.org/10.1007/978-3-319-08970-6_26
Download citation
DOI: https://doi.org/10.1007/978-3-319-08970-6_26
Publisher Name: Springer, Cham
Print ISBN: 978-3-319-08969-0
Online ISBN: 978-3-319-08970-6
eBook Packages: Computer ScienceComputer Science (R0)