我已经完成了软件基础系列,并且对Coq基础知识有很好的理解。但是,任何非平凡的证据都变得过长而乏味。
为熟悉基础知识的人编写可管理的大型Coq样张的策略是什么?
答案 0 :(得分:2)
这是一个重要的问题,但遗憾的是,这个问题过于宽泛,无法得到令人满意的总体答案;从某种意义上说,它类似于想知道用你最喜欢的编程语言编写大型复杂程序的最佳策略是什么(更糟糕的是,鉴于证明助理技术并不像传统语言那样成熟)。
我能给出的最好的建议是:不要试图强行证明。如果您认为某些事情变得过于复杂,请停下来,退后一步,并考虑代码中是否有任何可以简化您生活的变化。也许你的定义不是很正确;也许你需要一些自动化;或者你的定理陈述太复杂 - 或者更糟糕的是,显然是错误的!然而,知道如何进行的唯一方法是使用一个具体的,具体的例子让你头疼。一旦你有了,我们很乐意为你提供帮助。
答案 1 :(得分:1)
Certified Programming with Dependent Types(简称CPDT)是一个很好的介绍,通常与软件基础一起或代替软件基础推荐。它非常注重简短和自动化的证明,是对学习策略自动化的一个很好的介绍。