我在Isabelle中遇到problem set天然演绎,使用了classical
规则:
( \<not> A ==> A) ==>A
我更习惯于使用被排除在中的&#39;的法律。 (excluded_middle
)和&#39; reductio ad absurdum&#39; (ccontr
)。
我假设classical
等同于上述两种情况,但我无法从中证明其中任何一种,或问题集中的lemma "A −→ ¬ ¬ A"
。我不认为我只是误解了规则,因为我成功地使用它来证明问题集lemma "¬ ¬ A −→ A"
。有人可以给我一些使用此规则的提示/策略/演示吗?
答案 0 :(得分:3)
这个怎么样:
lemma "A ∨ ¬ A"
proof(rule classical)
assume "¬ (A ∨ ¬ A)"
have "A"
proof(rule classical)
assume "¬ A"
hence "(A ∨ ¬ A)" by (rule disjI2)
with ‹¬ (A ∨ ¬ A)›
show ?thesis by (rule notE)
qed
hence "(A ∨ ¬ A)" by (rule disjI1)
with ‹¬ (A ∨ ¬ A)›
show ?thesis by (rule notE)
qed
请注意,A ⟶ ¬ ¬ A
不需要经典推理:
lemma "A ⟶ ¬ ¬ A"
proof(rule impI)
assume A
show "¬ ¬ A"
proof(rule notI)
assume "¬ A"
from this ‹A›
show False by (rule notE)
qed
qed
答案 1 :(得分:0)
Joachim Breitner的回答给了我所需的所有信息,但是我想把它放到一个我理解得更好的格式中,并且还符合我最初引用的问题集(这说明只使用apply
方法)。
以下是Breitner用这种格式写的证明:
lemma 1: "A ∨ ¬ A"
apply (rule classical)
apply (rule disjI1)
apply (rule classical)
apply (erule notE)
apply (rule disjI2)
apply assumption
done
'引理1'我认为我已经略微缩短了,因为我没有使用第二个notE
(因为A ∨ ¬ A
已经显示,所以没有必要。)
lemma 2: "A ⟶ ¬ ¬ A"
apply (rule impI)
apply (rule notI)
apply (rule notE)
apply assumption
apply assumption
done
正如Breitner所指出的,“引理2”不使用classical
,实际上在直觉逻辑中是有效的。
至于我使用规则classical
所学到的东西,人们可以把它想象成一种“矛盾证明”:我们被允许承担否定,必须证明我们原来的陈述。