Wellfounded recursion with copatterns: a unified approach to termination and productivity
Paper in proceeding, 2013
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.