1- Require Import Reals Sums Lra Lia.
1+ Require Import ZArith Reals Sums Lra Lia.
22(* Require Import Coquelicot.Hierarchy Coquelicot.Series Coquelicot.Lim_seq Coquelicot.Rbar. *)
33Require Import Coquelicot.Coquelicot.
44Require Import LibUtils.
@@ -493,7 +493,7 @@ Proof.
493493 replace (S n2 - n1)%nat with ((S m - n1) + (S n2 - S m))%nat by lia.
494494 rewrite seq_plus.
495495 rewrite List.fold_right_app.
496- rewrite fold_right_plus_acc.
496+ rewrite (@ fold_right_plus_acc G) .
497497 now replace (n1 + (S m - n1))%nat with (S m) by lia.
498498Qed .
499499
534534 now simpl.
535535 + intros.
536536 unfold sum_n.
537- rewrite sum_split with (m := (nk-1)%nat); try lia.
537+ rewrite (@ sum_split R_AbelianGroup) with (m := (nk-1)%nat); try lia.
538538 apply Rplus_eq_compat_l.
539539 replace (S (nk - 1)) with (nk) by lia.
540540 apply sum_n_m_shift.
562562 cut (ex_lim_seq (fun n : nat => sum_n_m α 0 (nk + S n) - sum_n_m α 0 nk)).
563563 {
564564 apply ex_lim_seq_ext; intros.
565- rewrite (sum_split_plus α 0 nk (S n)); try lia.
565+ change ((@sum_n_m R_AbelianGroup α 0 (nk + S n) - @sum_n_m R_AbelianGroup α 0 nk) = @sum_n_m R_AbelianGroup α (S nk) (n + S nk)).
566+ rewrite (@sum_split_plus R_AbelianGroup α 0 nk (S n) ltac:(lia) ltac:(lia)).
566567 unfold plus; simpl.
567568 field_simplify.
568569 f_equal.
@@ -948,7 +949,7 @@ Proof.
948949 specialize (IHk H1).
949950 apply Rle_trans with (r2 := part_prod_n (pos_sq_fun F) (m + k) n); trivial.
950951 replace (m + S k)%nat with (S (m+k)%nat) by lia.
951- destruct (le_gt_dec (S (m+k)) n).
952+ destruct (Compare_dec. le_gt_dec (S (m+k)) n).
952953 + apply max_bounded1_pre_le; trivial.
953954 intros; apply pos_sq_bounded1; trivial.
954955 + rewrite (part_prod_n_1 (pos_sq_fun F) (S (m + k)%nat)) ; [|lia].
@@ -1110,7 +1111,7 @@ Section Dvoretsky.
11101111Theorem Dvoretzky4_0 (F: nat -> posreal) (sigma V : nat -> R) :
11111112 (forall (n:nat), V (S n) <= (F n) * (V n) + (sigma n)) ->
11121113 (forall (n:nat),
1113- V (S n) <= sum_n (fun k => (sigma k)*(part_prod_n F (S k) n)) n +
1114+ V (S n) <= @ sum_n R_AbelianGroup (fun k => (sigma k)*(part_prod_n F (S k) n)) n +
11141115 (V 0%nat)*(part_prod_n F 0 n)).
11151116Proof .
11161117 intros.
@@ -1145,8 +1146,8 @@ Qed.
11451146
11461147Lemma sum_bound_prod_A (F : nat -> posreal) (sigma : nat -> R) (A : R) (n m:nat) :
11471148 (forall r s, part_prod_n (pos_sq_fun F) r s <= A) ->
1148- sum_n_m (fun k => (Rsqr (sigma k))*(part_prod_n (pos_sq_fun F) (S k) n)) (S m) n <=
1149- (sum_n_m (fun k => Rsqr (sigma k)) (S m) n) * A.
1149+ @ sum_n_m R_AbelianGroup (fun k => (Rsqr (sigma k))*(part_prod_n (pos_sq_fun F) (S k) n)) (S m) n <=
1150+ (@ sum_n_m R_AbelianGroup (fun k => Rsqr (sigma k)) (S m) n) * A.
11501151Proof .
11511152 intros.
11521153 rewrite <- sum_n_m_mult_r with (a := A).
@@ -1160,8 +1161,8 @@ Qed.
11601161
11611162Lemma sum_bound3_max (F : nat -> posreal) (sigma : nat -> R) (n m:nat) :
11621163 (S m <= n)%nat ->
1163- sum_n (fun k => (Rsqr (sigma k))*(part_prod_n (pos_sq_fun F) (S k) n)) m <=
1164- (sum_n (fun k => (Rsqr (sigma k))) m) * (max_prod_fun (pos_sq_fun F) (S m) n).
1164+ @ sum_n R_AbelianGroup (fun k => (Rsqr (sigma k))*(part_prod_n (pos_sq_fun F) (S k) n)) m <=
1165+ (@ sum_n R_AbelianGroup (fun k => (Rsqr (sigma k))) m) * (max_prod_fun (pos_sq_fun F) (S m) n).
11651166Proof .
11661167 intros.
11671168 rewrite <- sum_n_mult_r with (a := (max_prod_fun (pos_sq_fun F) (S m) n)).
@@ -1176,15 +1177,16 @@ Theorem Dvoretzky4_8_5 (F : nat -> posreal) (sigma V: nat -> R) (n m:nat) (A:R):
11761177 (forall (n:nat), Rsqr (V (S n)) <= (pos_sq_fun F) n * Rsqr (V n) + Rsqr (sigma n)) ->
11771178 (m<n)%nat ->
11781179 Rsqr (V (S n)) <=
1179- ( sum_n_m (fun k => Rsqr (sigma k)) (S m) n) * A +
1180- (Rsqr (V 0%nat) + sum_n (fun k => (Rsqr (sigma k))) m) *
1180+ ( @ sum_n_m R_AbelianGroup (fun k => Rsqr (sigma k)) (S m) n) * A +
1181+ (Rsqr (V 0%nat) + @ sum_n R_AbelianGroup (fun k => (Rsqr (sigma k))) m) *
11811182 (max_prod_fun (pos_sq_fun F) (S m) n).
11821183Proof .
11831184 intros F1 Vsqle mn.
11841185 generalize (Dvoretzky4_0 (pos_sq_fun F) (fun k => Rsqr(sigma k)) (fun k => Rsqr (V k))).
11851186 intros.
11861187 specialize (H Vsqle n).
11871188 unfold sum_n in H.
1189+
11881190 rewrite (sum_split _ _ _ m) in H; trivial; [|lia].
11891191 generalize (sum_bound_prod_A F sigma A n m F1); intros.
11901192 generalize (max_prod_le (pos_sq_fun F) 0 (S m) n); intros.
@@ -1204,8 +1206,8 @@ Lemma sum_bound_prod_A_sigma1
12041206 (F : nat -> posreal) (sigma : nat -> R) (A : R) (n m:nat) :
12051207 (forall r s, part_prod_n (pos_sq_fun F) r s <= A) ->
12061208 (forall n, 0 <= sigma n) ->
1207- sum_n_m (fun k => (sigma k)*(part_prod_n (pos_sq_fun F) (S k) n)) (S m) n <=
1208- (sum_n_m sigma (S m) n) * A.
1209+ @ sum_n_m R_AbelianGroup (fun k => (sigma k)*(part_prod_n (pos_sq_fun F) (S k) n)) (S m) n <=
1210+ (@ sum_n_m R_AbelianGroup sigma (S m) n) * A.
12091211Proof .
12101212 intros.
12111213 rewrite <- sum_n_m_mult_r with (a := A).
@@ -1218,8 +1220,8 @@ Qed.
12181220Lemma sum_bound3_max_sigma1 (F : nat -> posreal) (sigma : nat -> R) (n m:nat) :
12191221 (S m <= n)%nat ->
12201222 (forall n, 0 <= sigma n) ->
1221- sum_n (fun k => (sigma k)*(part_prod_n (pos_sq_fun F) (S k) n)) m <=
1222- (sum_n sigma m) * (max_prod_fun (pos_sq_fun F) (S m) n).
1223+ @ sum_n R_AbelianGroup (fun k => (sigma k)*(part_prod_n (pos_sq_fun F) (S k) n)) m <=
1224+ (@ sum_n R_AbelianGroup sigma m) * (max_prod_fun (pos_sq_fun F) (S m) n).
12231225Proof .
12241226 intros.
12251227 rewrite <- sum_n_mult_r with (a := (max_prod_fun (pos_sq_fun F) (S m) n)).
@@ -1238,8 +1240,8 @@ Theorem Dvoretzky4_8_5_V1 (F : nat -> posreal) (sigma V: nat -> R) (n m:nat) (A:
12381240 (forall (n:nat), 0 <= sigma n) ->
12391241 (m<n)%nat ->
12401242 V (S n) <=
1241- (sum_n_m sigma (S m) n) * A +
1242- (V 0%nat + sum_n sigma m) *
1243+ (@ sum_n_m R_AbelianGroup sigma (S m) n) * A +
1244+ (V 0%nat + @ sum_n R_AbelianGroup sigma m) *
12431245 (max_prod_fun (pos_sq_fun F) (S m) n).
12441246Proof .
12451247 intros F1 Vle Vpos sigma_pos mn.
@@ -1269,12 +1271,12 @@ Theorem Dvoretzky4_8_5_1 (F : nat -> posreal) (sigma V: nat -> R) (n m:nat) (A s
12691271 is_series (fun n => Rsqr (sigma n)) sigmasum ->
12701272 (m<n)%nat ->
12711273 Rsqr (V (S n)) <=
1272- (sum_n_m (fun k => Rsqr (sigma k)) (S m) n) * A +
1274+ (@ sum_n_m R_AbelianGroup (fun k => Rsqr (sigma k)) (S m) n) * A +
12731275 (Rsqr (V 0%nat) + sigmasum) * (max_prod_fun (pos_sq_fun F) (S m) n).
12741276Proof .
12751277 intros.
12761278 generalize (Dvoretzky4_8_5 F sigma V n m A H H0 H2); intros.
1277- assert (sum_n (fun k : nat => (sigma k)²) m <= sigmasum).
1279+ assert (@ sum_n R_AbelianGroup (fun k : nat => (sigma k)²) m <= sigmasum).
12781280 - assert (H1' := H1).
12791281 apply is_series_unique in H1.
12801282 assert (ex_series (fun k : nat => (sigma k)²)).
@@ -1300,12 +1302,12 @@ Theorem Dvoretzky4_8_5_1_V1 (F : nat -> posreal) (sigma V: nat -> R) (n m:nat) (
13001302 is_series sigma sigmasum ->
13011303 (m<n)%nat ->
13021304 V (S n) <=
1303- (sum_n_m sigma (S m) n) * A +
1305+ (@ sum_n_m R_AbelianGroup sigma (S m) n) * A +
13041306 (V 0%nat + sigmasum) * (max_prod_fun (pos_sq_fun F) (S m) n).
13051307Proof .
13061308 intros.
13071309 generalize (Dvoretzky4_8_5_V1 F sigma V n m A H H0 H2 H1 H4); intros.
1308- assert (sum_n sigma m <= sigmasum).
1310+ assert (@ sum_n R_AbelianGroup sigma m <= sigmasum).
13091311 - assert (H3' := H3).
13101312 apply is_series_unique in H3.
13111313 assert (ex_series sigma).
0 commit comments