Essays in computing science
Extracting &ohgr;'s programs from proofs in the calculus of constructions
POPL '89 Proceedings of the 16th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Computational lambda-calculus and monads
Proceedings of the Fourth Annual Symposium on Logic in computer science
Methods and logics for proving programs
Handbook of theoretical computer science (vol. B)
The type and effect discipline
Information and Computation
A syntactic approach to type soundness
Information and Computation
The B-book: assigning programs to meanings
The B-book: assigning programs to meanings
Communications of the ACM
An axiomatic basis for computer programming
Communications of the ACM
A Discipline of Programming
Auxiliary Variables and Recursive Procedures
TAPSOFT '97 Proceedings of the 7th International Joint Conference CAAP/FASE on Theory and Practice of Software Development
Formalisation of B in Isabelle/HOL
B '98 Proceedings of the Second International B Conference on Recent Advances in the Development and Use of the B Method
Theorem Prover Support for Precondition and Correctness Calculation
ICFEM '02 Proceedings of the 4th International Conference on Formal Engineering Methods: Formal Methods and Software Engineering
Formalizing Stålmarck's Algorithm in Coq
TPHOLs '00 Proceedings of the 13th International Conference on Theorem Proving in Higher Order Logics
A Generic Library for Floating-Point Numbers and Its Application to Exact Computing
TPHOLs '01 Proceedings of the 14th International Conference on Theorem Proving in Higher Order Logics
Weakest Precondition for General Recursive Programs Formalized in Coq
TPHOLs '02 Proceedings of the 15th International Conference on Theorem Proving in Higher Order Logics
Maintaining database integrity with refinement types
Proceedings of the 25th European conference on Object-oriented programming
Hi-index | 0.01 |
We present a new approach to certifying functional programs with imperative aspects, in the context of Type Theory. The key is a functional translation of imperative programs, based on a combination of the type and effect discipline and monads. Then an incomplete proof of the specification is built in the Type Theory, whose gaps would correspond to proof obligations. On sequential imperative programs, we get the same proof obligations as those given by Floyd-Hoare logic. Compared to the latter, our approach also includes functional constructions in a straight-forward way. This work has been implemented in the Coq Proof Assistant and applied on non-trivial examples.