Affiliation:
1. Contemplate Ltd., Edinburgh, United Kingdom
2. University of Strathclyde, Glasgow, United Kingdom
Abstract
Total functional programming offers the beguiling vision that, just by virtue of the compiler accepting a program, we are guaranteed that it will always terminate. In the case of programs that are not intended to terminate, e.g., servers, we are guaranteed that programs will always be
productive
. Productivity means that, even if a program generates an infinite amount of data, each piece will be generated in finite time. The theoretical underpinning for productive programming with infinite output is provided by the category theoretic notion of final coalgebras. Hence, we speak of
co
programming with non-well-founded
co
data, as a dual to programming with well-founded data like finite lists and trees.
Systems that offer facilities for productive coprogramming, such as the proof assistants Coq and Agda, currently do so through syntactic guardedness checkers. Syntactic guardedness checkers ensure that all self-recursive calls are guarded by a use of a constructor. Such a check ensures productivity. Unfortunately, these syntactic checks are not compositional, and severely complicate coprogramming.
Guarded recursion, originally due to Nakano, is tantalising as a basis for a flexible and compositional type-based approach to coprogramming. However, as we show, by itself, guarded recursion is not suitable for coprogramming due to the fact that there is no way to make finite observations on pieces of infinite data. In this paper, we introduce the concept of
clock variables
that index Nakano's guarded recursion. Clock variables allow us to "close over" the generation of infinite data, and to make finite observations, something that is not possible with guarded recursion alone.
Publisher
Association for Computing Machinery (ACM)
Subject
Computer Graphics and Computer-Aided Design,Software
Cited by
10 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. Greatest HITs: Higher inductive types in coinductive definitions via induction under clocks;Proceedings of the 37th Annual ACM/IEEE Symposium on Logic in Computer Science;2022-08-02
2. Two Guarded Recursive Powerdomains for Applicative Simulation;Electronic Proceedings in Theoretical Computer Science;2021-12-29
3. Polymorphic Iterable Sequential Effect Systems;ACM Transactions on Programming Languages and Systems;2021-03-31
4. Guarded Cubical Type Theory;Journal of Automated Reasoning;2018-06-26
5. Lewis meets Brouwer: Constructive strict implication;Indagationes Mathematicae;2018-02