对于Coq证明助理,我还很陌生,现在仍然可以站稳脚跟。
我遇到了一个我不知道如何处理的情况:我试图使用Program Fixpoint
策略来弱化我的代码的要求,之后再证明所谓的Obligations
属性。尽管其中大多数都很容易,但是有两个义务生成的目标的形式为[a-quite-simplee-xpr] = [my-function-name]_obligation_3
,通常来说,这些目标是指其他已被证明的义务。我尝试展开并进行替换,但这并没有真正的帮助。
如果没有针对此类问题的一般解决方案,我可以发送证明脚本+义务添加一些上下文的屏幕截图。
先谢谢您。
答案 0 :(得分:0)
可能发生的一件事是,您拥有同时包含“数据”和“证明”的类型(通常,如果您尝试使用sig
进行精简类型,或者是包含证明的自定义归纳类型)术语),并且您的函数需要证明命题相等,这对于此类依赖类型通常太强了。
证明条款应该无关紧要:最简单的解决方法是使用ProofIrrelevance
(在stdlib中)的公理来解决该目标。
有一些无公理的方法,但是我相信它们需要做更多的工作/专业知识。