English

Programming and Reasoning with Guarded Recursion for Coinductive Types

Programming Languages 2015-01-16 v2 Logic in Computer Science

Abstract

We present the guarded lambda-calculus, an extension of the simply typed lambda-calculus with guarded recursive and coinductive types. The use of guarded recursive types ensures the productivity of well-typed programs. Guarded recursive types may be transformed into coinductive types by a type-former inspired by modal logic and Atkey-McBride clock quantification, allowing the typing of acausal functions. We give a call-by-name operational semantics for the calculus, and define adequate denotational semantics in the topos of trees. The adequacy proof entails that the evaluation of a program always terminates. We demonstrate the expressiveness of the calculus by showing the definability of solutions to Rutten's behavioural differential equations. We introduce a program logic with L\"{o}b induction for reasoning about the contextual equivalence of programs.

Keywords

Cite

@article{arxiv.1501.02925,
  title  = {Programming and Reasoning with Guarded Recursion for Coinductive Types},
  author = {Ranald Clouston and Aleš Bizjak and Hans Bugge Grathwohl and Lars Birkedal},
  journal= {arXiv preprint arXiv:1501.02925},
  year   = {2015}
}

Comments

Version of FoSSaCS 2015 paper with appendices

R2 v1 2026-06-22T07:59:26.192Z