In this paper, we study strong normalization of a core language based on System F-omega which supports programming with finite and infinite structures. Finite data such as finite lists and trees is 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. Taking a type-based approach to strong normalization, we track size information about finite and infinite data in the type. We exploit the duality of pattern and copatterns to give a unifying semantic framework which allows us to elegantly and uniformly support both well-founded induction and coinduction by 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-based infinite data in proof assistants such as Coq and Agda.
本文研究了一种基于系统F-omega的核心语言的强规格化,该语言支持有限和无限结构的编程。有限数据(如有限列表和有限树)通过构造函数定义,并通过模式匹配进行操作,而无限数据(如流和无限树)通过观察定义,并通过模式匹配进行合成。采用基于类型的强规范化方法,我们跟踪类型中有限和无限数据的大小信息。我们利用模式和合作模式的二元性来提供一个统一的语义框架,使我们能够通过重写优雅而统一地支持基础良好的归纳和协同归纳。强归一化证明是围绕吉拉德的可约候选者构建的。因此,我们的系统允许非确定性,并且不依赖于覆盖率。由于系统F-omega足够通用,它可以成为构造演算的编译目标,因此这项工作是在Coq和Agda等证明助手中表示基于观察的无限数据的重要一步。