当前位置: X-MOL 学术ACM Trans. Program. Lang. Syst. › 论文详情
Our official English website, www.x-mol.net, welcomes your feedback! (Note: you will need to create a separate account there.)
Practical Subtyping for Curry-Style Languages
ACM Transactions on Programming Languages and Systems ( IF 1.5 ) Pub Date : 2019-02-28 , DOI: 10.1145/3285955
Rodolphe Lepigre 1 , Christophe Raffalli 2
Affiliation  

We present a new, syntax-directed framework for Curry-style type systems with subtyping. It supports a rich set of features, and allows for a reasonably simple theory and implementation. The system we consider has sum and product types, universal and existential quantifiers, and inductive and coinductive types. The latter two may carry size invariants that can be used to establish the termination of recursive programs. For example, the termination of quicksort can be derived by showing that partitioning a list does not increase its size. The system deals with complex programs involving mixed induction and coinduction, or even mixed polymorphism and (co-)induction. One of the key ideas is to separate the notion of size from recursion. We do not check the termination of programs directly, but rather show that their (circular) typing proofs are well-founded. Termination is then obtained using a standard (semantic) normalisation proof. To demonstrate the practicality of the system, we provide an implementation accepting all the examples discussed in the article.

中文翻译:

Curry 风格语言的实用子类型

我们为带有子类型的 Curry 风格类型系统提出了一个新的、语法指导的框架。它支持一组丰富的特性,并允许相当简单的理论和实现。我们考虑的系统有求和和乘积类型、全称和存在量词,以及归纳和共归纳类型。后两者可能带有大小不变量,可用于建立递归程序的终止。例如,可以通过显示对列表进行分区不会增加其大小来得出快速排序的终止。该系统处理涉及混合归纳和共归纳,甚至混合多态性和(共)归纳的复杂程序。关键思想之一是将大小的概念与递归分开。我们不直接检查程序的终止,而是表明他们的(循环)打字证明是有根据的。然后使用标准(语义)规范化证明获得终止。为了演示系统的实用性,我们提供了一个实现,该实现接受了本文中讨论的所有示例。
更新日期:2019-02-28
down
wechat
bug