Isabelle 如何测试含意的虚假性?

Isabelle 如何测试含意的虚假性?,isabelle,Isabelle,在一个复杂的引理中,这个引理基本上是一个蕴涵,一个人可能会错误地形成一个前因,这个前因被证明是虚假的。Isabelle是否支持避免这种情况?您可以使用quickcheck。在你怀疑你的前科不成立的证明中,在本地尝试证明错误: lemma "P ∧ ¬ P ⟹ foobar" proof - have False quickcheck 如果这是您经常需要的先行条件,您也可以这样做: context assumes "P ∧ ¬ P" begin lemma False ni

在一个复杂的引理中,这个引理基本上是一个蕴涵,一个人可能会错误地形成一个前因,这个前因被证明是虚假的。Isabelle是否支持避免这种情况?

您可以使用
quickcheck
。在你怀疑你的前科不成立的证明中,在本地尝试证明
错误

lemma "P ∧ ¬ P ⟹ foobar"
proof -
  have False
    quickcheck
如果这是您经常需要的先行条件,您也可以这样做:

context
  assumes "P ∧ ¬ P"
begin

lemma False
  nitpick
  quickcheck

end

context
命令打开带有本地假设的新未命名上下文。当您退出上下文时,该假设将添加到所有定理中。在那里,你也可以用挑剔来发现问题。

另一个常见的尝试是简单地为你的假设提供一个模型,即尝试将你的定理实际应用到具体的事情上。即使是一个微不足道的例子,也至少可以证明你的假设并不矛盾,一个非微不足道的例子也会增加你的信心,让你相信你确实正确地表达了你的意图。顺便说一句,这种情况经常发生。即使是有经验的证明助理用户。避免这种情况需要非常小心。拉尔斯,谢谢你的回答。第二个版本很好,但在第一个版本中,我得到了“挑剔的目标:错误的挑剔找到了反例:空作业”,无论前题是否为虚假。你能再解释一下如何使用它吗?@AttilaKaroly谢谢,我已经相应地更新了答案。