Codifying guarded definitions with recursive schemes

  • Eduarde Giménez
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 996)

Abstract

We formalize an extension of the Calculus of Constructions with inductive and coinductive types which allows a more direct description of recursive definitions. The approach we follow is close to the one proposed for Martin-Löf's type theory in [5]. Recursive objects can be defined by fixed-point definitions as in functional programming languages, and a syntactical checking of these definitions avoids the introduction of non-normalizable terms. We show that the conditions for accepting a recursive definition proposed in [5] are not sufficient for the Calculus of Constructions, and we modify them. As a way of justifying our conditions, we develop a general method to codify a fix point definition satisfying them using well-known recursive schemes, like primitive recursion and co-recursion. We also propose different reduction rules from the ones used in [5] in order to obtain a decidable conversion relation for the system.

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 1.
    Peter Aczel. Non-Well-Founded Sets, volume 14 of CLSI Lecture Notes. 1988.Google Scholar
  2. 2.
    H. Barendregt. Lambda Calculi with types. Technical Report 91-19, Catholic University of Nijmegen, 1991.Google Scholar
  3. 3.
    T. Coquand. Metamathematical Investigations of a Calculus of Constructions. In P. Odifreddi, editor, Logic and Computer Science, volume 31 of The APIC series, pages 91–122. Academic Press, 1990.Google Scholar
  4. 4.
    Thierry Coquand. Pattern-Matching in type theory. In Bengt Nordström, Kent Petersson, Gordon Plotkin, editor, Informal Proceedings of the 1992 Workshop on Types for Proofs and Programs, pages 71–84, 1992.Google Scholar
  5. 5.
    Thierry Coquand. Infinite objects in Type Theory. In Henk Barendregt, Tobias Nipkow, editor, Types for Proofs and Programs, pages 62–78. LNCS 806, 1993.Google Scholar
  6. 6.
    G. Dowek et al. The Coq Proof assistant user's guide — Version 5.8. Technical Report 154, INRIA Roquencourt, 1993.Google Scholar
  7. 7.
    Herman Geuvers. Inductive and Coinductive types with iteration and recursion. In Bengt Nordström, Kent Petersson, Gordon Plotkin, editor, Informal Proceedings of the 1992 Workshop on Types for Proofs and Programs, pages 193–217, 1992.Google Scholar
  8. 8.
    E. Giménez. Codifying guarded definitions with recursive schemes. Technical report, Laboratoire de l'Informatique du Parallélisme, ENS-Lyon, 1994.Google Scholar
  9. 9.
    Francois Leclerc and Christine Paulin-Mohring. Programming with streams in Coq. A case study: the Sieve of Eratosthenes. In Henk Barendregt, Tobias Nipkow, editor, Types for Proofs and Programs, pages 191–212. LNCS 806, 1993.Google Scholar
  10. 10.
    F.P. Mendier. Inductive Definitions in Type Theory. PhD thesis, Cornell University, 1987.Google Scholar
  11. 11.
    Christine Paulin-Mohring. Extraction de programmes dans le Calcul des Constructions. PhD thesis, Université Paris VII, 1989.Google Scholar
  12. 12.
    Christine Paulin-Mohring. Inductive definitions in the system Coq: Rules and Properties. In M. Bezem, J.F. Groote, editor, Proceedings of the TLCA, 1993.Google Scholar
  13. 13.
    Lawrence Paulson. Co-induction and Co-recursion in Higher-order Logic. Technical report, Computer Laboratory, University of Cambridge, 1993.Google Scholar
  14. 14.
    Andrew M. Pitts. A co-induction principle for recursively defined domains. Technical Report 252, Computer Laboratory, University of Cambridge, April 1992.Google Scholar

Copyright information

© Springer-Verlag 1995

Authors and Affiliations

  • Eduarde Giménez
    • 1
  1. 1.LIP-IMAG URA CNRS 1398ENS LyonLyon Cedex 07France

Personalised recommendations