Guarded recursion in Agda via sized types
- Niccolò Veltri,
- Niels van der Weide
- Radboud University Nijmegen
Research Output:
Journal Article or Conference Article in Journal
Conference article
Peer-reviewOpen access
Publication Information
Output type
Research Output:
Journal Article or Conference Article in Journal
Conference article
Peer-reviewOriginal language
EnglishArticle number
32Pages from-to (Number of pages)
Pages 32:1–32:19Journal (Volume, Issue Number)
Leibniz International Proceedings in Informatics (LIPIcs) (Volume 131)Publication milestones
- Published - 2019
Publication status
Published - 2019
ISSN
1868-8969Publication IDs
- Scopus: 85068029461
Abstract
In type theory, programming and reasoning with possibly non-terminating programs and potentially infinite objects is achieved using coinductive types. Recursively defined programs of these types need to be productive to guarantee the consistency of the type system. Proof assistants such as Agda and Coq traditionally employ strict syntactic productivity checks, which often make programming with coinductive types convoluted. One way to overcome this issue is by encoding productivity at the level of types so that the type system forbids the implementation of non-productive corecursive programs. In this paper we compare two different approaches to type-based productivity: guarded recursion and sized types. More specifically, we show how to simulate guarded recursion in Agda using sized types. We formalize the syntax of a simple type theory for guarded recursion, which is a variant of Atkey and McBride’s calculus for productive coprogramming. Then we give a denotational semantics using presheaves over the preorder of sizes. Sized types are fundamentally used to interpret the characteristic features of guarded recursion, notably the fixpoint combinator.
Publication metrics
PlumX, opens in new tab
Citations
9
Captures
5
Access to documents
Final published version, 519.01 KB
License:CC BY, opens in new tab
