Results 1 
9 of
9
Formal certification of a compiler backend, or: programming a compiler with a proof assistant
 IN PROC. 33RD ACM SYMPOSIUM ON PRINCIPLES OF PROGRAMMING LANGUAGES (POPL ’06
, 2006
"... This paper reports on the development and formal certification (proof of semantic preservation) of a compiler from Cminor (a Clike imperative language) to PowerPC assembly code, using the Coq proof assistant both for programming the compiler and for proving its correctness. Such a certified compile ..."
Abstract

Cited by 226 (14 self)
 Add to MetaCart
This paper reports on the development and formal certification (proof of semantic preservation) of a compiler from Cminor (a Clike imperative language) to PowerPC assembly code, using the Coq proof assistant both for programming the compiler and for proving its correctness. Such a certified compiler is useful in the context of formal methods applied to the certification of critical software: the certification of the compiler guarantees that the safety properties proved on the source code hold for the executable compiled code as well.
Coinductive bigstep operational semantics
 In European Symposium on Programming (ESOP 2006
, 2006
"... Abstract. This paper illustrates the use of coinductive definitions and proofs in bigstep operational semantics, enabling the latter to describe diverging evaluations in addition to terminating evaluations. We show applications to proofs of type soundness and to proofs of semantic preservation for ..."
Abstract

Cited by 36 (6 self)
 Add to MetaCart
Abstract. This paper illustrates the use of coinductive definitions and proofs in bigstep operational semantics, enabling the latter to describe diverging evaluations in addition to terminating evaluations. We show applications to proofs of type soundness and to proofs of semantic preservation for compilers. 1
On the strength of proofirrelevant type theories
 of Lecture Notes in Computer Science
, 2006
"... Vol. 4 (3:13) 2008, pp. 1–20 ..."
Equality is typable in SemiFull Pure Type Systems
 Proceedings, 25th annual IEEE symposium on Login in Computer Science (LICS ’10
, 2010
"... Abstract—There are two usual ways to describe equality in a dependent typing system, one that uses an external notion of computation like betareduction, and one that introduces a typed judgement of betaequality directly in the typing system. After being an open problem for some time, the general e ..."
Abstract

Cited by 3 (1 self)
 Add to MetaCart
Abstract—There are two usual ways to describe equality in a dependent typing system, one that uses an external notion of computation like betareduction, and one that introduces a typed judgement of betaequality directly in the typing system. After being an open problem for some time, the general equivalence between both approaches has been solved by Adams for a class of pure type systems (PTSs) called functional. In this paper, we relax the functionality constraint and prove the equivalence for all semifull PTSs by combining the ideas of Adams with a study of the general shape of types in PTSs. As one application, an extension of this result to systems with subtyping would be a first step toward bringing closer the theory behind a proof assistant such as Coq to its implementation. I.
A simple typetheoretic language: MiniTT
"... This paper presents a formal description of a small functional language with dependent types. The language contains data types, mutual recursive/inductive definitions and a universe of small types. The syntax, semantics and type system is specified in such a way that the implementation of a parser, ..."
Abstract

Cited by 1 (0 self)
 Add to MetaCart
This paper presents a formal description of a small functional language with dependent types. The language contains data types, mutual recursive/inductive definitions and a universe of small types. The syntax, semantics and type system is specified in such a way that the implementation of a parser, interpreter and type checker is straightforward. The main difficulty is to design the conversion algorithm in such a way that it works for open expressions. The paper ends with a complete implementation in Haskell (around 400 lines of code).
Checking Dependent Types Using Compiled Code  Preliminary Report
"... Type checkers for dependent types need to evaluate user defined functions during type checking. For this, current implementations typically use an interpreter, which has drawbacks. We show, how at this stage compiled code can be used for a language with lazy evaluation. ..."
Abstract
 Add to MetaCart
Type checkers for dependent types need to evaluate user defined functions during type checking. For this, current implementations typically use an interpreter, which has drawbacks. We show, how at this stage compiled code can be used for a language with lazy evaluation.
DOI: 10.1007/11693024_5 Coinductive bigstep operational semantics
"... Abstract. This paper illustrates the use of coinductive definitions and proofs in bigstep operational semantics, enabling the latter to describe diverging evaluations in addition to terminating evaluations. We show applications to proofs of type soundness and to proofs of semantic preservation for ..."
Abstract
 Add to MetaCart
Abstract. This paper illustrates the use of coinductive definitions and proofs in bigstep operational semantics, enabling the latter to describe diverging evaluations in addition to terminating evaluations. We show applications to proofs of type soundness and to proofs of semantic preservation for compilers. inria00289545, version 1 21 Jun 2008 1
Simple simpl
"... Abstract. We report on a new implementation of a reduction strategy in Coq to simplify terms during interactive proofs. By “simplify”, we mean to reduce terms as much as possible while avoidingtomakethemgrow insize. Reachingthis goal amounts toadiscussion about how not to unfold uselessly global con ..."
Abstract
 Add to MetaCart
Abstract. We report on a new implementation of a reduction strategy in Coq to simplify terms during interactive proofs. By “simplify”, we mean to reduce terms as much as possible while avoidingtomakethemgrow insize. Reachingthis goal amounts toadiscussion about how not to unfold uselessly global constants. Coq’s simpl is such a reduction strategy and the current paper describes an alternative more efficient abstractmachinebased implementation to it hal00816918, version 1 23 Apr 2013
VeriML: A dependentlytyped, userextensible and languagecentric approach to proof assistants
, 2013
"... Software certification is a promising approach to producing programs which are virtually free of bugs. It requires the construction of a formal proof which establishes that the code in question will behave according to its specification – a higherlevel description of its functionality. The construc ..."
Abstract
 Add to MetaCart
Software certification is a promising approach to producing programs which are virtually free of bugs. It requires the construction of a formal proof which establishes that the code in question will behave according to its specification – a higherlevel description of its functionality. The construction of such formal proofs is carried out in tools called proof assistants. Advances in the current stateoftheart proof assistants have enabled the certification of a number of complex and realistic systems software. Despite such success stories, largescale proof development is an arcane art that requires significant manual effort and is extremely timeconsuming. The widely accepted best practice for limiting this effort is to develop domainspecific automation procedures to handle all but the most essential steps of proofs. Yet this practice is rarely followed or needs comparable development effort as well. This is due to a profound architectural shortcoming of existing proof assistants: developing automation procedures is currently overly complicated and errorprone. It involves the use of an amalgam of extension languages, each with a different programming model and a set of limitations, and with significant interfacing problems between them. This thesis posits that this situation can be significantly improved by designing a proof assistant with extensibility as the central focus. Towards that effect, I have designed a novel programming language called