The Optimal Fixed Point Combinator

In this paper, we develop a general theory of fixed point combinators, in higher-order logic equipped with Hilbert's epsilon operator. This combinator allows for a direct and effective formalization of corecursive values, recursive and corecursive functions, as well as functions mixing recursion and corecursion. It supports higher-order recursion, nested recursion, and offers a proper treatment of partial functions in the sense that domains need not be hardwired in the definition of functionals. Our work, which has been entirely implemented in Coq, unifies and generalizes existing results on contraction conditions and complete ordered families of equivalences, and relies on the theory of optimal fixed points for the treatment of partial functions. It provides a practical way to formalize circular definitions in higher-order logic.

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

[2]  Matthieu Sozeau,et al.  Subset Coercions in Coq , 2006, TYPES.

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

[4]  Ekaterina Komendantskaya,et al.  Inductive and Coinductive Components of Corecursive Functions in Coq , 2008, CMCS.

[5]  Maribel Fernández,et al.  Curry-Style Types for Nominal Terms , 2006, TYPES.

[6]  Yves Bertot,et al.  Fixed point semantics and partial recursion in Coq , 2008, PPDP.

[7]  David Aspinall,et al.  Formalising Java's Data Race Free Guarantee , 2007, TPHOLs.

[8]  Pierre Letouzey,et al.  Programmation fonctionnelle certifiée : L'extraction de programmes dans l'assistant Coq. (Certified functional programming : Program extraction within Coq proof assistant) , 2004 .

[9]  Robin Milner,et al.  Theories for the Global Ubiquitous Computer , 2004, FoSSaCS.

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

[11]  Alexander Krauss,et al.  Partial and Nested Recursive Function Definitions in Higher-order Logic , 2010, Journal of Automated Reasoning.

[12]  John Harrison,et al.  Inductive Definitions: Automation and Application , 1995, TPHOLs.

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

[14]  Konrad Slind Reasoning about terminating functional programs , 1999 .

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

[16]  Julio Herrera,et al.  Type-based termination of recursive denitions , 2004 .

[17]  Gilles Barthe,et al.  Defining and Reasoning About Recursive Functions: A Practical Tool for the Coq Proof Assistant , 2006, FLOPS.

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

[19]  Zohar Manna,et al.  The Theoretical Aspects of the Optimal Fixed Point , 1976, SIAM J. Comput..

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

[21]  John Matthews,et al.  Inductive Invariants for Nested Recursion , 2003, TPHOLs.

[22]  Sava Krstić,et al.  Inductive Fixpoints in Higher Order Logic , 2004 .

[23]  Sam Lindley,et al.  Extensional Rewriting with Sums , 2007, TLCA.

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