# Synthesizing proofs from programs in the Calculus of Inductive Constructions

## Abstract

We want to prove “automatically” that a program is correct with respect to a set of given properties that is a specification. Proofs of specifications contain logical parts and computational parts. Programs can be seen as computational parts of proofs. They can then be extracted from proofs and be certified to be correct. We focus on the inverse problem: is it possible to reconstruct proof obligations from a program and its specification ? The framework is the type theory where a proof can be represented as a typed *λ*-term [Con86, NPS90] and particularly the Calculus of Inductive Constructions [Coq85]. A notion of coherence is introduced between a specification and a program containing annotations as in the Hoare sense. This notion is based on the definition of an extraction function called the weak extraction. Such an annotated program can give a method to reconstruct a set of proof obligations needed to have a proof of the initial specification. This can be seen either as a method of proving programs or as a method of synthetically describing proofs.

## Keywords

Heuristic Method Proof Obligation Inductive Type Typing Judgment Inductive Construction## Preview

Unable to display preview. Download preview PDF.

## References

- [Bar91]H. Barendregt. Lambda Calculi with Types. Technical Report 91-19, Catholic University Nijmegen, September 1991.Google Scholar
- [BM92]R. Burstall and J. McKinna. Deliverables: a categorical approach to program development in type theory. Technical Report 92-242, LFCS, October 1992. Also in [NPP92].Google Scholar
- [CCF+94]C. Cornes, J. Courant, J.C. Filliâtre, G. Huet, P. Manoury, C. Paulin-Mohring, C. Muñoz, C. Murthy, C. Parent, A. Saïbi, and B. Werner. Coq V5.10 Reference Manual. Technical report, 1994. Disponible en ftp anonyme sur ftp.inria.fr, à paraître.Google Scholar
- [Con86]R. L. Constable et al.
*Implementing Mathematics with the Nuprl Proof Development System*. Prentice-Hall, 1986.Google Scholar - [Coq85]T. Coquand.
*Une théorie des constructions*. PhD thesis, Université Paris VII, 1985.Google Scholar - [DFH+93]G. Dowek, A. Felty, H. Herbelin, G. Huet, C. Murthy, C. Parent, C. Paulin-Mohring, and B. Werner. The Coq Proof Assistant User's Guide — Version 5.8. Technical Report 154, Projet Formel — INRIA-Rocquencourt-CNRS-ENS Lyon, May 1993.Google Scholar
- [Gir72]J.Y. Girard.
*Interprétation fonctionnelle et élimination des coupures de l'arithmétique d'ordre supérieur*. PhD thesis, Université Paris 7, 1972.Google Scholar - [Hoa69]C.A.R. Hoare. An Axiomatic Basis for Computer Programming.
*Communications of the ACM*, 12(10), October 1969.Google Scholar - [How80]W.A. Howard. The formulaes-as-types notion of construction. In J.R. Hindley, editor,
*To H.B.Curry: Essays on Combinatory Logic, lambda-calculus and formalism*. Seldin, J.P., 1980.Google Scholar - [ML84]P. Martin-Löf.
*Intuitionistic Type Theory*. Studies in Proof Theory. Bibliopolis, 1984.Google Scholar - [MS92]P. Manoury and M. Simonot.
*Des preuves de totalité de fonctions comme synthèse de programmes*. PhD thesis, Université PARIS 7, December 1992.Google Scholar - [NPP92]B. Nordström, K. Petersson, and G. Plotkin, editors.
*Proceedings of the 1992 workshop on types for proofs and programs*, June 1992.Google Scholar - [NPS90]B. Nordström, K. Petersson, and J. M. Smith.
*Programming in Martin-Löf 's Type Theory: an introduction*. Oxford Science Publications, 1990.Google Scholar - [Par93]C. Parent. Developing certified programs in the system Coq — The Program tactic. In H. Barendregt and T. Nipkow, editors,
*Types For Proofs and Programs*, volume 806 of*LNCS*, pages 291–312, May 1993.Google Scholar - [Par95]C. Parent.
*Synthèse de preuves de programmes dans le Calcul des Constructions*. PhD thesis, Ecole Normale Supérieure de Lyon, January 1995.Google Scholar - [PC89]F. Pfenning and Paulin-Mohring C. Inductively Defined Types in the Calculus of Constructions. In
*5th International Conference on Mathematical Foundations of Programming Semantics*, volume 442 of*LNCS*, pages 209–228, 1989.Google Scholar - [PM89a]C. Paulin-Mohring. Extracting
*F*_{ω}programs from proofs in the Calculus of Constructions. In*Sixteenth Annual ACM Symposium on Principles of Programming Languages*, Austin, January 1989.Google Scholar - [PM89b]C. Paulin-Mohring.
*Extraction de programmes dans le Calcul des Constructions*. PhD thesis, Université Paris VII, 1989.Google Scholar - [PM93]C. Paulin-Mohring. Inductive Definitions in the System Coq — Rules and Properties. In
*Typed Lambda Calculi and Applications*, volume 664 of*LNCS*, March 1993. Also in research report 92-49, LIP-ENS Lyon, December 1992.Google Scholar - [Pol94]E. Poll.
*A Programming Logic Based on Type Theory*. PhD thesis, Technische Universiteit Eindhoven, 1994.Google Scholar