博士论文摘要

类型论中的一般递归

本论文讨论了建构主义类型理论作为一种编程语言。特别是,它提供了一种翻译方法通用递归函数程序的类型理论等价物。

函数编程中的一个关键概念是递归,它允许正在定义的对象引用自身。与递归关联是终止的问题,因为一般来说,没有任何保证递归函数将始终终止。因此,它非常重要的是要有机制来证明某种功能终止,甚至确保函数由其定义的形式。后者的示例在结构上递归定义,其中每个递归调用都在结构上较小的论点。

标准函数式编程语言对递归程序,因此,它们允许定义任何通用递归函数。不过,也存在一些不太传统的功能仅终止递归定义的编程语言允许。建构主义理论就是其中之一。此外,逻辑也可以在构造型理论中表示为用类型识别命题,用程序证明相应类型。因此,类型可以对完整的规范,还需要算法的逻辑属性。因此,算法通过构造是正确的,或者可以通过使用结构型的表达能力证明是正确的理论。这显然是构造型理论相对于标准编程语言。类型的计算限制理论上,为了保持逻辑一致性和类型选择可判定的,只允许结构上的递归定义。

许多重要算法都是通用递归算法。尽管许多这样的算法可以被证明是终止的,不存在句法条件这保证了它们的终止,因此,一般递归算法无法直接转换为类型理论。

在本文中,一种将一般递归算法形式化的方法分离计算和逻辑部分的类型理论给出了定义。因此类型理论算法清晰、紧凑且易于理解。给定一个通用递归算法,该方法包括定义归纳特殊目的可及性谓词描述算法终止的输入。这个然后,算法的类型理论版本可以定义为关于输入值满足此条件的证明的结构递归谓语。在形式化嵌套算法时可访问性谓词和的类型理论版本算法必须同时定义,因为它们依赖于每个其他。由于该方法将计算部分与定义的逻辑部分,将部分函数形式化为也有可能。