Results 1 
6 of
6
A certified framework for compiling and executing garbagecollected languages
 In ICFP
, 2010
"... We describe the design, implementation, and use of a machinecertified framework for correct compilation and execution of programs in garbagecollected languages. Our framework extends Leroy’s Coqcertified Compcert compiler and Cminor intermediate language. We add: (i) a new intermediate language, G ..."
Abstract

Cited by 17 (0 self)
 Add to MetaCart
(Show Context)
We describe the design, implementation, and use of a machinecertified framework for correct compilation and execution of programs in garbagecollected languages. Our framework extends Leroy’s Coqcertified Compcert compiler and Cminor intermediate language. We add: (i) a new intermediate language, GCminor, that includes primitives for allocating memory in a garbagecollected heap and for specifying GC roots; (ii) a precise, lowlevel specification for a Cminor library for garbage collection; and (iii) a proven semanticspreserving translation from GCminor to Cminor plus the GC library. GCminor neatly encapsulates the interface between mutator and collector code, while remaining simple and flexible enough to be used with a wide variety of source languages and collector styles. Front ends targeting GCminor can be implemented using any compiler technology and any desired degree of verification, including full semantics preservation, type preservation, or informal trust. As an example application of our framework, we describe a compiler for Haskell that translates the Glasgow Haskell Compiler’s Core intermediate language to GCminor. To support a simple but useful memory safety argument for this compiler, the front end uses a novel combination of type preservation and runtime checks, which is of independent interest.
Efficient Search for Inputs Causing High Floatingpoint Errors
"... Tools for floatingpoint error estimation are fundamental to program understanding and optimization. In this paper, we focus on tools for determining the input settings to a floating point routine that maximizes its result error. Such tools can help support activities such as precision allocation, ..."
Abstract

Cited by 5 (1 self)
 Add to MetaCart
(Show Context)
Tools for floatingpoint error estimation are fundamental to program understanding and optimization. In this paper, we focus on tools for determining the input settings to a floating point routine that maximizes its result error. Such tools can help support activities such as precision allocation, performance optimization, and autotuning. We benchmark current abstractionbased precision analysis methods, and show that they often do not work at scale, or generate highly pessimistic error estimates, often caused by nonlinear operators or complex input constraints that define the set of legal inputs. We show that while concretetestingbased error estimation methods based on maintaining shadow values at higher precision can search out higher errorinducing inputs, suitable heuristic search guidance is key to finding higher errors. We develop a heuristic search algorithm called Binary Guided Random Testing (BGRT). In 45 of the 48 total benchmarks, including many realworld routines, BGRT returns higher guaranteed errors. We also evaluate BGRT against two other heuristic search methods called ILS and PSO, obtaining better results.
Formal Verification of Coalescing GraphColoring Register Allocation
, 2010
"... Iterated Register Coalescing (IRC) is a widely used heuristic for performing register allocation via graph coloring. Many implementations in existing compilers follow (more or less faithfully) the imperative algorithm published in 1996. Several mistakes have been found in some of these implementati ..."
Abstract

Cited by 5 (0 self)
 Add to MetaCart
(Show Context)
Iterated Register Coalescing (IRC) is a widely used heuristic for performing register allocation via graph coloring. Many implementations in existing compilers follow (more or less faithfully) the imperative algorithm published in 1996. Several mistakes have been found in some of these implementations. In this paper, we present a formal verification (in Coq) of the whole IRC algorithm. We detail a specification that can be used as a reference for IRC. We also define the theory of registerinterference graphs; we implement a purely functional version of the IRC algorithm, and we prove the total correctness of our implementation. The automatic extraction of our IRC algorithm into Caml yields a program with competitive performance. This work has been integrated into the CompCert verified compiler.
Initial semantics for higherorder typed syntax
 Journal of Formalized Reasoning
"... Initial Semantics aims at characterizing the syntax associated to a signature as the initial object of some category. We present an initial semantics result for typed syntax with variable binding together with its formalization in the Coq proof assistant. The main theorem was first proved on paper ..."
Abstract

Cited by 4 (2 self)
 Add to MetaCart
(Show Context)
Initial Semantics aims at characterizing the syntax associated to a signature as the initial object of some category. We present an initial semantics result for typed syntax with variable binding together with its formalization in the Coq proof assistant. The main theorem was first proved on paper in the second author’s PhD thesis in 2010, and verified formally shortly afterwards. To a simply–typed binding signature S over a fixed set T of object types we associate a category called the category of representations of S. We show that this
Extended Initiality for Typed Abstract Syntax
 Logical Methods in Computer Science 8(2), 1 – 35
, 2012
"... Abstract. Initial Semantics aims at interpreting the syntax associated to a signature as the initial object of some category of “models”, yielding induction and recursion principles for abstract syntax. Zsidó [Zsi10, Chap. 6] proves an initiality result for simply–typed syntax: given a signature S, ..."
Abstract

Cited by 3 (3 self)
 Add to MetaCart
(Show Context)
Abstract. Initial Semantics aims at interpreting the syntax associated to a signature as the initial object of some category of “models”, yielding induction and recursion principles for abstract syntax. Zsidó [Zsi10, Chap. 6] proves an initiality result for simply–typed syntax: given a signature S, the abstract syntax associated to S constitutes the initial object in a category of models of S in monads. However, the iteration principle her theorem provides only accounts for translations between two languages over a fixed set of object types. We generalize Zsidó’s notion of model such that object types may vary, yielding a larger category, while preserving initiality syntax, in which translations between terms over different types can be specified via the associated category–theoretic iteration operator as an initial morphism. Our definitions ensure that translations specified via initiality are type–safe, i.e. compatible with the typing in the source and target language in the obvious sense. Our main example is given via the propositions–as–types paradigm: we specify propositions and inference rules of classical and intuitionistic propositional logics through their respective typed signatures. Afterwards we use the category–theoretic iteration operator to specify a double negation translation from the former to the latter. A second example is given by the signature of PCF. For this particular case, we formalize the theorem in the proof assistant Coq. Afterwards we specify, via the category–theoretic iteration operator, translations from PCF to the untyped lambda calculus. 1.