Skip to search boxSkip to navigationSkip to main content

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-review

Open access

Publication Information

Output type

Research Output:
Journal Article or Conference Article in Journal
Conference article
Peer-review

Original language

English

Article number

32

Pages from-to (Number of pages)

Pages 32:1–32:19

Journal (Volume, Issue Number)

Leibniz International Proceedings in Informatics (LIPIcs) (Volume 131)

Publication milestones

  • Published - 2019

Publication status

Published - 2019

ISSN

1868-8969

Publication 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