• Top
    • Documentation
      • Xdoc
      • ACL2-doc
      • Recursion-and-induction
      • Loop$-primer
      • Operational-semantics
        • Operational-semantics-3__annotated-bibliography
          • Bib::bhmy89
          • Bib::liu06
          • Bib::bm96
          • Bib::plotkin04b
          • Bib::bgm90
          • Bib::hkms17
          • Bib::bkm96
          • Bib::moore15
          • Bib::bh99
          • Bib::wilding93
          • Bib::plotkin04a
          • Bib::moore03b
          • Bib::mp02
          • Bib::moore19
          • Bib::manolios00
          • Bib::flatau92
          • Bib::hb92
          • Bib::bm05
          • Bib::goel16
          • Bib::bm73
            • Bib::ghk17
            • Bib::wilding92
            • Bib::moore17
            • Bib::moore96
            • Bib::ghkg14
            • Bib::yu92
            • Bib::hunt85
            • Bib::boh03
            • Bib::mmrv06
            • Bib::bm80
            • Bib::bh97
            • Bib::moore99b
            • Bib::moore14
            • Bib::rm04
            • Bib::by96
            • Bib::sawada00
            • Bib::mccarthy62
            • Bib::bm79
            • Bib::moore99a
            • Bib::sh98
            • Bib::rhmm07
            • Bib::kmm00a
            • Bib::ghk13
            • Bib::moore03a
            • Bib::hk12
            • Bib::mp67
            • Bib::young88
            • Bib::bm97
            • Bib::moore73
            • Bib::kmm00b
            • Bib::bevier87
          • Operational-semantics-1__simple-example
          • Operational-semantics-2__other-examples
          • Operational-semantics-5__history-etc
          • Operational-semantics-4__how-to-find-things
        • Pointers
        • Doc
        • Documentation-copyright
        • Course-materials
        • Publications
        • Args
        • ACL2-doc-summary
        • Finding-documentation
        • Broken-link
        • Doc-terminal-test-2
        • Doc-terminal-test-1
      • Books
      • Boolean-reasoning
      • Projects
      • Debugging
      • Std
      • Community
      • Proof-automation
      • ACL2
      • Macro-libraries
      • Interfacing-tools
      • Hardware-verification
      • Software-verification
      • Math
      • Testing-utilities
    • Operational-semantics-3__annotated-bibliography

    Bib::bm73

    R. S. Boyer and J S. Moore, “Proving Theorems about LISP Functions”, in Proceedings of the Third International Joint Conference on Artificial Intelligence (IJCAI), Stanford University, pp. 486-493, 1973.



    Relevance: journal article about the Edinburgh Pure Lisp Theorem Prover (PLTP)



    ———

    For a longer, journal version of this paper see R. S. Boyer and J S. Moore, “Proving Theorems about LISP Functions”, Journal of the ACM, 22(1), pp. 129-144, 1975.

    The IJCAI'73 paper was the first widely accessible description of the Edinburgh Pure Lisp Theorem Prover (PLTP). The key ideas in the theorem prover were the use of Lisp as a logic, the reliance on recursive function definitions, extensive use of rewriting and symbolic evaluation, and an induction heuristic based on the failure of symbolic evaluation. The system was fully automatic; there were no provisions for user supplied lemmas or hints.

    The “proveall” (regression suite) included such theorems as associativity of append, reverse-reverse, and the correctness of insertion sort. The paper was hailed as a landmark in theorem proving because these theorems had never been proved automatically before. But early critics said that proving theorems about pure Lisp was irrelevant because serious applications were not written in pure Lisp. However, Boyer and Moore argued that Lisp was a logic with features necessary to the specification and proof of program properties, namely recursive definitions and mathematical induction.

    The PLTP Archive contains a wealth of information about PLTP and its 1973 implementation in POP-2, including the POP-2 Reference Manual, scanned OCR listings of the PLTP source code, listings of proof output, and modern reconstructions of PLTP in OCaml (by Grant Passmore) and ACL2 (by J Moore).