Most existing programming languages provide little support to formally state and prove properties about programs. Adding such capabilities is far from trivial, as it requires significant re-engineering of the existing compilers and tools. This paper proposes a novel technique to write correct-by-construction programs in languages without built-in verification capabilities, while maintaining the ability to use existing tools. This is achieved in three steps. Firstly, we give a shallow embedding of the language (or a subset) into a dependently typed language. Secondly, we write a program in that embedding, and we use dependent types to guarantee correctness properties of interest within the embedding. Thirdly, we extract a program written in ...
In these lecture notes we give an introduction to functional programming with dependent types. We us...
This paper presents the design of ZOMBIE, a dependently-typed programming language that uses an adap...
Dependent type theories have a long history of being used for theorem proving. One aspect of type th...
Most dependently-typed programming languages either require that all expressions terminate (e.g. Coq...
Dependently typed programming languages provide a way to write programs, specifications, and correct...
Modern programming languages rely on advanced type systems that detect errors at compile-time. While...
Most dependently-typed programming languages either require that all expressions terminate (e.g. Coq...
Programming languages based on dependent type theory promise two great advances: flexibility and sec...
We propose a full-spectrum dependently typed programming language, Zombie, which supports general re...
Dependently typed languages such as Coq and Agda can statically guarantee the correctness of our pro...
We present a simple type-checker for a language with dependent types and let expressions, with a sim...
The definition of type equivalence is one of the most important design issues for any typed language...
Dependent type systems allow for a rich set of program properties to be expressed and mechanically v...
Dependently-typed languages allow for a new paradigm: proof-oriented or type-driven programming, con...
Dependent types and multi-stage programming have both been used, separately, in programming language...
In these lecture notes we give an introduction to functional programming with dependent types. We us...
This paper presents the design of ZOMBIE, a dependently-typed programming language that uses an adap...
Dependent type theories have a long history of being used for theorem proving. One aspect of type th...
Most dependently-typed programming languages either require that all expressions terminate (e.g. Coq...
Dependently typed programming languages provide a way to write programs, specifications, and correct...
Modern programming languages rely on advanced type systems that detect errors at compile-time. While...
Most dependently-typed programming languages either require that all expressions terminate (e.g. Coq...
Programming languages based on dependent type theory promise two great advances: flexibility and sec...
We propose a full-spectrum dependently typed programming language, Zombie, which supports general re...
Dependently typed languages such as Coq and Agda can statically guarantee the correctness of our pro...
We present a simple type-checker for a language with dependent types and let expressions, with a sim...
The definition of type equivalence is one of the most important design issues for any typed language...
Dependent type systems allow for a rich set of program properties to be expressed and mechanically v...
Dependently-typed languages allow for a new paradigm: proof-oriented or type-driven programming, con...
Dependent types and multi-stage programming have both been used, separately, in programming language...
In these lecture notes we give an introduction to functional programming with dependent types. We us...
This paper presents the design of ZOMBIE, a dependently-typed programming language that uses an adap...
Dependent type theories have a long history of being used for theorem proving. One aspect of type th...