• 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
      • Macro-libraries
      • ACL2
      • Interfacing-tools
      • Hardware-verification
      • Software-verification
      • Math
      • Testing-utilities
    • Operational-semantics-3__annotated-bibliography

    Bib::flatau92

    A. D. Flatau A verified implementation of an applicative language with dynamic storage allocation (ftp://ftp.cs.utexas.edu/pub/boyer/diss/flatau.pdf), University of Texas at Austin, Ph.D. dissertation, 1992 (minus some appendices).



    Relevance: a second verified compiler hosted on the CLI Verified Stack



    ———

    Abstract

    A compiler for a subset of the Nqthm logic and a mechanically checked proof of its correctness is described. The Nqthm logic defines an applicative programming language very similar to McCarthy's pure Lisp [20]. The compiler compiles programs in the Nqthm logic into the Piton assembly level language [23]. The correctness of the compiler is proven by showing that the result of executing the Piton code is the same as produced by the Nqthm interpreter V&C$. The Nqthm logic defines several different abstract data types, or shells, as they are called in Nqthm. The user can also define additional shells. The definition of a shell includes the definition of a constructor function that returns new objects with the type of that shell. These objects can become garbage, so the run-time system of the compiler includes a garbage collector. The proof of the correctness of the compiler has not been entirely mechanically checked. A plan for completing the proof is described.



    ———

    The version of the compiler presented in the dissertation included code for creating new shells and a garbage collector. But these features of the compiler were not fully verified at the time the dissertation was defended. An earlier version of the compiler dealt only with the Nqthm primitives CAR, CDR, CONS, FALSE, LISTP, NLISTP, TRUE, TRUEP, and IF, as well as recursive functions. The run-time of that simpler system included dynamic storage allocation (to allocate conses in Piton's array space). But it did not include a garbage collector. It was that simpler implementation that was mechanically verified. The completion of the proofs of the full system was never completed.

    The Nqthm events for this work may be found in the *.events files of examples/flatau/.