使用规则' classic'在伊莎贝尔

时间:2016-07-14 09:21:36

标签: logic isabelle

我在Isabelle中遇到problem set天然演绎,使用了classical规则:

( \<not> A ==> A) ==>A

我更习惯于使用被排除在中的&#39;的法律。 (excluded_middle)和&#39; reductio ad absurdum&#39; (ccontr)。

我假设classical等同于上述两种情况,但我无法从中证明其中任何一种,或问题集中的lemma "A −→ ¬ ¬ A" 。我不认为我只是误解了规则,因为我成功地使用它来证明问题集lemma "¬ ¬ A −→ A"。有人可以给我一些使用此规则的提示/策略/演示吗?

2 个答案:

答案 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所学到的东西,人们可以把它想象成一种“矛盾证明”:我们被允许承担否定,必须证明我们原来的陈述。