Paul-AndréMelliès和Noam Zeilberger最近的工作对此进行了探索。特别是,论文的函子是类型细化系统和类型细化系统的Isbell对偶定理。还有关于第一个演讲的视频。
我认为,由于人们认为特定系统具有代表性,因此细化类型存在很多混淆,这导致这些特定系统的目标和细节归因于总体思想。简称为类型细化系统对独立存在的术语进行分类,而(非细化的)依赖或其他类型则是术语的一部分。这听起来很熟悉,甚至可能有点矛盾。
如果您查看“咖喱”类型(外部)与“教堂”类型(内部),则可能会出现潜在的熟悉且可能矛盾的部分。当我们想到“咖喱”类型时,我们认为类型是对已经具有含义的未类型术语进行分类。在“教堂”类型中,唯一存在的术语是类型良好的术语,即类型约束是我们语法的一部分。因此,我要说的是,Curry样式类型系统实际上是对未类型化术语进行细化的类型细化系统,而Church-style样式系统不是类型细化系统。这意味着,例如,我们可以将简单类型的lambda演算视为类型优化系统或非优化类型系统。
当然,没有人说我们的术语必须是无类型的术语。我们也可以将类型细化系统应用于类型化的术语,并且从历史上看,这是产生细化类型(通过该名称)的上下文。但是,软打字的应用说明了与上述情况更接近的情况。
到目前为止,我还没有对依赖类型进行任何说明。原因是这是一个完全正交的问题。我会说原型依赖型系统通常以教堂风格呈现,因此不是类型优化系统,而是NuPRL(基于计算型理论,是最原型依赖型理论的变体,Martin-Löf类型理论)就像我已经描述的那样,它是一个公然的类型优化系统。在条款可能NuPRL甚至有类型!诚然,“ PRL”代表“程序优化逻辑”的事实也可能是小费。另一方面,ML的细化类型描述了细化类型系统,可能是术语的起源,无论如何都不是从属类型系统。
至于Hoare三元组,它们是类型优化系统。在第一篇论文中,它们实际上用作类型优化系统的示例。但是,Hoare类型理论给出了可以被视为具有Hoare三元组的语言的非提炼型系统。
要获得有关不同系统的“功能”的答案,您需要指定特定的(家族)从属类型系统和特定的(家族)精炼类型系统。术语“从属类型系统”涵盖了非常广泛的类型系统,而“类型优化系统”则更为广泛。即使那样,这些术语也不是互斥的,因此它也不是“依赖类型系统”和“优化类型系统”之间的比较。但是,如果使用“依赖类型系统”,则考虑的是Coq之类的东西,而考虑“精炼类型系统”,则是“ 液体类型 ”之类的东西那就好一面了。一般认为,Coq足够强大,可以处理实际上的所有数学。您可以从字面上实现并证明Coq中的SMT求解器是正确的,然后再使用它;可以制定与子集类型非常相似的模拟。(NuPRL实际上具有子集类型。)另一方面,SMT求解器通常限于可确定的理论,而Coq没有这样的限制。许多系统(例如“液体类型”)都具有用于限定谓词的有限且不可扩展的语言。(当然,用“依赖类型系统”可以指Dependent ML,用“类型细化系统” NuPRL [也可以是依赖类型系统]来表示是另一种方式。)