我在本文的精神中实现了依赖类型的lambda演算:http://www.andres-loeh.de/LambdaPi/LambdaPi.pdf微积分,工作和我试验它并扩展了几个东西:许多宇宙,硬编码的感应公理。但是,我想添加归纳类型来做更复杂的事情。
我正在考虑两种方式
我不喜欢这两种方式。第一个是太低级别,需要大量的努力才能从高级语言转换为核心语言。第二种方法是工作密集,容易出错,因为复杂归纳类型的递归原理的产生有许多极端情况,即正/负出现。
如何做到这一点?如何在Coq,Agda和Idris等现有系统中实现类型?
答案 0 :(得分:3)
抱歉,但我不知道伊德里斯。
对于Agda,我建议将Ulf Norell Phd Thesis作为起点,但系统自此开始发展。
Coq在列表中引入了第三个项目符号:自动生成的谓词。
每种归纳类型都带有3个(在某些特殊情况下为1个)感应方案,这些方案是为用户自动定义的,并命名为your_type_rect
,your_type_rec
和your_type_ind
(仅在特殊情况下为后者)例)。这些是语言的实际术语,为用户自动生成,并由induction
策略使用(我不是100%确定最后一个),而不是公理。
事实上,您可以关闭此自动生成并自行编写您的归纳方案。
可以找到有关induction
的一些文档here。我建议你在Coq邮件列表上提出你的问题,开发人员可以在那里给你更多关于Coq内部的见解。
最佳, 诉