Inductive and Coinductive Components of Corecursive Functions in Coq
Yves Bertot (INRIA Sophia Antipolis), Ekaterina Komendantskaya (INRIA, Sophia Antipolis)

TL;DR
This paper extends the formalization of corecursive functions in Coq, providing a systematic method to handle productive functions that do not meet traditional syntactic restrictions, thereby broadening the class of definable functions.
Contribution
It introduces a systematic algorithm to separate inductive and coinductive components, enabling formalization of a wider range of productive corecursive functions in Coq.
Findings
Developed a formalization method for coinductive definitions in Coq.
Provided an algorithm to distinguish inductive and coinductive parts of functions.
Expanded the class of corecursive functions that can be formalized in Constructive Type Theory.
Abstract
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.
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsLogic, programming, and type systems · Logic, Reasoning, and Knowledge · Formal Methods in Verification
