X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=matita%2Fmatita%2Flib%2Farithmetics%2Fbigops.ma;h=1ba35c62d31cbe04d1eb1aaae64b044ba64e87e9;hb=8db3579bec4d9a97af526f95a179587a2fbfe3e3;hp=50bf2443a142f4d6e8923f1e85a87fbf9d8b415d;hpb=d4e183088f0652c276fbd98272822af845aa9fd2;p=helm.git diff --git a/matita/matita/lib/arithmetics/bigops.ma b/matita/matita/lib/arithmetics/bigops.ma index 50bf2443a..1ba35c62d 100644 --- a/matita/matita/lib/arithmetics/bigops.ma +++ b/matita/matita/lib/arithmetics/bigops.ma @@ -163,7 +163,7 @@ op (\big[op,nil]_{i(commutative_plus c) +#a #b #c #lecb @sym_eq @plus_to_minus >(commutative_plus c) >associative_plus eq_minus_S_pred >S_pred + /2 by lt_plus_to_minus_r/] #Hcut +cases (le_to_or_lt_eq … lea) #Ha + [cases (true_or_false (p b)) #Hcase + [>bigop_Strue [2: >Hcase >(le_to_leb_true a b) // @le_S_S_to_le @Ha] + >(Hcut … (le_S_S_to_le … Ha)) + >bigop_Strue + [@eq_f2 + [@eq_f bigop_Sfalse [2: >Hcase cases (leb a b)//] + >(Hcut … (le_S_S_to_le … Ha)) >bigop_Sfalse + [@Hind @le_S_S_to_le // | (not_le_to_leb_false a i) // @lt_to_not_le // + ] +qed. + theorem bigop_sumI: ∀a,b,c,p,B.∀nil.∀op:Aop B nil.∀f:nat→B. a ≤ b → b ≤ c → \big[op,nil]_{i∈[a,c[ |p i}(f i) = @@ -214,8 +240,9 @@ theorem bigop_prod: ∀k1,k2,p1,p2,B.∀nil.∀op:Aop B nil.∀f: nat →nat → >div_plus_times /2 by monotonic_lt_minus_l/ >Hp1 >(mod_plus_times …) /2 by refl, monotonic_lt_minus_l, eq_f/ |>bigop_Sfalse // >Hind >(pad_bigop (S n*k2)) // @same_bigop - #i #lti @leb_elim // #lei cut (i = n*k2+(i-n*k2)) /2/ - #eqi >eqi in ⊢ (???%); >div_plus_times /2/ + #i #lti @leb_elim // #lei cut (i = n*k2+(i-n*k2)) /2 by plus_minus/ + #eqi >eqi in ⊢ (???%); >div_plus_times + /2 by refl, monotonic_lt_minus_l, trans_eq/ ] qed. @@ -331,8 +358,6 @@ theorem bigop_iso: ∀n1,n2,p1,p2,B.∀nil.∀op:ACop B nil.∀f1,f2. ] qed. -(* lemma div_mod_exchange: ∀i,n,m. i < n*m → i\n = i mod m. *) - (* commutation *) theorem bigop_commute: ∀n,m,p11,p12,p21,p22,B.∀nil.∀op:ACop B nil.∀f. 0 < n → 0 < m →