Program策略产生的令人困惑的义务

时间:2019-03-11 07:27:49

标签: coq

对于Coq证明助理,我还很陌生,现在仍然可以站稳脚跟。 我遇到了一个我不知道如何处理的情况:我试图使用Program Fixpoint策略来弱化我的代码的要求,之后再证明所谓的Obligations属性。尽管其中大多数都很容易,但是有两个义务生成的目标的形式为[a-quite-simplee-xpr] = [my-function-name]_obligation_3,通常来说,这些目标是指其他已被证明的义务。我尝试展开并进行替换,但这并没有真正的帮助。 如果没有针对此类问题的一般解决方案,我可以发送证明脚本+义务添加一些上下文的屏幕截图。

先谢谢您。

1 个答案:

答案 0 :(得分:0)

可能发生的一件事是,您拥有同时包含“数据”和“证明”的类型(通常,如果您尝试使用sig进行精简类型,或者是包含证明的自定义归纳类型)术语),并且您的函数需要证明命题相等,这对于此类依赖类型通常太强了。

证明条款应该无关紧要:最简单的解决方法是使用ProofIrrelevance(在stdlib中)的公理来解决该目标。

有一些无公理的方法,但是我相信它们需要做更多的工作/专业知识。