X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Fsoftware%2Fmatita%2Flibrary%2Fdemo%2Fpropositional_sequent_calculus.ma;h=36bb7e86308d07d2869fb0ad45d484d6bb9e8a1a;hb=839d7d2a1c009f20318a9cbdedd99e95d11d3e74;hp=9bd89394d3fca58ed9579524a83566181231aae2;hpb=f5d8ab6a1c8bdf2d54e9961ac5899d9f001160c2;p=helm.git diff --git a/helm/software/matita/library/demo/propositional_sequent_calculus.ma b/helm/software/matita/library/demo/propositional_sequent_calculus.ma index 9bd89394d..36bb7e863 100644 --- a/helm/software/matita/library/demo/propositional_sequent_calculus.ma +++ b/helm/software/matita/library/demo/propositional_sequent_calculus.ma @@ -12,8 +12,6 @@ (* *) (**************************************************************************) -set "baseuri" "cic:/matita/demo/propositional_sequent_calculus/". - include "nat/plus.ma". include "nat/compare.ma". include "list/sort.ma". @@ -157,17 +155,16 @@ inductive derive: sequent → Prop ≝ | NotL: ∀l1,l2,f. derive 〈l1,f::l2〉 → derive 〈FNot f :: l1,l2〉. -alias id "Nil" = "cic:/matita/list/list.ind#xpointer(1/1/1)". let rec and_of_list l ≝ match l with - [ Nil ⇒ FTrue - | Cons F l' ⇒ FAnd F (and_of_list l') + [ nil ⇒ FTrue + | cons F l' ⇒ FAnd F (and_of_list l') ]. let rec or_of_list l ≝ match l with - [ Nil ⇒ FFalse - | Cons F l' ⇒ FOr F (or_of_list l') + [ nil ⇒ FFalse + | cons F l' ⇒ FOr F (or_of_list l') ]. definition formula_of_sequent ≝ @@ -276,7 +273,6 @@ theorem soundness: ∀F. derive F → is_tautology (formula_of_sequent F). qed. alias num (instance 0) = "natural number". -alias symbol "plus" = "natural plus". let rec size F ≝ match F with [ FTrue ⇒ 0 @@ -289,8 +285,8 @@ let rec size F ≝ let rec sizel l ≝ match l with - [ Nil ⇒ 0 - | Cons F l' ⇒ size F + sizel l' + [ nil ⇒ 0 + | cons F l' ⇒ size F + sizel l' ]. definition size_of_sequent ≝ @@ -311,8 +307,7 @@ definition same_atom : Formula → Formula → bool. qed. definition symmetricb ≝ - λA:Type.λeq:A → A → bool. - ∀x,y. eq x y = eq y x. + λA:Type.λeq:A → A → bool. ∀x,y. eq x y = eq y x. theorem symmetricb_eqb: symmetricb ? eqb. intro; @@ -399,7 +394,7 @@ theorem mem_to_exists_l1_l2: [ simplify in H1; destruct H1 | simplify in H2; - apply (bool_elim ? (eq n t)); + apply (bool_elim ? (eq n a)); intro; [ apply (ex_intro ? ? []); apply (ex_intro ? ? l1); @@ -411,8 +406,8 @@ theorem mem_to_exists_l1_l2: elim (H H1 H2); elim H4; rewrite > H5; - apply (ex_intro ? ? (t::a)); - apply (ex_intro ? ? a1); + apply (ex_intro ? ? (a::a1)); + apply (ex_intro ? ? a2); simplify; reflexivity ] @@ -425,8 +420,7 @@ lemma same_atom_to_eq: ∀f1,f2. same_atom f1 f2 = true → f1=f2. [1,2: simplify in H; destruct H - | generalize in match H; clear H; - elim f2; + | elim f2 in H ⊢ %; [1,2: simplify in H; destruct H @@ -436,7 +430,7 @@ lemma same_atom_to_eq: ∀f1,f2. same_atom f1 f2 = true → f1=f2. |4,5: simplify in H2; destruct H2 - | simplify in H2; + | simplify in H1; destruct H1 ] |4,5: @@ -470,7 +464,7 @@ lemma mem_same_atom_to_exists: [ simplify in H; destruct H | simplify in H1; - apply (bool_elim ? (same_atom f t)); + apply (bool_elim ? (same_atom f a)); intros; [ elim (same_atom_to_exists ? ? H2); autobatch @@ -494,14 +488,14 @@ lemma look_for_axiom: simplify; reflexivity | intros; - generalize in match (refl_eq ? (mem ? same_atom t l2)); - elim (mem ? same_atom t l2) in ⊢ (? ? ? %→?); + generalize in match (refl_eq ? (mem ? same_atom a l2)); + elim (mem ? same_atom a l2) in ⊢ (? ? ? %→?); [ left; elim (mem_to_exists_l1_l2 ? ? ? ? same_atom_to_eq H1); elim H2; clear H2; elim (mem_same_atom_to_exists ? ? H1); rewrite > H2 in H3; - apply (ex_intro ? ? a2); + apply (ex_intro ? ? a3); rewrite > H2; apply (ex_intro ? ? []); simplify; @@ -509,22 +503,22 @@ lemma look_for_axiom: | elim (H l2); [ left; decompose; - apply (ex_intro ? ? a); - apply (ex_intro ? ? (t::a1)); + apply (ex_intro ? ? a1); + apply (ex_intro ? ? (a::a2)); simplify; - apply (ex_intro ? ? a2); apply (ex_intro ? ? a3); + apply (ex_intro ? ? a4); autobatch | right; intro; - apply (bool_elim ? (same_atom t (FAtom n1))); + apply (bool_elim ? (same_atom a (FAtom n1))); [ intro; rewrite > (eq_to_eq_mem ? ? transitiveb_same_atom ? ? ? H3) in H1; rewrite > H1; autobatch | intro; change in ⊢ (? ? (? % ?) ?) with - (match same_atom (FAtom n1) t with + (match same_atom (FAtom n1) a with [true ⇒ true |false ⇒ mem ? same_atom (FAtom n1) l ]); @@ -591,22 +585,16 @@ lemma sizel_0_no_axiom_is_tautology: intros; lapply (H1 (λn.mem ? same_atom (FAtom n) l1)); clear H1; simplify in Hletin; - generalize in match Hletin; clear Hletin; - generalize in match H2; clear H2; - generalize in match H; clear H; - elim l1 0; + elim l1 in Hletin H2 H ⊢ % 0; [ intros; simplify in H2; - generalize in match H2; clear H2; - generalize in match H1; clear H1; - generalize in match H; clear H; - elim l2 0; + elim l2 in H2 H1 H ⊢ % 0; [ intros; simplify in H2; destruct H2 | simplify; intro; - elim t; + elim a; [ right; apply (ex_intro ? ? []); simplify; @@ -619,10 +607,10 @@ lemma sizel_0_no_axiom_is_tautology: elim (not_eq_nil_append_cons ? ? ? ? H6) | elim H4; right; - apply (ex_intro ? ? (FFalse::a)); + apply (ex_intro ? ? (FFalse::a1)); simplify; elim H5; - apply (ex_intro ? ? a1); + apply (ex_intro ? ? a2); autobatch |3,4: autobatch | assumption @@ -634,7 +622,7 @@ lemma sizel_0_no_axiom_is_tautology: elim (not_eq_nil_append_cons ? ? ? ? H5) | right; elim H4; - apply (ex_intro ? ? (FAtom n::a)); + apply (ex_intro ? ? (FAtom n::a1)); simplify; elim H; autobatch @@ -647,11 +635,11 @@ lemma sizel_0_no_axiom_is_tautology: ] ] | intro; - elim t; + elim a; [ elim H; [ left; elim H4; - apply (ex_intro ? ? (FTrue::a)); + apply (ex_intro ? ? (FTrue::a1)); simplify; elim H5; autobatch @@ -671,7 +659,7 @@ lemma sizel_0_no_axiom_is_tautology: | elim H; [ left; elim H4; - apply (ex_intro ? ? (FAtom n::a)); + apply (ex_intro ? ? (FAtom n::a1)); simplify; elim H5; autobatch @@ -680,8 +668,7 @@ lemma sizel_0_no_axiom_is_tautology: | assumption | lapply (H2 n1); clear H2; simplify in Hletin; - generalize in match Hletin; clear Hletin; - elim (eqb n1 n); + elim (eqb n1 n) in Hletin ⊢ %; [ simplify in H2; rewrite > H2; autobatch @@ -696,10 +683,7 @@ lemma sizel_0_no_axiom_is_tautology: rewrite > eqb_n_n in H3; simplify in H3; (* - generalize in match H3; - generalize in match H1; clear H1; - generalize in match H; clear H; - elim l 0; + elim l in H3 H1 H ⊢ % 0; [ elim l2 0; [ intros; simplify in H2; @@ -717,9 +701,7 @@ lemma sizel_0_no_axiom_is_tautology: ] [ autobatch - | generalize in match H4; clear H4; - generalize in match H2; clear H2; - elim t1; + | elim t1 in H4 H2 ⊢ %; [ | | @@ -750,22 +732,22 @@ lemma completeness_base: elim S 1; clear S; simplify in ⊢ (?→%→?); intros; - elim (look_for_axiom t t1); + elim (look_for_axiom a b); [ decompose; rewrite > H2; clear H2; rewrite > H4; clear H4; - apply (exchangeL ? a1 a2 (FAtom a)); - apply (exchangeR ? a3 a4 (FAtom a)); - apply axiom - | elim (sizel_0_no_axiom_is_tautology t t1 H H1 H2); + apply (ExchangeL ? a2 a3 (FAtom a1)); + apply (ExchangeR ? a4 a5 (FAtom a1)); + apply Axiom + | elim (sizel_0_no_axiom_is_tautology a b H H1 H2); [ decompose; rewrite > H3; - apply (exchangeL ? a a1 FFalse); - apply falseL + apply (ExchangeL ? a1 a2 FFalse); + apply FalseL | decompose; rewrite > H3; - apply (exchangeR ? a a1 FTrue); - apply trueR + apply (ExchangeR ? a1 a2 FTrue); + apply TrueR ] ] qed. @@ -918,4 +900,3 @@ qed. | apply NotR; simplify in H1; *) -*)