On the productivity of recursive list definitions
ACM Transactions on Programming Languages and Systems (TOPLAS)
Proving the correctness of reactive systems using sized types
POPL '96 Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Algebra of programming
Codifying Guarded Definitions with Recursive Schemes
TYPES '94 Selected papers from the International Workshop on Types for Proofs and Programs
Towards a Mathematical Operational Semantics
LICS '97 Proceedings of the 12th Annual IEEE Symposium on Logic in Computer Science
Behavioural differential equations: a coinductive calculus of streams, automata, and power series
Theoretical Computer Science
Mathematical Structures in Computer Science
A predicative analysis of structural recursion
Journal of Functional Programming
Applicative programming with effects
Journal of Functional Programming
Journal of Functional Programming
Data-Oblivious Stream Productivity
LPAR '08 Proceedings of the 15th International Conference on Logic for Programming, Artificial Intelligence, and Reasoning
Journal of Functional Programming
A coinductive calculus of binary trees
Information and Computation
Sampling, splitting and merging in coinductive stream calculus
MPC'10 Proceedings of the 10th international conference on Mathematics of program construction
Concrete stream calculus: An extended study
Journal of Functional Programming
Sorting with bialgebras and distributive laws
Proceedings of the 8th ACM SIGPLAN workshop on Generic programming
Unifying structured recursion schemes
Proceedings of the 18th ACM SIGPLAN international conference on Functional programming
Synchronous digital circuits as functional programs
ACM Computing Surveys (CSUR)
Hi-index | 0.00 |
Say you want to prove something about an infinite data-structure, such as a stream or an infinite tree, but you would rather not subject yourself to coinduction. The unique fixed-point principle is an easy-to-use, calculational alternative. The proof technique rests on the fact that certain recursion equations have unique solutions; if two elements of a coinductive type satisfy the same equation of this kind, then they are equal. In this paper we precisely characterize the conditions that guarantee a unique solution. Significantly, we do so not with a syntactic criterion, but with a semantic one that stems from the categorical notion of naturality. Our development is based on distributive laws and bialgebras, and draws heavily on Turi and Plotkin's pioneering work on mathematical operational semantics. Along the way, we break down the design space in two dimensions, leading to a total of nine points. Each gives rise to varying degrees of expressiveness, and we will discuss three in depth. Furthermore, our development is generic in the syntax of equations and in the behaviour they encode - we are not caged in the world of streams.