Skip to main content
QUICK REVIEW

[论文解读] A Theory of Higher-Order Subtyping with Type Intervals (Extended Version)

Sandro Stucki, Paolo G. Giarrusso|arXiv (Cornell University)|Jul 5, 2021
Logic, programming, and type systems参考文献 43被引用 3
一句话总结

本文引入了 𝐹𝜔··,一种带有类型区间的高阶子类型形式理论,统一了 Scala 高阶类型中的边界多态性、类型算子和透明类型定义。通过将 𝐹𝜔<: 扩展为区间种类,该框架实现了对复杂类型级别抽象的统一、类型安全的处理,并通过 Agda 实现了类型安全、种类安全以及通过继承替换实现的弱归约性的机器可检查证明。

ABSTRACT

The calculus of Dependent Object Types (DOT) has enabled a more principled and robust implementation of Scala, but its support for type-level computation has proven insufficient. As a remedy, we propose $F^\omega_{..}$, a rigorous theoretical foundation for Scala's higher-kinded types. $F^\omega_{..}$ extends $F^\omega_{<:}$ with interval kinds, which afford a unified treatment of important type- and kind-level abstraction mechanisms found in Scala, such as bounded quantification, bounded operator abstractions, translucent type definitions and first-class subtyping constraints. The result is a flexible and general theory of higher-order subtyping. We prove type and kind safety of $F^\omega_{..}$, as well as weak normalization of types and undecidability of subtyping. All our proofs are mechanized in Agda using a fully syntactic approach based on hereditary substitution.

研究动机与目标

  • 为 Scala 高阶类型缺乏严谨的理论基础提供解决方案,这些类型在标准库中至关重要,但 DOT 计算演算无法支持。
  • 在单一形式系统中统一各种类型级别抽象——边界泛型、边界类型算子和透明类型定义。
  • 通过继承替换技术,为高阶类型系统中的子类型化提供机器可检查的语法基础。
  • 支持一等子类型约束,并通过区间种类实现依赖种类的支持。
  • 通过形式化带有类型区间的高阶类型语义,解决 Scala 3 中长期存在的实现挑战。

提出的方法

  • 将 𝐹𝜔<: 计算演算扩展为包含区间种类,其中类型变量受下界和上界约束,形成区间 𝐴..𝐵。
  • 通过绑定形式 𝑋: 𝐴..𝐵 引入一等类型不等式,直接在类型系统中反映子类型约束。
  • 采用完全语法化的方法,基于继承替换来形式化类型和种类的约化,确保对替换和类型安全的精确控制。
  • 使用 Agda 机械化所有证明,包括类型安全、种类安全、类型的弱归约性,以及子类型的不可判定性。
  • 通过基于区间的抽象,支持高级特性如边界多态性、一等子类型约束和递归类型定义。
  • 通过假设抽象类型算子及其子类型规则为区间约束,编码复杂类型系统(例如交集类型、递归类型)。

实验结果

研究问题

  • RQ1如何在一个单一的高阶子类型框架中统一形式化边界多态性、边界类型算子和透明类型定义?
  • RQ2区间种类能否为 DOT 计算演算无法支持的 Scala 高阶类型提供一个原则性基础?
  • RQ3如何在不牺牲类型安全的前提下,将一等子类型约束集成到高阶类型系统中?
  • RQ4区间种类对类型系统元理论的影响是什么,特别是关于归约性和可判定性方面?
  • RQ5该系统能否通过基于区间的编码支持高级类型级别抽象(如交集类型和递归类型)?

主要发现

  • 该演算 𝐹𝜔·· 为 Scala 的高阶类型提供了统一的、形式化的基础,通过区间种类涵盖了边界泛型、边界类型算子和透明类型定义。
  • 该系统的形式化证明表明其具备类型安全和种类安全,所有证明均使用继承替换在 Agda 中机械化。
  • 建立了类型的弱归约性,确保所有类型约化序列均会终止。
  • 𝐹𝜔·· 中的子类型关系是不可判定的,这是通过从相关系统中子类型不可判定性的归约证明的。
  • 该框架可通过假设抽象类型算子及其相关子类型规则为区间约束,实现对高级类型构造(如交集类型和递归类型)的编码。

更好的研究,从现在开始

从论文设计到论文写作,大幅缩短您的研究时间。

无需绑定信用卡

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