Proof Pearl: Proving a Simple Von Neumann Machine Turing Complete

  • J Strother Moore
Part of the Lecture Notes in Computer Science book series (LNCS, volume 8558)


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.


ACL2 Turing machine Java Virtual Machine (JVM) verifying compiler 


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    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)Google Scholar
  2. 2.
    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)CrossRefGoogle Scholar
  3. 3.
    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)CrossRefzbMATHMathSciNetGoogle Scholar
  4. 4.
    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)CrossRefGoogle Scholar
  5. 5.
    Kaufmann, M., Manolios, P., Moore, J.S.: Computer-Aided Reasoning: An Approach. Kluwer Academic Press, Boston (2000)Google Scholar
  6. 6.
    Kaufmann, M., Moore, J.S.: The ACL2 home page. Dept. of Computer Sciences, University of Texas at Austin (2014),
  7. 7.
    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)Google Scholar
  8. 8.
    Lindholdm, T., Yellin, F.: The Java Virtual Machine Specification, 2nd edn. Prentice Hall (1999)Google Scholar
  9. 9.
    Liu, H.: Formal Specification and Verification of a JVM and its Bytecode Verifier. PhD thesis, University of Texas at Austin (2006)Google Scholar
  10. 10.
    Milner, R., Weyhrauch, R.: Proving compiler correctness in a mechanized logic. In: Machine Intelligence 7, pp. 51–72. Edinburgh University Press (1972)Google Scholar
  11. 11.
    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)CrossRefGoogle Scholar
  12. 12.
    Rogers, H.: A Theory of Recursive Functions and Effective Commputability. McGraw-Hill (1967)Google Scholar

Copyright information

© Springer International Publishing Switzerland 2014

Authors and Affiliations

  • J Strother Moore
    • 1
  1. 1.Dept. of Computer ScienceUniversity of TexasAustinUSA

Personalised recommendations