给定一个带有对象逻辑蕴涵的定理 "P(t) ⟶ (∃x . P(x))",为什么证明目标 "P(t) ⟹ (∃x . P(x))" 给出了元逻辑蕴涵?

Given a theorem "P(t) ⟶ (∃x . P(x))" with an object logic implication, why is the proof goal "P(t) ⟹ (∃x . P(x))" given with meta-logic implication?

我只是从 Isabelle/HOL 开始,并试图用自然演绎规则证明一个简单的 HOL 语句 "P(t) ⟶ (∃x . P(x))"。我从一个只包含定理的理论文件开始:

theory simple imports Main
begin

lemma T: shows "P(t) ⟶ (∃x . P(x))"
proof
  (* x *)
qed  

end

在评论中标x的位置,当前目标已经是"P(t) ⟹ (∃x . P(x))",即逻辑蕴涵已经简化为元逻辑蕴涵

通过反复试验,我得出以下证明:

proof
  assume "P(t)" then
  have "∃ x . P(x)" by (rule exI) then
  have "P(t) ⟶ (∃x . P(x))" by (rule impI)
  then show "P(t) ⟹ (∃x . P(x))" by (rule impE)
qed

这看起来有点奇怪:我正在引入蕴涵,只是为了在下一步中消除它。

我现在的问题是:

  1. 我的目标重写来自哪里,我在哪里可以找到更多相关信息?
  2. 我将如何简化证明(不使用 auto 规避 ND)?

Where does the rewriting of my goal come from and where can I find more about it?

当您像这样使用 proof 时,它会向您的目标迈出一个简单的步骤。在您的情况下,它适用 rule impI。如果您不想那样,请使用 proof -.

但您可能 想在这里使用隐式 rule impI。请注意,它会改变您的目标,您可以只写:

proof
  assume "P(t)"
  then show "∃ x . P(x)" by (rule exI)
qed

这回答了你的第二个问题。