Results 11  20
of
24
A Verified Implementation of an Applicative Language with Dynamic Storage Allocation
, 1993
"... 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 lang ..."
Abstract

Cited by 20 (0 self)
 Add to MetaCart
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 runtime 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.
MultiLevel MetaReasoning with Higher Order Abstract Syntax
 Foundations of Software Science and Computation Structures, volume 2620 of Lecture Notes in Computer Science
, 2003
"... Abstract. Combining Higher Order Abstract Syntax (HOAS) and (co)induction is well known to be problematic. In previous work [1] we have described the implementation of a tool called Hybrid, within Isabelle HOL, which allows object logics to be represented using HOAS, and reasoned about using tactica ..."
Abstract

Cited by 14 (4 self)
 Add to MetaCart
Abstract. Combining Higher Order Abstract Syntax (HOAS) and (co)induction is well known to be problematic. In previous work [1] we have described the implementation of a tool called Hybrid, within Isabelle HOL, which allows object logics to be represented using HOAS, and reasoned about using tactical theorem proving and principles of (co)induction. Moreover, it is definitional, which guarantees consistency within a classical type theory. In this paper we describe how to use it in a multilevel reasoning fashion, similar in spirit to other metalogics such F Oλ ∆IN and Twelf. By explicitly referencing provability, we solve the problem of reasoning by (co)induction in presence of nonstratifiable hypothetical judgments, which allow very elegant and succinct specifications. We demonstrate the method by formally verifying the correctness of a compiler for (a fragment) of MiniML, following [10]. To further exhibit the flexibility of our system, we modify the target language with a notion of nonwellfounded closure, inspired by Milner & Tofte [19] and formally verify via coinduction a subject reduction theorem for this modified language. 1
Verifying the Correctness of Compiler Transformations on Basic Blocks using Abstract Interpretation
 In Symposium on Partial Evaluation and SemanticsBased Program Manipulation (PEPM'91
, 1991
"... Interpretation Timothy S. McNerney Thinking Machines Corporation 245 First Street Cambridge, MA 02142 TimMcN@Think.COM Abstract We seek to develop thorough and reliable methods for testing compiler transformations by systematically generating a set of test cases, and then for each case, autom ..."
Abstract

Cited by 9 (0 self)
 Add to MetaCart
(Show Context)
Interpretation Timothy S. McNerney Thinking Machines Corporation 245 First Street Cambridge, MA 02142 TimMcN@Think.COM Abstract We seek to develop thorough and reliable methods for testing compiler transformations by systematically generating a set of test cases, and then for each case, automatically proving that the transformation preserves correctness. We have implemented a specialized program equivalence prover for the domain of assembly language programs emitted by the Connection Machine Fortran compiler and targeted for the CM2 massively parallel SIMD computer. Using abstract interpretation, the prover removes details such as register and stack usage, as well as explicit evaluation order within functional blocks, thereby reducing the problem to a trivial tree comparison. By performing limited loop unrolling, the prover also verifies that the compiler transformation preserves the inductive properties of simple loops. We have used this prover to successfully validate the re...
Formalizing and Verifying a Modern Build Language
, 2014
"... CLOUDMAKE is a software utility that automatically builds executable programs and libraries from source code—a modern MAKE utility. Its design gives rise to a number of possible optimizations, like cached builds, and the executables to be built are described using a functional programming language ..."
Abstract

Cited by 2 (1 self)
 Add to MetaCart
CLOUDMAKE is a software utility that automatically builds executable programs and libraries from source code—a modern MAKE utility. Its design gives rise to a number of possible optimizations, like cached builds, and the executables to be built are described using a functional programming language. This paper formally and mechanically verifies the correctness of central CLOUDMAKE algorithms. The paper defines the CLOUDMAKE language using an operational semantics, but with a twist: the central operation exec is defined axiomatically, making it pluggable so that it can be replaced by calls to compilers, linkers, and other tools. The formalization and proofs of the central CLOUDMAKE algorithms are done entirely in DAFNY, the proof engine of which is an SMTbased program verifier.
The Compcert C Verified Compiler  Documentation and user’s manual  Version 2.1
, 2013
"... ..."
(Show Context)
Mechanized semantics with applications to program proof and compiler verification
"... Abstract. The goal of this lecture is to show how modern theorem provers—in this case, the Coq proof assistant—can be used to mechanize the specification of programming languages and their semantics, and to reason over individual programs and over generic program transformations, as typically found ..."
Abstract

Cited by 2 (0 self)
 Add to MetaCart
(Show Context)
Abstract. The goal of this lecture is to show how modern theorem provers—in this case, the Coq proof assistant—can be used to mechanize the specification of programming languages and their semantics, and to reason over individual programs and over generic program transformations, as typically found in compilers. The topics covered include: operational semantics (smallstep, bigstep, definitional interpreters); a simple form of denotational semantics; axiomatic semantics and Hoare logic; generation of verification conditions, with application to program proof; compilation to virtual machine code and its proof of correctness; an example of an optimizing program transformation (dead code elimination) and its proof of correctness.
Proof Pearl: Proving a Simple Von Neumann Machine Turing Complete
"... Abstract. In this paper we sketch an ACL2checked 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 refamiliarizing oneself with the definitive model ..."
Abstract
 Add to MetaCart
(Show Context)
Abstract. In this paper we sketch an ACL2checked 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 refamiliarizing 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 X86like call/return protocol and implementing computed jumps, codifying a code proof strategy, and a little “creative ” reasoning about the nontermination of two machines.
Open Mechanized Reasoning Systems
, 1992
"... Contents Project Summary . . . . . . . . . . . . . . . . . Introduction . . . . . . . . . . . . . . . . . . . Our previous work in mechanized reasoning systems . . . . . . . Existing reasoning systems . . . . . . . . . . . . . . . Existing logical frameworks . . . . . . . . . . . . . . Open mechani ..."
Abstract
 Add to MetaCart
Contents Project Summary . . . . . . . . . . . . . . . . . Introduction . . . . . . . . . . . . . . . . . . . Our previous work in mechanized reasoning systems . . . . . . . Existing reasoning systems . . . . . . . . . . . . . . . Existing logical frameworks . . . . . . . . . . . . . . Open mechanized reasoning systems . . . . . . . . . . . . Project Description . . . . . . . . . . . . . . . . . References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Accomplishments of Previous NSF Support . . . . . . . . . . Budget Pages . . . . . . . . . . . . . . . . . . . Biography of McCarthy . . . . . . . . . . . . . . . . Biography of Giunchiglia . . . . . . . . . . . . . . . Biography of Talcott . . . . . . . . . . . . . . . . i 1. Project summary There is a growing interest in the interconnection and integration of reasoning modules and systems. For example, developers of hardware veri