From: Enrico Tassi Date: Sat, 1 Dec 2007 12:46:08 +0000 (+0000) Subject: carabinieri almost done X-Git-Tag: make_still_working~5746 X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=commitdiff_plain;h=a1f4ef3daaeed7a3121a40afe55f321565669da8;p=helm.git carabinieri almost done --- diff --git a/helm/software/matita/dama/group.ma b/helm/software/matita/dama/group.ma index 87cc25855..a04cd3bcc 100644 --- a/helm/software/matita/dama/group.ma +++ b/helm/software/matita/dama/group.ma @@ -83,6 +83,14 @@ lapply (plus_comm ? z x) as E1; lapply (plus_comm ? z y) as E2; lapply (ap_rewl ???? E1 A) as A1; lapply (ap_rewr ???? E2 A1) as A2; apply (plus_strong_ext ???? A2); qed. + +lemma plus_cancl_ap: ∀G:abelian_group.∀x,y,z:G.z+x # z + y → x # y. +intros; apply plus_strong_ext; assumption; +qed. + +lemma plus_cancr_ap: ∀G:abelian_group.∀x,y,z:G.x+z # y+z → x # y. +intros; apply plus_strong_extr; assumption; +qed. lemma feq_plusr: ∀G:abelian_group.∀x,y,z:G. y ≈ z → y+x ≈ z+x. intros (G x y z Eyz); apply (strong_ext_to_ext ?? (plus_strong_extr ? x)); @@ -205,25 +213,3 @@ compose feq_plusl with feq_opp(H); apply H; assumption; qed. coercion cic:/matita/group/eq_opp_plusl.con nocomposites. - -lemma plus_cancr_ap: ∀G:abelian_group.∀x,y,z:G. x+z # y+z → x # y. -intros (G x y z H); lapply (fap_plusr ? (-z) ?? H) as H1; clear H; -lapply (ap_rewl ? (x + (z + -z)) ?? (plus_assoc ? x z (-z)) H1) as H2; clear H1; -lapply (ap_rewl ? (x + (-z + z)) ?? (plus_comm ?z (-z)) H2) as H1; clear H2; -lapply (ap_rewl ? (x + 0) ?? (opp_inverse ?z) H1) as H2; clear H1; -lapply (ap_rewl ? (0+x) ?? (plus_comm ?x 0) H2) as H1; clear H2; -lapply (ap_rewl ? x ?? (zero_neutral ?x) H1) as H2; clear H1; -lapply (ap_rewr ? (y + (z + -z)) ?? (plus_assoc ? y z (-z)) H2) as H3; -lapply (ap_rewr ? (y + (-z + z)) ?? (plus_comm ?z (-z)) H3) as H4; -lapply (ap_rewr ? (y + 0) ?? (opp_inverse ?z) H4) as H5; -lapply (ap_rewr ? (0+y) ?? (plus_comm ?y 0) H5) as H6; -lapply (ap_rewr ? y ?? (zero_neutral ?y) H6); -assumption; -qed. - -lemma pluc_cancl_ap: ∀G:abelian_group.∀x,y,z:G. z+x # z+y → x # y. -intros (G x y z H); apply (plus_cancr_ap ??? z); -apply (ap_rewl ???? (plus_comm ???)); -apply (ap_rewr ???? (plus_comm ???)); -assumption; -qed. diff --git a/helm/software/matita/dama/metric_lattice.ma b/helm/software/matita/dama/metric_lattice.ma index 0e92f0a89..81eab3137 100644 --- a/helm/software/matita/dama/metric_lattice.ma +++ b/helm/software/matita/dama/metric_lattice.ma @@ -112,10 +112,44 @@ interpretation "tends to" 'tends s x = (cic:/matita/sequence/tends0.con _ s). *) +lemma lew_opp : ∀O:ogroup.∀a,b,c:O.0 ≤ b → a ≤ c → a + -b ≤ c. +intros (O a b c L0 L); +apply (le_transitive ????? L); +apply (plus_cancl_le ??? (-a)); +apply (le_rewr ??? 0 (opp_inverse ??)); +apply (le_rewl ??? (-a+a+-b) (plus_assoc ????)); +apply (le_rewl ??? (0+-b) (opp_inverse ??)); +apply (le_rewl ??? (-b) (zero_neutral ?(-b))); +apply le_zero_x_to_le_opp_x_zero; +assumption; +qed. + + +lemma ltw_opp : ∀O:ogroup.∀a,b,c:O.0 < b → a < c → a + -b < c. +intros (O a b c P L); +apply (lt_transitive ????? L); +apply (plus_cancl_lt ??? (-a)); +apply (lt_rewr ??? 0 (opp_inverse ??)); +apply (lt_rewl ??? (-a+a+-b) (plus_assoc ????)); +apply (lt_rewl ??? (0+-b) (opp_inverse ??)); +apply (lt_rewl ??? ? (zero_neutral ??)); +apply lt_zero_x_to_lt_opp_x_zero; +assumption; +qed. + +lemma ltwl: ∀a,b,c:nat. b + a < c → a < c. +intros 3 (x y z); elim y (H z IH H); [apply H] +apply IH; apply lt_S_to_lt; apply H; +qed. + +lemma ltwr: ∀a,b,c:nat. a + b < c → a < c. +intros 3 (x y z); rewrite > sym_plus; apply ltwl; +qed. + alias symbol "leq" = "ordered sets less or equal than". alias symbol "and" = "constructive and". alias symbol "exists" = "constructive exists (Type)". -lemma carabinieri: (* non trova la coercion .... *) +theorem carabinieri: (* non trova la coercion .... *) ∀R.∀ml:mlattice R.∀an,bn,xn:sequence (pordered_set_of_excedence ml). (∀n. (an n ≤ xn n) ∧ (xn n ≤ bn n)) → ∀x:ml. tends0 ? (d2s ? ml an x) → tends0 ? (d2s ? ml bn x) → @@ -124,17 +158,11 @@ intros (R ml an bn xn H x Ha Hb); unfold tends0 in Ha Hb ⊢ %. unfold d2s in Ha intros (e He); elim (Ha ? He) (n1 H1); clear Ha; elim (Hb e He) (n2 H2); clear Hb; constructor 1; [apply (n1 + n2);] intros (n3 Hn3); -cut (n1 sym_plus in H3; assumption] - apply H3; rewrite > sym_plus in H4; simplify in H4; apply lt_S_to_lt; - rewrite > sym_plus in H4; assumption;] -elim (H1 ? Hcut) (H3 H4); clear Hcut; -cut (n2