我最近尝试实现Aaron的Cedille-Core,这是一种极简主义的编程语言,能够证明有关其术语的数学定理。我还证明了其上的λ编码数据类型的归纳法,这使他的扩展为什么必要的原因更加清楚。
几乎没有,我仍然想知道这些扩展来自何处。为什么他们是他们自己?什么使他们合理?我知道,例如,某些扩展(例如递归)破坏了该语言作为证明系统的地位。如果我决定也将CoC与其他原语一起扩展,我将如何辩解?我知道有必要进行标准化的证明,但这并不能证明这些原语“有意义”。
简而言之,什么使语言(及其类型系统)成为能够证明自己的术语定理的系统呢?
我读了有关这个问题的一个博客,但我现在无法找到它:(它包含了句“系统T是足够了!”或者类似的东西,它谈到依赖型系统。
—
Labbekak
找到了它:queuea9.wordpress.com/2010/01/17/…它实际上是由亚伦·史坦普(Aaron Stump)编写的,因此您可能已经知道了。
—
Labbekak
无保护的递归“破坏”了语言作为证明系统,无保护的递归没有。为了证明原语有意义,我想说您建立了一个模型。为了证明有关其术语的定理,它需要一种Curry-Howard同构和相关类型,以便您证明的事物(类型)可以谈论您的术语。
—
xavierm02 '18