X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Fsoftware%2Fmatita%2Flibrary%2FR%2Fr.ma;h=f2bca131ff45cd10f8ef4b953af5dc64037eaba5;hb=e880d6eab5e1700f4a625ddcd7d0fa8f0cce2dcc;hp=785ea12d4ebb2aac2754c46375afe47a4b985b16;hpb=820e0ea35f999236e0a55915c1d40cf745ffd6b9;p=helm.git diff --git a/helm/software/matita/library/R/r.ma b/helm/software/matita/library/R/r.ma index 785ea12d4..f2bca131f 100644 --- a/helm/software/matita/library/R/r.ma +++ b/helm/software/matita/library/R/r.ma @@ -59,6 +59,7 @@ axiom Rtimes_x_R1 : ∀x.x * R1 = x. axiom distr_Rtimes_Rplus_l : ∀x,y,z:R.x*(y+z) = x*y + x*z. (*pump 200.*) +pump 40. lemma distr_Rtimes_Rplus_r : ∀x,y,z:R.(x+y)*z = x*z + y*z. intros; autobatch; @@ -85,34 +86,20 @@ intros;cases H |rewrite > H2;assumption]*) qed. -axiom Rlt_plus_l : ∀x,y,z:R.x < y → z + x < z + y. -axiom Rlt_times_l : ∀x,y,z:R.x < y → R0 < z → z*x < z*y. +axiom Rlt_plus_l : ∀z,x,y:R.x < y → z + x < z + y. +axiom Rlt_times_l : ∀z,x,y:R.x < y → R0 < z → z*x < z*y. (* FIXME: these should be lemmata *) -axiom Rle_plus_l : ∀x,y,z:R.x ≤ y → z + x ≤ z + y. -axiom Rle_times_l : ∀x,y,z:R.x ≤ y → R0 < z → z*x ≤ z*y. +axiom Rle_plus_l : ∀z,x,y:R.x ≤ y → z + x ≤ z + y. +axiom Rle_times_l : ∀z,x,y:R.x ≤ y → R0 < z → z*x ≤ z*y. -lemma Rle_plus_r : ∀x,y,z:R.x ≤ y → x + z ≤ y + z. -intros; -applyS Rle_plus_l; -autobatch; -(*rewrite > sym_Rplus;rewrite > sym_Rplus in ⊢ (??%);*) -(*applyS Rle_plus_l; -applyS*) -cut ((x+z ≤ y+z) = (λx.(x+?≤ x+?)) ?);[5:simplify; - demodulate all; - autobatch paramodulation by sym_Rplus; - -applyS Rle_plus_l by sym_Rplus; - -cut ((x ≤ y) = (x+z ≤ y+z)); [2: - lapply (Rle_plus_l ?? z H); - autobatch paramodulation by sym_Rplus,Hletin; +lemma Rle_plus_r : ∀z,x,y:R.x ≤ y → x + z ≤ y + z. +intros; autobatch. qed. -lemma Rle_times_r : ∀x,y,z:R.x ≤ y → R0 < z → x*z ≤ y*z. +lemma Rle_times_r : ∀z,x,y:R.x ≤ y → R0 < z → x*z ≤ y*z. intros; -rewrite > sym_Rtimes;rewrite > sym_Rtimes in ⊢ (??%); +(* rewrite > sym_Rtimes;rewrite > sym_Rtimes in ⊢ (??%); *) autobatch; qed. @@ -217,18 +204,18 @@ intros;autobatch paramodulation; qed. *) lemma Rtimes_x_R0 : ∀x.x * R0 = R0. -intro; demodulate all. -(* +(*intro; autobatch paramodulation.*) +intros; rewrite < Rplus_x_R0 in ⊢ (? ? % ?); rewrite < (Rplus_Ropp (x*R0)) in ⊢ (? ? (? ? %) %); rewrite < assoc_Rplus; apply eq_f2;autobatch paramodulation; -*) + qed. lemma eq_Rtimes_Ropp_R1_Ropp : ∀x.x*(-R1) = -x. -intro. demodulate all. (* -auto paramodulation. +intro. (*autobatch paramodulation.*) + rewrite < Rplus_x_R0 in ⊢ (? ? % ?); rewrite < Rplus_x_R0 in ⊢ (? ? ? %); rewrite < (Rplus_Ropp x) in ⊢ (? ? % ?); @@ -238,7 +225,7 @@ rewrite < sym_Rplus in ⊢ (? ? (? ? %) ?); apply eq_f2 [reflexivity] rewrite < Rtimes_x_R1 in ⊢ (? ? (? % ?) ?); rewrite < distr_Rtimes_Rplus_l;autobatch paramodulation; -*) + qed. lemma Ropp_inv : ∀x.x = Ropp (Ropp x). @@ -355,11 +342,11 @@ qed. lemma lt_Rinv : ∀x,y.R0 < x → x < y → Rinv y < Rinv x. intros; -lapply (Rlt_times_l ? ? (Rinv x * Rinv y) H1) +lapply (Rlt_times_l (Rinv x * Rinv y) ? ? H1) [ lapply (Rinv_Rtimes_l x);[2: intro; destruct H2; autobatch;] lapply (Rinv_Rtimes_l y);[2: intro; destruct H2; autobatch;] - cut ((x \sup -1/y*x sym_Rtimes in Hletin;rewrite < assoc_Rtimes in Hletin; @@ -375,12 +362,13 @@ lapply (Rlt_times_l ? ? (Rinv x * Rinv y) H1) qed. lemma Rlt_plus_l_to_r : ∀a,b,c.a + b < c → a < c - b. -intros; lapply (Rlt_plus_l ?? (-b) H); applyS Hletin; +intros; +autobatch by H, (Rlt_plus_l (-b) (a+b) c); (* rewrite < Rplus_x_R0;rewrite < (Rplus_Ropp b); rewrite < assoc_Rplus; rewrite < sym_Rplus;rewrite < sym_Rplus in ⊢ (??%); -apply Rlt_plus_l;assumption; +apply (Rlt_plus_l (-b) (a+b) c);assumption; *) qed.