Skip to main content
QUICK REVIEW

[论文解读] Dependency Pairs Termination in Dependent Type Theory Modulo Rewriting

Lepigre, Rodolphe, Raffalli, Christophe|arXiv (Cornell University)|Apr 7, 2016
Logic, programming, and type systems参考文献 28被引用 1
一句话总结

本文提出了一种针对扩展的 System F 的实用、语法导向的类型系统,该系统支持子类型、归纳和共归纳类型,以及大小注解,以确保递归程序的终止性。通过使用局部子类型和选择算子(受希尔伯特ε演算启发),该系统将大小推理与递归解耦,从而实现良基的循环类型推导证明,通过语义方法保证归约性和终止性。

ABSTRACT

Dependency pairs are a key concept at the core of modern automated termination provers for first-order term rewriting systems. In this paper, we introduce an extension of this technique for a large class of dependently-typed higher-order rewriting systems. This extends previous results by Wahlstedt on the one hand and the first author on the other hand to strong normalization and non-orthogonal rewriting systems. This new criterion is implemented in the type-checker Dedukti.

研究动机与目标

  • 设计一种实用的子类型类型系统,整合多态性、归纳和共归纳类型,以及用于保证终止性的大小不变量。
  • 通过支持复杂类型构造器的完整子类型,克服 Haskell 或 OCaml 等表达性类型系统中现有子类型系统的局限性。
  • 不通过直接检查来确保递归程序的终止性,而是通过证明其类型推导是良基且循环的,从而保证归约性和终止性。
  • 在一个统一且可实现的框架中支持混合多态性、(共)归纳和 Scott 编码数据类型。

提出的方法

  • 引入局部子类型判断 t ∈ A ⊂ B,将其解释为‘若 t 具有类型 A,则它也具有类型 B’。
  • 使用选择算子 εx∈A(t /∈B) 表示反例,消除对类型上下文的依赖,从而支持闭项的类型推导。
  • 制定语法导向的类型规则,仅按项或类型构造器应用,简化类型推断和合一过程。
  • 通过序数注解在归纳和共归纳类型中编码大小不变量,以追踪结构递减并确保终止性。
  • 构建良基的循环类型推导证明,依赖可归约性候选和语义归约性证明。
  • 使用标准合一技术实现该系统,支持存在类型、类似记录的类型,以及可扩展的和与积类型。

实验结果

研究问题

  • RQ1能否为具有(共)归纳类型和大小注解的表达性类型系统设计一种实用且语法导向的子类型系统?
  • RQ2如何在不破坏类型安全或可判定性的前提下,将子类型与多态性、归纳和共归纳类型以及大小不变量集成?
  • RQ3能否使用循环类型推导证明来保证归约性和终止性,而无需直接检查递归?
  • RQ4选择算子和局部子类型在多大程度上可以替代传统类型上下文,并处理复杂类型构造?
  • RQ5是否可以使用标准合一技术高效实现此类系统,避免复杂的协变性分析?

主要发现

  • 该系统成功支持了涉及混合归纳、共归纳和多态性的复杂程序的终止性证明,例如快速排序和 Scott 编码数据类型。
  • 选择算子和局部子类型的使用使得语法导向的类型系统成为可能,避免了对类型上下文的依赖,并支持闭项的类型推导。
  • 该系统的类型规则设计为可使用标准合一技术实现,作者提供了可工作的实现,能够处理论文中所有示例程序。
  • 该方法将大小推理与递归解耦,使得终止性可从循环类型推导的良基性中推导,而非依赖语法检查。
  • 该系统能够表达并验证大小保持变换,例如列表上的 map 函数,通过在类型系统中编码大小不变量。
  • 该框架支持高级特性,如存在类型的点记法和可扩展记录,具有清晰的实现策略,避免了变量重命名。

更好的研究,从现在开始

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

无需绑定信用卡

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