Abstract
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.
This research was partly supported by ESPRIT Working Group “Types”.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
The Coq Proof Assistant. http://coq.inria.fr/. 78, 80, 90
J. R. Abrial. The B-Book. Assigning programs to meaning. Cambridge University Press, 1996. 78, 91
P. Chartier. Formalization of B in Isabelle/HOL. In Proceedings of the Second B International Conference, Montepellier, France, April 1998. Springer Verlag LNCS 1393. 91
P. Cousot. Handbook of Theoretical Computer Science, volume B, chapter Methods and Logics for Proving Programs, pages 841–993. Elsevier Science Publishers B. V., 1990. 78, 79, 90
E. W. Dijkstra. A Discipline of Programming. Prentice-Hall, 1976. 78
R. W. Floyd. Assigning meanings to programs. In J. T. Schwartz, editor, Mathematical Aspects of Computer Science, Proceedings of Symposia in applied Mathematics 19, pages 19–32, Providence, 1967. American Mathematical Society. 78
Mike Gordon. Teaching and Learning Formal Methods, chapter Teaching hardware and software verification in a uniform framework. Academic Press, 1996. 78, 91
C. A. R. Hoare. An axiomatic basis for computer programming. Communications of the ACM, 12(10):576–580,583, 1969. Also in [10] 45-58. 78
C. A. R. Hoare. Proof of a program: Find. Communications of the ACM, 14(1):39–45, January 1971. Also in [10] 59–74. 91
C. A. R. Hoare and C. B. Jones. Essays in Computing Science. Prentice Hall, New York, 1989. 92
E. Moggi. Computational lambda-calculus and monads. In IEEE Symposium on Logic in Computer Science, 1989. 79, 81
C. Muñoz. Supporting the B-method in PVS: An Approach to the Abstract Machine Notation in Type Theory. Submitted to FSE-98, 1998. 91
C. Parent. Developing certified programs in the system Coq-The Program tactic. Technical Report 93-29, Ecole Normale Supérieure de Lyon, October 1993. Also in Proceedings of the BRA Workshop Types for Proofs and Programs, May 93. 79
C. Paulin-Mohring. Extracting Fω’s programs from proofs in the Calculus of Constructions. In Sixteenth Annual ACM Symposium on Principles of Programming Languages, Austin, January 1989. ACM. 87, 89
T. Schreiber. Auxiliary variables and recursive procedures. In TAPSOFT’97: Theory and Practice of Software Development, volume 1214 of Lecture Notes in Computer Science, pages 697–711. Springer-Verlag, April 1997. 78, 90, 91
J.-P. Talpin and P. Jouvelot. The type and effect discipline. Information and Computation, 111(2):245–296, 1994. 79, 80
P. Wadler. Monads for functional programming. In Proceedings of the Marktoberdorf Summer School on Program Design Calculi, August 1992. 79, 81
A. K. Wright and M. Felleisen. A Syntactic Approach to Type Soundness. Information and Computation, 115:38–94, 1994. 85
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 1999 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Filliâtre, JC. (1999). Proof of Imperative Programs in Type Theory. In: Altenkirch, T., Reus, B., Naraschewski, W. (eds) Types for Proofs and Programs. TYPES 1998. Lecture Notes in Computer Science, vol 1657. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-48167-2_6
Download citation
DOI: https://doi.org/10.1007/3-540-48167-2_6
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-66537-3
Online ISBN: 978-3-540-48167-6
eBook Packages: Springer Book Archive