给定一个带有对象逻辑蕴涵的定理 "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
这看起来有点奇怪:我正在引入蕴涵,只是为了在下一步中消除它。
我现在的问题是:
- 我的目标重写来自哪里,我在哪里可以找到更多相关信息?
- 我将如何简化证明(不使用 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
这回答了你的第二个问题。
我只是从 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
这看起来有点奇怪:我正在引入蕴涵,只是为了在下一步中消除它。
我现在的问题是:
- 我的目标重写来自哪里,我在哪里可以找到更多相关信息?
- 我将如何简化证明(不使用 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
这回答了你的第二个问题。