Inductive and Coinductive Components of Corecursive Functions in Coq

In Constructive Type Theory, recursive and corecursive definitions are subject to syntactic restrictions which guarantee termination for recursive functions and productivity for corecursive functions. However, many terminating and productive functions do not pass the syntactic tests. Bove proposed in her thesis an elegant reformulation of the method of accessibility predicates that widens the range of terminative recursive functions formalisable in Constructive Type Theory. In this paper, we pursue the same goal for productive corecursive functions. Notably, our method of formalisation of coinductive definitions of productive functions in Coq requires not only the use of ad-hoc predicates, but also a systematic algorithm that separates the inductive and coinductive parts of functions.

[1]  Venanzio Capretta,et al.  Modelling general recursion in type theory , 2005, Mathematical Structures in Computer Science.

[2]  Eduardo Giménez,et al.  Un calcul de constructions infinies et son application a la verification de systemes communicants , 1996 .

[3]  A. Pnueli The Temporal Semantics of Concurrent Programs , 1979, Theor. Comput. Sci..

[4]  Ana Bove,et al.  General Recursion in Type Theory , 2002, TYPES.

[5]  Andrei Voronkov,et al.  Handbook of Automated Reasoning: Volume 1 , 2001 .

[6]  Venanzio Capretta,et al.  General recursion via coinductive types , 2005, Log. Methods Comput. Sci..

[7]  Pietro Di Gianantonio A Functional Approach to Computability on Real Numbers , 2005 .

[8]  William A. Howard,et al.  The formulae-as-types notion of construction , 1969 .

[9]  Marino Miculan,et al.  A Unifying Approach to Recursive and Co-recursive Definitions , 2002, TYPES.

[10]  Christine Paulin-Mohring,et al.  The coq proof assistant reference manual , 2000 .

[11]  Yves Bertot,et al.  Affine functions and series with co-inductive real numbers , 2006, Mathematical Structures in Computer Science.

[12]  M. Niqui,et al.  Formalising Exact Arithmetic. Representations, Algorithms and Proofs , 2004 .

[13]  Ana Bove,et al.  Simple General Recursion in Type Theory , 2001, Nord. J. Comput..

[14]  J. Roger Hindley,et al.  To H.B. Curry: Essays on Combinatory Logic, Lambda Calculus, and Formalism , 1980 .

[15]  B. Jacobs,et al.  A tutorial on (co)algebras and (co)induction , 1997 .

[16]  Christine Paulin-Mohring,et al.  Inductive Definitions in the system Coq - Rules and Properties , 1993, TLCA.

[17]  Peter Aczel,et al.  An Introduction to Inductive Definitions , 1977 .

[18]  Yves Bertot,et al.  Interactive Theorem Proving and Program Development: Coq'Art The Calculus of Inductive Constructions , 2010 .

[19]  Gilles Barthe,et al.  The Relevance of Proof-Irrelevance , 1998, ICALP.

[20]  Wilfried Buchholz A term calculus for (co-)recursive definitions on streamlike data structures , 2005, Ann. Pure Appl. Log..

[21]  Pierre Castéran,et al.  Interactive Theorem Proving and Program Development , 2004, Texts in Theoretical Computer Science An EATCS Series.

[22]  J. H. Geuvers Logics and type systems , 1993 .

[23]  Robert L. Constable,et al.  Infinite Objects in Type Theory , 1986, LICS.

[24]  Venanzio Capretta,et al.  Nested General Recursion and Partiality in Type Theory , 2001, TPHOLs.

[25]  Marino Miculan,et al.  Unifying Recursive and Co-recursive Definitions in Sheaf Categories , 2004, FoSSaCS.

[26]  Thierry Coquand,et al.  The Calculus of Constructions , 1988, Inf. Comput..

[27]  Yves Bertot,et al.  Filters on CoInductive Streams, an Application to Eratosthenes' Sieve , 2005, TLCA.

[28]  Peter Aczel,et al.  Algebras and Coalgebras , 2000, Algebraic and Coalgebraic Methods in the Mathematics of Program Construction.

[29]  Andreas Abel,et al.  Type-based termination: a polymorphic lambda-calculus with sized higher-order types , 2006 .

[30]  Yves Bertot,et al.  Fix-Point Equations for Well-Founded Recursion in Type Theory , 2000, TPHOLs.

[31]  Ben A. Sijtsma,et al.  On the productivity of recursive list definitions , 1989, ACM Trans. Program. Lang. Syst..

[32]  Bengt Nordström Terminating general recursion , 1988, BIT Comput. Sci. Sect..

[33]  Hugo Herbelin,et al.  The Coq proof assistant : reference manual, version 6.1 , 1997 .

[34]  Bart Jacobs,et al.  Exercises in Coalgebraic Specification , 2000, Algebraic and Coalgebraic Methods in the Mathematics of Program Construction.

[35]  Abbas Edalat,et al.  A new representation for exact real numbers , 1997, MFPS.

[36]  Luís Pinto,et al.  Type-based termination of recursive definitions , 2004, Mathematical Structures in Computer Science.

[37]  John Matthews Recursive Function Definition over Coinductive Types , 1999, TPHOLs.

[38]  Milad Niqui Coinductive Field of Exact Real Numbers and General Corecursion , 2006, CMCS.

[39]  Lawrence C. Paulson Mechanizing Coinduction and Corecursion in Higher-Order Logic , 1997, J. Log. Comput..

[40]  H. Geuvers,et al.  Proof-checking using Dependent Type Systems , 2002 .

[41]  H. Keisler,et al.  Handbook of mathematical logic , 1977 .

[42]  Roland Carl Backhouse,et al.  Algebraic and Coalgebraic Methods in the Mathematics of Program Construction , 2000, Lecture Notes in Computer Science.

[43]  Jan Willem Klop,et al.  Productivity of stream definitions , 2007, Theor. Comput. Sci..