Proving and Computing: The Infinite Pigeonhole Principle and Countable Choice
Zena M. Ariola (University of Oregon), Paul Downen (University of Massachusetts, Lowell), Hugo Herbelin (Universit\'e Paris Cit\'e, Inria, CNRS, IRIF)

TL;DR
This paper explores the expressive power of structural corecursion combined with classical reasoning, demonstrating its applications in stream algorithms, the Infinite Pigeonhole Principle, and the Axiom of Countable Choice within proof assistants.
Contribution
It introduces a novel approach to combining corecursion with classical reasoning, providing new proofs and implementations for foundational principles in logic and computer science.
Findings
A corecursive proof of the Infinite Pigeonhole Principle
An implementation of the Axiom of Countable Choice using coiteration
Comparison with continuation-passing style proofs
Abstract
Structural recursion is a common technique used by programmers in modern languages and is taught to introductory computer science students. But what about its dual, structural corecursion? Structural corecursion is an elegant technique, supported in languages like Haskell and proof assistants such as Rocq or Agda. It enables the design of compositional algorithms by decoupling the generation and consumption of potentially infinite or large data collections. Despite these strengths, structural corecursion is generally considered more advanced than structural recursion and is primarily studied in the context of pure functional programming. Our aim is to illustrate the expressive power of different notions of structural corecursion in the presence of classical reasoning. More specifically, we study coiteration and corecursion combined with the classical callcc operator, which provides a…
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 · Formal Methods in Verification · Logic, Reasoning, and Knowledge
