J.-C. Filliātre.
Verification of Non-Functional Programs using Interpretations in
Type Theory.
Journal of Functional Programming, 13(4):709-745, July 2003.
English translation of [12].
We study the problem of certifying programs combining imperative and
functional features within the general framework of type theory.
Type theory constitutes a powerful specification language, which is
naturally suited for the proof of purely functional programs. To
deal with imperative programs, we propose a logical interpretation
of an annotated program as a partial proof of its specification. The
construction of the corresponding partial proof term is based on a
static analysis of the effects of the program, and on the use of
monads. The usual notion of monads is refined in order to account
for the notion of effect. The missing subterms in the partial proof
term are seen as proof obligations, whose actual proofs are left to
the user. We show that the validity of those proof obligations
implies the total correctness of the program.
We also establish a result of partial completeness.
This work has been implemented in the Coq proof assistant.
It appears as a tactic taking an annotated program as argument and
generating a set of proof obligations. Several nontrivial
algorithms have been certified using this tactic.
[ bib |
.ps.gz ]
Back
This file has been generated by
bibtex2html 1.63