1 (**************************************************************************)
4 (* ||A|| A project by Andrea Asperti *)
6 (* ||I|| Developers: *)
7 (* ||T|| The HELM team. *)
8 (* ||A|| http://helm.cs.unibo.it *)
10 (* \ / This file is distributed under the terms of the *)
11 (* v GNU General Public License Version 2 *)
13 (**************************************************************************)
15 include "demo/natural_deduction_support.ma".
17 lemma RAA_to_EM : A ∨ ¬ A.
19 apply (prove (A ∨ ¬ A));
24 apply (¬_e (¬(A∨¬A)) (A∨¬A));
30 apply (¬_e (¬(A∨¬A)) (A∨¬A));
38 lemma RA_to_EM1 : A ∨ ¬ A.
40 apply (prove (A ∨ ¬ A));
43 apply (¬_e (¬¬A) (¬A));
45 apply (¬_e (¬(A∨¬A)) (A∨¬A));
51 apply (¬_e (¬(A∨¬A)) (A∨¬A));
59 lemma ex0 : (A ⇒ ⊥) ⇒ A ⇒ B ∧ ⊤.
61 apply (prove ((A ⇒ ⊥) ⇒ A ⇒ B∧⊤));
63 apply (⇒_i [H] (A ⇒ B∧⊤));
64 apply (⇒_i [H1] (B∧⊤));
67 apply (⇒_e (A ⇒ ⊥) A);
75 lemma ex1 : (A ⇒ E) ∨ B ⇒ A ∧ C ⇒ (E ∧ C) ∨ B.
77 apply (prove ((A⇒E)∨B⇒A∧C⇒E∧C∨B));
79 apply (⇒_i [H] (A∧C⇒E∧C∨B));
80 apply (⇒_i [K] (E∧C∨B));
81 apply (∨_e ((A⇒E)∨B) [C1] (E∧C∨B) [C2] (E∧C∨B));
83 | apply (∨_i_l (E∧C));
85 [ apply (⇒_e (A⇒E) A);
87 | apply (∧_e_l (A∧C)); apply [K];
89 | apply (∧_e_r (A∧C)); apply [K];
91 | apply (∨_i_r B); apply [C2];
95 lemma dmg : ¬(A ∨ B) ⇒ ¬A ∧ ¬B.
97 apply (prove (¬(A ∨ B) ⇒ ¬A ∧ ¬B));
98 apply (⇒_i [H] (¬A ∧ ¬B));
106 lemma ex2: ΠN:Type.ΠR:N→N→CProp.
108 (∀a:N.∀b:N.R a b ⇒ R b a) ⇒ ∀z:N.(∃x.R x z) ⇒ ∃y. R z y.
110 intros (N R);apply (prove ((∀a:N.∀b:N.R a b ⇒ R b a) ⇒ ∀z:N.(∃x.R x z) ⇒ ∃y. R z y));
112 apply (⇒_i [H] (∀z:N.(∃x:N.R x z)⇒∃y:N.R z y));
113 apply (∀_i [z] ((∃x:N.R x z)⇒∃y:N.R z y));
114 apply (⇒_i [H2] (∃y:N.R z y));
115 apply (∃_e (∃x:N.R x z) [n] [H3] (∃y:N.R z y));
117 | apply (∃_i n (R z n));
118 apply (⇒_e (R n z ⇒ R z n) (R n z));
119 [ apply (∀_e (∀b:N.R n b ⇒ R b n) z);
120 apply (∀_e (∀a:N.∀b:N.R a b ⇒ R b a) n);