Proofs and types
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
Dependent Types for Program Termination Verification
Higher-Order and Symbolic Computation
Analysis of a Guard Condition in Type Theory (Extended Abstract)
FoSSaCS '98 Proceedings of the First International Conference on Foundations of Software Science and Computation Structure
Semantic types: a fresh look at the ideal model for types
Proceedings of the 31st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Type-based termination of recursive definitions
Mathematical Structures in Computer Science
Type-Based Termination with Sized Products
CSL '08 Proceedings of the 22nd international workshop on Computer Science Logic
On the structure of inductive reasoning: circular and tree-shaped proofs in the µ-calculus
FOSSACS'03/ETAPS'03 Proceedings of the 6th International conference on Foundations of Software Science and Computation Structures and joint European conference on Theory and practice of software
LPAR'06 Proceedings of the 13th international conference on Logic for Programming, Artificial Intelligence, and Reasoning
Semi-continuous sized types and termination
CSL'06 Proceedings of the 20th international conference on Computer Science Logic
Copatterns: programming infinite structures by observations
POPL '13 Proceedings of the 40th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
The recursive polarized dual calculus
Proceedings of the ACM SIGPLAN 2014 Workshop on Programming Languages meets Program Verification
Hi-index | 0.00 |
In this paper, we study strong normalization of a core language based on System F-omega which supports programming with finite and infinite structures. Building on our prior work, finite data such as finite lists and trees are defined via constructors and manipulated via pattern matching, while infinite data such as streams and infinite trees is defined by observations and synthesized via copattern matching. In this work, we take a type-based approach to strong normalization by tracking size information about finite and infinite data in the type. This guarantees compositionality. More importantly, the duality of pattern and copatterns provide a unifying semantic concept which allows us for the first time to elegantly and uniformly support both well-founded induction and coinduction by mere rewriting. The strong normalization proof is structured around Girard's reducibility candidates. As such our system allows for non-determinism and does not rely on coverage. Since System F-omega is general enough that it can be the target of compilation for the Calculus of Constructions, this work is a significant step towards representing observation-centric infinite data in proof assistants such as Coq and Agda.