Infinite objects in type theory
TYPES '93 Proceedings of the international workshop on Types for proofs and programs
Proving the correctness of reactive systems using sized types
POPL '96 Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Communication and Concurrency
Codifying Guarded Definitions with Recursive Schemes
TYPES '94 Selected papers from the International Workshop on Types for Proofs and Programs
Circular Coinductive Rewriting
ASE '00 Proceedings of the 15th IEEE international conference on Automated software engineering
Automatic Sequences: Theory, Applications, Generalizations
Automatic Sequences: Theory, Applications, Generalizations
Data-Oblivious Stream Productivity
LPAR '08 Proceedings of the 15th International Conference on Logic for Programming, Artificial Intelligence, and Reasoning
Productivity of stream definitions
Theoretical Computer Science
Circular Coinduction with Special Contexts
ICFEM '09 Proceedings of the 11th International Conference on Formal Engineering Methods: Formal Methods and Software Engineering
Termination and productivity checking with continuous types
TLCA'03 Proceedings of the 6th international conference on Typed lambda calculi and applications
Circular coinduction: a proof theoretical foundation
CALCO'09 Proceedings of the 3rd international conference on Algebra and coalgebra in computer science
Pure type systems with corecursion on streams: from finite to infinitary normalisation
Proceedings of the 17th ACM SIGPLAN international conference on Functional programming
The power of parameterization in coinductive proof
POPL '13 Proceedings of the 40th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Hi-index | 0.00 |
We investigate methods for proving equality of infinite objects using circular coinduction, a combination of coinduction with term rewriting, in the Coq proof assistant. In order to ensure productivity, Coq requires the corecursive construction of infinite objects to be guarded. However, guardedness forms a severe confinement for defining infinite objects, and this includes coinductive proof terms. In particular, circular coinduction is troublesome in Coq, since rewriting usually obstructs guardedness. Typically, applications of transitivity are in between the guard and the coinduction hypothesis. Other problems concern the use of lemmas, and rewriting under causal contexts. We show that the method of bisimulation-up-to allows for an elegant rendering of circular coinduction, and we use this to overcome the troubles with guardedness.