为什么我可以证明⟦(∃x.P)∧(∃x.Q)⟧⟧⟹x。 (P∧Q)?

时间:2014-07-15 10:50:42

标签: isabelle

我是Isabelle初学者,学习基础知识。令我惊讶的是,我刚刚证明了

lemma "⟦ ( ∃ x. P ) ∧ ( ∃ x. Q ) ⟧ ⟹  ∃ x. (P ∧ Q)"
apply ( auto )
done
<\ n>在Isabelle / HOL。现在假设P和Q的范围超过任意谓词,这是错误的,只需将P实例化为x = 1,将Q实例化为x = 2.

当然,错误必须在我身边,但我的误解在哪里?

1 个答案:

答案 0 :(得分:8)

正如评论中已经指出的那样,您的示例中的PQ不是谓词,它们只是布尔变量。如果您输入term P,则只会bool。由于HOL类型非空,∃x. P相当于PQ类似,因此您的假设强制PQTrue ,这显然暗示了你证明的陈述。

你的意思是

lemma "⟦(∃x. P x) ∧ (∃x. Q x)⟧ ⟹  ∃x. P x ∧ Q x"

这是错误的,只需写下引理,quickcheck就会自动为你提供一个反例。

另请注意,单个假设(如您的情况)不需要括号⟦...。。此外,使用HOL连接算子∧来组合假设是不常见的。你会更常说这个引理为

lemma "⟦∃x. P x; ∃x. Q x⟧ ⟹ ∃x. P x ∧ Q x"

lemma "∃x. P x ⟹ ∃x. Q x ⟹ ∃x. P x ∧ Q x"

这种形式比具有HOL∧的形式更容易处理,因为你可以实例化特定的假设。