Implementing mathematics with the Nuprl proof development system
Implementing mathematics with the Nuprl proof development system
Dependent types in practical programming
Proceedings of the 26th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Journal of Functional Programming
Combining programming with theorem proving
Proceedings of the tenth ACM SIGPLAN international conference on Functional programming
TLCA'01 Proceedings of the 5th international conference on Typed lambda calculi and applications
The not so simple proof-irrelevant model of CC
TYPES'02 Proceedings of the 2002 international conference on Types for proofs and programs
TYPES'06 Proceedings of the 2006 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
Effective interactive proofs for higher-order imperative programs
Proceedings of the 14th ACM SIGPLAN international conference on Functional programming
Structuring the verification of heap-manipulating programs
Proceedings of the 37th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Dependent types and program equivalence
Proceedings of the 37th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Use of formal methods for building qualified code generator for safer automotive systems
Proceedings of the 1st Workshop on Critical Automotive applications: Robustness & Safety
Irrelevance in type theory with a heterogeneous equality judgement
FOSSACS'11/ETAPS'11 Proceedings of the 14th international conference on Foundations of software science and computational structures: part of the joint European conferences on theory and practice of software
Characteristic formulae for the verification of imperative programs
Proceedings of the 16th ACM SIGPLAN international conference on Functional programming
TLDI '12 Proceedings of the 8th ACM SIGPLAN workshop on Types in language design and implementation
Equality proofs and deferred type errors: a compiler pearl
Proceedings of the 17th ACM SIGPLAN international conference on Functional programming
Hoare-style reasoning with (algebraic) continuations
Proceedings of the 18th ACM SIGPLAN international conference on Functional programming
System FC with explicit kind equality
Proceedings of the 18th ACM SIGPLAN international conference on Functional programming
Hasochism: the pleasure and pain of dependently typed haskell programming
Proceedings of the 2013 ACM SIGPLAN symposium on Haskell
Hi-index | 0.00 |
In this paper, we show how Miquel's Implicit Calculus of Constructions (ICC) can be used as a programming language featuring dependent types. Since this system has an undecidable type-checking, we introduce a more verbose variant, called ICC* which fixes this issue. Datatypes and program specifications are enriched with logical assertions (such as preconditions, postconditions, invariants) and programs are decorated with proofs of those assertions. The point of using ICC* rather than the Calculus of Constructions (the core formalism of the Coq proof assistant) is that all of the static information (types and proof objects) is transparent, in the sense that it does not affect the computational behavior. This is concretized by a built-in extraction procedure that removes this static information. We also illustrate the main features of ICC* on classical examples of dependently typed programs.