Skip to main content
QUICK REVIEW

[论文解读] Subtyping on Nested Polymorphic Session Types

Ankush Das, Henry DeYoung|arXiv (Cornell University)|Mar 28, 2021
Logic, programming, and type systems参考文献 37被引用 5
一句话总结

本文研究了一类嵌套、递归且具有共归纳类型解释的泛型会话类型系统中的子类型关系,证明即使在仅包含内部选择和一元递归类型构造器的最小片段中,子类型关系仍是不可判定的。尽管存在不可判定性,作者仍提出了一种 sound 但不完备的子类型算法,支持程序员提供的子类型声明以增强完备性,并在 Rast 语言中实现,展现出强劲的实证性能。

ABSTRACT

The importance of subtyping to enable a wider range of well-typed programs is undeniable. However, the interaction between subtyping, recursion, and polymorphism is not completely understood yet. In this work, we explore subtyping in a system of nested, recursive, and polymorphic types with a coinductive interpretation, and we prove that this problem is undecidable. Our results will be broadly applicable, but to keep our study grounded in a concrete setting, we work with an extension of session types with explicit polymorphism, parametric type constructors, and nested types. We prove that subtyping is undecidable even for the fragment with only internal choices and nested unary recursive type constructors. Despite this negative result, we present a subtyping algorithm for our system and prove its soundness. We minimize the impact of the inescapable incompleteness by enabling the programmer to seed the algorithm with subtyping declarations (that are validated by the algorithm). We have implemented the proposed algorithm in Rast and it showed to be efficient in various example programs.

研究动机与目标

  • 研究在共归纳解释的类型系统中,子类型、递归与泛型之间的相互作用,该系统支持嵌套类型。
  • 确定在存在嵌套递归类型构造器和显式泛型的情况下,子类型关系是否仍保持可判定性。
  • 尽管存在一般情况下的不可判定性,仍设计一种实用、sound 且可扩展的子类型算法。
  • 通过子类型关系,实现对并发、线性、会话类型语言(如 Rast)中高效且正确的类型检查。
  • 探索通过集成程序员提供的子类型声明以提升算法完备性的可行性。

提出的方法

  • 作者形式化定义了一类类型系统,包含等递归、结构化且共归纳解释的嵌套递归类型、显式泛型以及参数化类型构造器。
  • 通过从 BPA 自动机的语言包含问题归约,证明了子类型的不可判定性,即使在仅含内部选择和一元递归的最小片段中亦成立。
  • 所提出的子类型算法基于 Gay 和 Hole 的会话类型模拟技术,扩展了构造器协变性分析与循环证明构造。
  • 该算法支持通过程序员提供的子类型声明(由算法验证)实现增量式扩展,这些声明作为子类型模拟的种子,提升完备性。
  • 该算法在 Rast 中实现,Rast 是一种支持双向类型检查和显式泛型的语言,使得类型检查可直接归约为子类型判断。
  • 系统使用共归纳假设,并基于可观测的通信行为等价类型,与会话类型语义保持一致。

实验结果

研究问题

  • RQ1在结合嵌套递归类型、显式泛型和共归纳类型解释的系统中,子类型关系是否可判定?
  • RQ2在存在泛型的情况下,嵌套与一元递归对子类型可判定性有何影响?
  • RQ3尽管在一般情况下不可判定,是否仍可设计出 sound 且实用的子类型算法?
  • RQ4如何有效集成程序员提供的声明以提升算法的完备性?
  • RQ5该算法在多大程度上可适应混合归纳/共归纳子类型或隐式泛型?

主要发现

  • 在仅含内部选择和嵌套一元递归类型构造器的片段中,子类型关系是不可判定的,即使没有函数类型或乘积类型。
  • 该不可判定性结果在共归纳解释下依然成立,其证明依赖于从 BPA 自动机的语言包含问题的归约。
  • 所提出的子类型算法是 sound 的,并能高效处理 Rast 语言中广泛的一系列示例程序。
  • 通过程序员提供的声明可逐步提升算法的完备性,这些声明经验证后被整合进子类型模拟过程。
  • 即使在归纳解释类型的情况下,该算法仍保持 sound,尽管可能遗漏部分空类型识别。
  • 该系统表明,子类型关系可在会话类型并发程序中实际应用,Rast 实现中展现出强劲的实证性能。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。