代表归纳类型

时间:2014-03-12 02:28:25

标签: coq agda dependent-type idris

我在本文的精神中实现了依赖类型的lambda演算:http://www.andres-loeh.de/LambdaPi/LambdaPi.pdf微积分,工作和我试验它并扩展了几个东西:许多宇宙,硬编码的感应公理。但是,我想添加归纳类型来做更复杂的事情。

我正在考虑两种方式

  • 介绍Fin-N,产品和W类型,并用它们表示归纳类型。
  • 生成归纳和递归公理。

我不喜欢这两种方式。第一个是太低级别,需要大量的努力才能从高级语言转换为核心语言。第二种方法是工作密集,容易出错,因为复杂归纳类型的递归原理的产生有许多极端情况,即正/负出现。

如何做到这一点?如何在Coq,Agda和Idris等现有系统中实现类型?

1 个答案:

答案 0 :(得分:3)

抱歉,但我不知道伊德里斯。

对于Agda,我建议将Ulf Norell Phd Thesis作为起点,但系统自此开始发展。

Coq在列表中引入了第三个项目符号:自动生成的谓词。 每种归纳类型都带有3个(在某些特殊情况下为1个)感应方案,这些方案是为用户自动定义的,并命名为your_type_rectyour_type_recyour_type_ind(仅在特殊情况下为后者)例)。这些是语言的实际术语,为用户自动生成,并由induction策略使用(我不是100%确定最后一个),而不是公理。

事实上,您可以关闭此自动生成并自行编写您的归纳方案。

可以找到有关induction的一些文档here。我建议你在Coq邮件列表上提出你的问题,开发人员可以在那里给你更多关于Coq内部的见解。

最佳, 诉