【发布时间】:2023-03-10 23:01:01
【问题描述】:
我在 Coq 8.5p1 的参考手册第 11 章中关注了(不完整的)示例,关于数学/声明性证明语言。在下面的迭代等式示例(~= 和 =~)中,我收到警告 Insufficient Justification 将 4 重写为 2+2,并最终收到错误消息:
没有更多的子目标,但有未实例化的存在 变量:
?目标: [x: R H: x = 2 _eq0: 4 = x * x |- 2 + 2 = 4]
您可以使用抓取存在变量。
例子:
Goal forall x, x = 2 -> x + x = x * x.
Proof.
proof. Show.
let x:R.
assume H: (x = 2). Show.
have ( 4 = 4). Show.
~= (2*2). Show.
~= (x*x) by H. Show.
=~ (2+2). Show. (*Problem Here: Insufficient Justification*)
=~ H':(x + x) by H.
thus thesis by H'.
end proof.
Fail Qed.
我不熟悉 Coq 中的数学证明语言,也不明白为什么会发生这种情况。有人可以帮助解释如何修复错误吗?
--编辑-- @Vinz
在示例之前我有这些随机导入:
Require Import Reals.
Require Import Fourier.
【问题讨论】:
-
你能添加
Require或你使用的库来拥有这样的语法吗? -
抱歉,我没有 Coq 8.5 来测试您的脚本 atm。通常,当您设法证明一个目标但某些元变量(想想类型的洞,您通常通过解决子目标来填充)没有实例化时,就会发生这种情况。
标签: coq