Abstract
The Coq proof assistant allows one to specify and certify programs. Then, code can be extracted from proofs to different programming languages. The goal of this article is to substitute, at extraction time, some complex and fast data structures for the structures used for specification and proof. This is made under two principal constraints: (1) this substitution must be correct: the optimized data structures in the extracted program must have the same properties as the original ones, (2) on the proof side, the structure must keep a computable nature. If the framework described here is general, we focus on the case of functional arrays. This work leads us to formalize the notion of observational equivalence in the Coq system. We conclude with benchmarks.
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.
T. Coquand and G. Huet. The Calculus of Constructions. Information and Computation, 76(2/3):95–120, 1988.
Eduardo Giménez. A tutorial on recursive types in Coq. Technical Report 0221, INRIA, Mai 1998.
Haskell, a Purely Functional Language. http://www.haskell.org.
The Objective Caml language. http://pauillac.inria.fr/ocaml/.
Chris Okasaki. Purely Functional Data Structures. Cambridge University Press, 1998.
C. Paulin-Mohring. Inductive Definitions in the System Coq-Rules and Properties. In M. Bezem and J.-F. Groote, editors, Proceedings of the conference Typed Lambda Calculi and Applications, volume 664 of Lecture Notes in Computer Science. Springer-Verlag, 1993. Also LIP research report 92-49.
The Coq Development Team. The Coq proof assistant reference manual-chapter 4. Technical Report 0255, INRIA, Février 2002.
The Coq Development Team. The Coq proof assistant reference manual version 7.2. Technical Report 0255, INRIA, Février 2002.
The Coq Development Team. The Coq proof assistant tutorial version 7.2. Technical Report 0256, INRIA, Février 2002.
Philip Wadler. Views: A way for pattern matching to cohabit with data abstraction. In 14th ACM Symposium on Principles of Programming Languages, Munich, January 1987.
Why: a software certification tool. http://why.lri.fr.
Glynn Winskel. The Formal Semantics of Programming Languages — An Introduction. The MIT Press, 1993.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2003 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Oury, N. (2003). Observational Equivalence and Program Extraction in the Coq Proof Assistant. In: Hofmann, M. (eds) Typed Lambda Calculi and Applications. TLCA 2003. Lecture Notes in Computer Science, vol 2701. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-44904-3_19
Download citation
DOI: https://doi.org/10.1007/3-540-44904-3_19
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-40332-6
Online ISBN: 978-3-540-44904-1
eBook Packages: Springer Book Archive