基于依赖类型理论的实用程序设计语言

乌尔夫·诺雷尔。基于依赖类型理论的实用程序设计语言.查尔默斯科技大学博士论文哥德堡大学,2007年。
[pdf格式,围兜]

依赖型理论应用历史悠久用于定理证明。类型理论的一个方面使其作为一种证明语言是将演绎和计算混合在一起。这也使得类型理论是编程的好候选者——类型系统的力量允许声明和建立程序的属性,以及计算属性为程序提供语义。

这篇论文关注的是弥合理论上类型理论的介绍和实际编程的要求语言。尽管还有许多具有挑战性的研究问题有待解决在我们有一种基于类型理论的工业级编程语言之前,这篇论文为我们迈出了一大步。

在函数式编程语言中,模式匹配提供了一种简明的表示法用于定义函数。在依赖类型理论中,模式匹配变得均匀更强大的是,检查特定术语的价值可以揭示关于其他术语的类型和值的信息。在本论文中,我们给出了一个通过类型理论中的模式匹配进行定义的类型检查算法,支持重叠模式,并在中间结果上进行模式匹配使用具有规则。

类型理论的传统表示法存在相当冗长的符号,例如,将程序和证明与显式类型信息混在一起。这个问题的一个解决方案是允许可以推断的项自动忽略。这通常通过插入元变量代替省略的术语并使用统一来解决这些问题类型检查期间的元变量。我们提出了一种类型检查算法元变量理论,并证明其可靠性与元变量是否求解。

在任何编程语言中,能够构造大型程序分成单独的单元或模块,并限制这些单元或模块之间的交互模块。在本论文中,我们为依赖类型的语言。模块系统的主要重点是管理程序的名称空间,一个重要的特征是清晰的分隔在模块系统和类型检查器之间,使其在很大程度上独立于基础语言。

作为旁道,与类型理论在编程中的使用没有直接关系,我们提出了类型理论和一阶逻辑定理之间的联系证明人。这种连接为用户节省了证明简单但繁琐的负担把一阶定理留给证明者。我们使用透明翻译成一阶逻辑,使证明由定理证明器人类可读。连接的可靠性由以下因素确定一个一般的元定理。

最后,我们将我们的工作付诸于编程实现中基于类型理论的Agda语言。作为一个示例,我们展示了如何为交换幺半群中的方程编写一个简单的证明器,它可以在Agda内部使用。更令人印象深刻的例子是其他,表明本文提出的思想在实践中是可行的。


有效的HTML 4.01! 免责声明
上次修改时间:2007年8月17日星期五下午03:18:35 CEST