Science of Computer Programming ( IF 1.5 ) Pub Date : 2021-04-15 , DOI: 10.1016/j.scico.2021.102655 Mingqi Xue , Bruno C.d.S. Oliveira
A polymorphic subtyping relation, which relates more general types to more specific ones, is at the core of many modern functional languages. As those languages start moving towards dependently typed programming a natural question is how can polymorphic subtyping be adapted to such settings.
This paper presents the dependent implicitly polymorphic calculus (): a simple dependently typed calculus with polymorphic subtyping. The subtyping relation in generalizes the well-known polymorphic subtyping relation by Odersky and Läufer (1996). Because is dependently typed, integrating subtyping in the calculus is non-trivial. To overcome many of the issues arising from integrating subtyping with dependent types, the calculus employs unified subtyping, which is a technique that unifies typing and subtyping into a single relation. Moreover, employs explicit casts instead of a conversion rule, allowing unrestricted recursion to be naturally supported. We prove various non-trivial results, including type soundness and transitivity of unified subtyping. and all corresponding proofs are mechanized in the Coq theorem prover.
中文翻译:
具有多态子类型的依存类型演算
一个多态性分型关系,这涉及更普遍的类型,以更具体的,是在许多现代函数式编程语言的核心。随着这些语言开始走向依赖类型的编程,一个自然的问题是如何将多态子类型应用于此类设置。
本文介绍了相关的隐式多态演算():具有多态子类型的简单依存类型演算。中的子类型关系归纳了Odersky和Läufer(1996)众所周知的多态子类型关系。因为如果是依存类型的,则将微分中的子类型集成起来并非易事。为了克服因将子类型与依赖类型集成而产生的许多问题,演算采用统一子类型,这是一种将类型和子类型统一为单个关系的技术。而且,使用显式强制转换而不是转换规则,从而自然支持不受限制的递归。我们证明了各种非平凡的结果,包括类型健全性和统一子类型的可传递性。 并在Coq定理证明者中机械化了所有相应的证明。