Isabelle - Nitpick 反例用法

Isabelle - Nitpick counterexample usage

我想完成这个证明。

如何 easily/elegantly 使用 nitpick 找到的值? (...部分要写什么?)

或者,如何利用nitpick找到反例来完成证明?

lemma Nitpick_test: "¬(((a+b) = 5) ∧ ((a-b) = (1::int)))" (is "?P")
  proof (rule ccontr)
    assume "¬ ?P"
    nitpick
    (* Nitpicking formula... 
       Nitpick found a counterexample:

       Free variables:
         a = 3
         b = 2
     *)      
  show "False" by ...      
qed

定理并不像陈述的那样成立,因为如果 a = 3b = 2,则语句计算为 False。然而,对于 ab 的其他值,该声明确实成立。因此,由于 ab 是隐式普遍量化的,因此您无法证明所陈述的定理。

如果你想证明

theorem "EX a b. a + b = 5 & a - b = (1 :: int)"

您可以使用 rule exI[where x="..."] 为存在量词提供见证 ...,因此在这种情况下 32