Corpus ID: 195345883

A First-Order Functional Intermediate Language for Verified Compilers

  title={A First-Order Functional Intermediate Language for Verified Compilers},
  author={Sigurd Schneider and Gert Smolka and Sebastian Hack},
We present the rst-order intermediate language IL for veried compilers. IL is a functional language with calls to a nondeterministic environment. We give IL terms a second, imperative semantic interpretation and obtain a register transfer language. For the imperative interpretation we establish a notion of live variables. Based on live variables, we formulate a decidable property called coherence ensuring that the functional and the imperative interpretation of a term coincide. We formulate a… Expand
3 Citations
A Linear First-Order Functional Intermediate Language for Verified Compilers
A register assignment algorithm is formulated for IL and it is proved that the maximal number of live variables in the initial program bounds the number of different variables inThe final coherent program. Expand
A verified compiler for a linear imperative / functional intermediate language
The main research question this thesis studies is whether IL with coherence is a faithful implementation of SSA, and how the design inences the correctness invariants and the proofs in the veried compiler LVC. Expand
Structural Operational Semantics for Control Flow Graph Machines
A tight equivalence is established between Levy's call-by-push-value (CBPV) calculus and a control flow graph machine whose instructions are in static single assignment (SSA) form that is similar to the SSA intermediate representations found in modern compilers such as LLVM and GCC. Expand


A Formally Verified SSA-Based Middle-End - Static Single Assignment Meets CompCert
This work reports on the first formally verified, SSA-based, middle-end for CompCert, and addresses two problems raised by Leroy: giving a simple and intuitive formal semantics to SSA, and leveraging the global properties of SSA to reason locally about program optimizations. Expand
A Functional Perspective on SSA Optimisation Algorithms
A new formalisation of the mapping from SSA programs to a restricted form of lambda terms, called administrative normal form (ANF) is discussed, conjecture that this connection improves the ability to reason about SSA-based optimisation algorithms and provides a first data point by presenting an ANF variant of a well known SSA -based conditional constant propagation algorithm. Expand
SSA is functional programming
The SSA community draws pictures of graphs with basic blocks and flow edges, and the functional-language community writes lexically nested functions, but (as Richard Kelsey recently pointed out) they’re both doing exactly the same thing in different notation. Expand
LLVM: a compilation framework for lifelong program analysis & transformation
  • Chris Lattner, V. Adve
  • Computer Science
  • International Symposium on Code Generation and Optimization, 2004. CGO 2004.
  • 2004
The design of the LLVM representation and compiler framework is evaluated in three ways: the size and effectiveness of the representation, including the type information it provides; compiler performance for several interprocedural problems; and illustrative examples of the benefits LLVM provides for several challenging compiler problems. Expand
Formalizing the LLVM intermediate representation for verified program transformations
Vellvm provides a mechanized formal semantics of LLVM's intermediate representation, its type system, and properties of its SSA form, which includes multiple operational semantics and proves relations among them to facilitate different reasoning styles and proof techniques. Expand
Formal verification of a realistic compiler
This paper reports on the development and formal verification of CompCert, a compiler from Clight (a large subset of the C programming language) to PowerPC assembly code, using the Coq proof assistant both for programming the compiler and for proving its correctness. Expand
Principles of Model Checking (Representation and Mind Series)
Principles of Model Checking offers a comprehensive introduction to model checking that is not only a text suitable for classroom use but also a valuable reference for researchers and practitioners in the field. Expand
Formal Verification of Coalescing Graph-Coloring Register Allocation
A formal verification (in Coq) of the whole IRC algorithm is presented, which defines the theory of register-interference graphs, and implements a purely functional version of the IRC algorithm, and proves the total correctness of the implementation. Expand
Correspondence between ALGOL 60 and Church's Lambda-notation
A model for computer languages and computer behavior is described, based on the notions of functional application and functional abstraction, but also having analogues for imperative language features. Expand
Compiling with Continuations
This book shows how continuation-passing style is used as an intermediate representation to perform optimizations and program transformations to create practical optimizing compilers for modern languages like ML. Expand