Automation 知道什么时候Isar风格的证明在Isabelle中是有效的

Automation 知道什么时候Isar风格的证明在Isabelle中是有效的,automation,isabelle,proof,theorem-proving,formal-verification,Automation,Isabelle,Proof,Theorem Proving,Formal Verification,我正在做一个练习,同时努力学习Isar语言。下面是关于列表的引理的脚本 lemma "EX ys zs. xs = ys @ zs ∧ (length ys = length zs ∨ length ys = length zs + 1)" proof - show ?thesis by blast (* L *) qed 伊莎贝尔似乎接受了这一点,但有些事情让我困惑 首先,尽管Isabelle在位置(*L*)处声明“成功尝试解决目标”和“无子目标!”,但字符串“by blast”继续突出显

我正在做一个练习,同时努力学习Isar语言。下面是关于列表的引理的脚本

lemma "EX ys zs. xs = ys @ zs ∧ (length ys = length zs ∨ length ys = length zs + 1)"
proof -
show ?thesis by blast (* L *) 
qed
伊莎贝尔似乎接受了这一点,但有些事情让我困惑

首先,尽管Isabelle在位置(*L*)处声明“成功尝试解决目标”和“无子目标!”,但字符串“by blast”继续突出显示,这向我表明此方法尚未终止。是这样吗?如果是这样的话,依伊莎贝尔的说法,我的证据真的有效吗

一般来说,我已经注意到,如果我在脚本中写任何东西来代替“blast”,那么Isabelle将在输出中声明相同的内容,只是它也可能在底部以红色表示存在一些失败。即便如此,如果我在之后写“qed”,伊莎贝尔似乎接受了这个引理。这是怎么回事?我如何确切地知道我的证明什么时候是有效的


任何洞察都将不胜感激

如果某个方法没有终止,或者有明确的失败消息,那么您的证明将不被接受。仅仅是prover IDE的并行处理就允许您继续进行验证,就好像验证会成功一样

要检查您的所有证明是否正确,最安全的方法是运行
isabelle build
,或者您可以在isabelle/jEdit中的理论面板中检查您的理论是否有粗体黑色边框,这也表示处理成功