Implementing mathematics with the Nuprl proof development system
Implementing mathematics with the Nuprl proof development system
Information and Computation - Semantics of Data Types
Programming in Martin-Lo¨f's type theory: an introduction
Programming in Martin-Lo¨f's type theory: an introduction
Cayenne—a language with dependent types
ICFP '98 Proceedings of the third ACM SIGPLAN international conference on Functional programming
Principles and Pragmatics of Subtyping in PVS
WADT '99 Selected papers from the 14th International Workshop on Recent Trends in Algebraic Development Techniques
Coercive Subtyping in Type Theory
CSL '96 Selected Papers from the10th International Workshop on Computer Science Logic
Synthesizing Proofs from Programs in the Calculus of Inductive Constructions
MPC '95 Mathematics of Program Construction
Dependent types in practical programming
Dependent types in practical programming
Journal of Functional Programming
Interactive Theorem Proving and Program Development
Interactive Theorem Proving and Program Development
Pure type systems with judgemental equality
Journal of Functional Programming
The not so simple proof-irrelevant model of CC
TYPES'02 Proceedings of the 2002 international conference on Types for proofs and programs
On the strength of proof-irrelevant type theories
IJCAR'06 Proceedings of the Third international joint conference on Automated Reasoning
A certified type-preserving compiler from lambda calculus to assembly language
Proceedings of the 2007 ACM SIGPLAN conference on Programming language design and implementation
Program-ing finger trees in Coq
ICFP '07 Proceedings of the 12th ACM SIGPLAN international conference on Functional programming
Proceedings of the 13th ACM SIGPLAN international conference on Functional programming
A Hoare Logic for Call-by-Value Functional Programs
MPC '08 Proceedings of the 9th international conference on Mathematics of Program Construction
TPHOLs '08 Proceedings of the 21st International Conference on Theorem Proving in Higher Order Logics
A New Elimination Rule for the Calculus of Inductive Constructions
Types for Proofs and Programs
A Machine-Checked Proof of the Average-Case Complexity of Quicksort in Coq
Types for Proofs and Programs
A Modular Type-Checking Algorithm for Type Theory with Singleton Types and Proof Irrelevance
TLCA '09 Proceedings of the 9th International Conference on Typed Lambda Calculi and Applications
A Hoare Logic for the State Monad
TPHOLs '09 Proceedings of the 22nd International Conference on Theorem Proving in Higher Order Logics
The implicit calculus of constructions as a programming language with dependent types
FOSSACS'08/ETAPS'08 Proceedings of the Theory and practice of software, 11th international conference on Foundations of software science and computational structures
Functional pearl: every bit counts
Proceedings of the 15th ACM SIGPLAN international conference on Functional programming
Semantic subtyping with an SMT solver
Proceedings of the 15th ACM SIGPLAN international conference on Functional programming
VeriML: typed computation of logical terms inside a language with effects
Proceedings of the 15th ACM SIGPLAN international conference on Functional programming
Automation for Dependently Typed Functional Programming
Fundamenta Informaticae - Dependently Typed Programming
Verifying stateful programs with substructural state and hoare types
Proceedings of the 5th ACM workshop on Programming languages meets program verification
Simulating Finite Eilenberg Machines with a Reactive Engine
Electronic Notes in Theoretical Computer Science (ENTCS)
The Matita interactive theorem prover
CADE'11 Proceedings of the 23rd international conference on Automated deduction
Secure distributed programming with value-dependent types
Proceedings of the 16th ACM SIGPLAN international conference on Functional programming
Static and user-extensible proof checking
POPL '12 Proceedings of the 39th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
PLPV '12 Proceedings of the sixth workshop on Programming languages meets program verification
The optimal fixed point combinator
ITP'10 Proceedings of the First international conference on Interactive Theorem Proving
xmonad in Coq (experience report): programming a window manager in a proof assistant
Proceedings of the 2012 Haskell Symposium
Rewriting Computation and Proof
On the correctness of an optimising assembler for the intel MCS-51 microprocessor
CPP'12 Proceedings of the Second international conference on Certified Programs and Proofs
Mtac: a monad for typed tactic programming in Coq
Proceedings of the 18th ACM SIGPLAN international conference on Functional programming
Lightweight proof by reflection using a posteriori simulation of effectful computation
ITP'13 Proceedings of the 4th international conference on Interactive Theorem Proving
Hi-index | 0.00 |
We propose a new language for writing programs with dependent types on top of the COQ proof assistant. This language permits to establish a phase distinction between writing and proving algorithms in the COQ environment. Concretely, this means allowing to write algorithms as easily as in a practical functional programming language whilst giving them as rich a specification as desired and proving that the code meets the specification using the whole COQ proof apparatus. This is achieved by extending conversion to an equivalence which relates types and subsets based on them, a technique originating from the "Predicate subtyping" feature of PVS and following mathematical convention. The typing judgements can be translated to the Calculus of (Co-)Inductive Constructions (CIC) by means of an interpretation which inserts coercions at the appropriate places. These coercions can contain existential variables representing the propositional parts of the final term, corresponding to proof obligations (or PVS type-checking conditions). A prototype implementation of this process is integrated with the COQ environment.