我想将这个证明转换为 Isar 作为 ab 练习(让我自己学习 Isar),只使用命题逻辑中的基本自然演绎规则 (ND)(例如notI
, notE
, impI
, impE
... 等)。
我可以很容易地在应用脚本中做到这一点:
lemma very_simple0: "A ⟶ A ∨ B"
apply (rule impI) (* A ⟹ A ∨ B *)
thm disjI1 (* ?P ⟹ ?P ∨ ?Q *)
apply (rule disjI1) (* A ⟹ A *)
by assumption
但我对 Isar 证明的尝试失败了:
lemma very_simple1: "A ⟶ A ∨ B"
proof (* TODO why/how does this introduce A by itself*)
assume A (* probably not neccessary since Isabelle did impI by itself *)
have "A ⟹ A" by disjI1
show "A ⟹ A" by assumption
qed
我的主要错误是:
Undefined method: "disjI1"⌂
这对我来说似乎很神秘,因为规则在之前的应用脚本中工作得很好。
我究竟做错了什么?
请注意,这也会导致错误:
lemma very_simple2: "A ⟶ A ∨ B"
proof impI
assume A (* probably not neccessary since Isabelle did impI by itself *)
have "A ⟹ A" by disjI1
show "A ⟹ A" by assumption
qed
与上述相同的错误:
Undefined method: "impI"⌂
为什么?
编辑:
我了解到“方法”仍然需要工作rule impI
,或者metis etc
脚本仍然失败:
lemma very_simple1: "A ⟶ A ∨ B"
proof (rule impI)
assume A (* probably not neccessary since Isabelle did impI by itself *)
have "A ⟹ A" by (rule disjI1)
show "A ⟹ A" by assumption
qed
编辑2:
lemma very_simple1: "A ⟶ A ∨ B"
proof (rule impI)
have 0: "A ⟹ A ∨ B" by (rule disjI1)
have 1: "A ⟹ A" by assumption
from 1 show "True" by assumption
qed
我仍然无法完成证明。