A Guide to VLISP, A Verified Programming Language Implementation


ABSTRACT The Verified Programming Language Implementation project has developed a formally verified implementation of the Scheme programming language, called vlisp. This report summarizes the results of the project. It also provides an overview of a group of reports presenting the details of the vlisp implementation and the logical proofs of its correctness.

  • [Show abstract] [Hide abstract]
    ABSTRACT: We report on an ongoing effort in mechanically proving correct a compiling specification for a bootstrap compiler from ComLisp (a subset of ANSI Common Lisp suciently expressive to serve as a compiler implementation language) to binary Transputer code using the PVS system. The compilation is carried out in four steps through a series of intermediate languages. This paper focuses on the first phase, namely, the compilation of ComLisp to the stack-intermediate language SIL, where parameter passing is implemented by a stack technique. The context of this work is the joint research effort Verifix aiming at developing methods for the construction of correct compilers for realistic programming languages.
  • Source
    [Show abstract] [Hide abstract]
    ABSTRACT: We present a programming language, model, and logic appropriate for implementing and reasoning about a memory management system. We then state what is meant by correctness of a copying garbage collector, and employ a variant of the novel separation logics [18, 23] to formally specify partial correctness of Cheney's copying garbage collector [8]. Finally, we prove that our implementation of Cheney's algorithm meets its specification, using the logic we have given, and auxiliary variables [19].
  • Source
    [Show abstract] [Hide abstract]
    ABSTRACT: Compilers that have been formally verified in theorem provers are often not directly usable because the formalization language is not a general-purpose programming language or the formalization contains non-executable constructs. This paper takes a comprehensive, even though simplified model of Java, formalized in the Isabelle proof assistant, as starting point and shows how core functions in the translation process (type checking and compilation) are defined and proved correct. From these, Isabelle's program extraction facility generates ML code that can be directly interfaced with other, possibly “unsafe” code.
    Electronic Notes in Theoretical Computer Science. 01/2003;

Full-text (2 Sources)

Available from
Jun 2, 2014