@@ -188,57 +188,39 @@ have cf_sum n : continuous (f_sum n).
188188 rewrite big_nat_recr //=; apply: continuousD => //.
189189 apply/continuousM/cst_continuous.
190190 by case: (Hn n) => /(_ x).
191- have f_sumE x : f_sum ^~ x = [series f_n k x * 2^-k.+1]_k.
192- apply/boolp.funext => n.
193- rewrite /f_sum /series /mk_sequence.
194- exact: (big_morph (fun f => f x)).
195- pose f := fun x => limn (f_sum^~ x).
196- rewrite /= in f.
191+ have f_sumE x n : f_sum n x = [series f_n k x * 2^-k.+1]_k n
192+ by exact: (big_morph (@^~ x)).
193+ have f_sumE' x := boolp.funext (f_sumE x).
194+ pose f := fun x => limn (f_sum^~ x); rewrite /= in f.
197195exists f.
198196have ndf_sum y : {homo f_sum^~ y : a b / (a <= b)%N >-> a <= b}.
199197 move=> a b ab.
200- rewrite /f_sum.
201- rewrite (big_cat_nat _ ab) //= lerDl.
202- elim/big_rec: _ => //= i f0 _.
203- rewrite /GRing.add /= => /le_trans; apply.
204- rewrite lerDr mulr_ge0 //.
205- by rewrite invr_ge0 exprn_ge0.
198+ rewrite /f_sum (big_cat_nat _ ab) //= lerDl.
199+ rewrite (big_morph (@^~ y) (id1:=0) (op1:=GRing.add)) //=.
200+ rewrite sumr_ge0 // => i _.
201+ by rewrite mulr_ge0 // invr_ge0 exprn_ge0.
206202have Hcvg y : cvgn (f_sum^~ y).
207203 apply: nondecreasing_is_cvgn => //.
208204 exists 1 => z /= [m] _ <-.
209- (*rewrite -[f_sum m y]/(f_sum^~ y m) f_sumE.
210- have H1 : 1 = 2^-1 / (1 - 2^-1) :> R.
205+ have -> : 1 = 2^-1 / (1 - 2^-1) :> R.
211206 rewrite -[LHS](@mulfV _ (2^-1)) //; congr (_ / _).
212207 by rewrite [X in X - _](splitr 1) mul1r addrK.
213- rewrite {}[leRHS]H1.
214- apply: le_trans; last first.
215- apply: (geometric_le_lim m) => //.
208+ rewrite f_sumE.
209+ apply: le_trans (geometric_le_lim m _ _ _) => //; last first.
216210 by rewrite ltr_norml (@lt_trans _ _ 0) //= invf_lt1 // ltr1n.
217- rewrite /series ler_sum // => i _.
218- by rewrite /geometric /= -exprS -exprVn ler_piMl.*)
219- rewrite /f_sum.
220- apply: (@le_trans _ _ (1 - 2^-m)); last by rewrite gerBl invr_ge0 exprn_ge0.
221- elim: m => [|m IH]; first by rewrite big_geq // expr0 invr1 subrr.
222- rewrite big_nat_recr //=.
223- have Hm : f_n m y * 2 ^- m.+1 <= 2 ^- m.+1 by rewrite ler_piMl.
224- apply: (le_trans (lerD IH Hm)).
225- have -> : 2^- m = 2 * 2^-m.+1 :> R.
226- by rewrite exprS invfM mulrA mulfV // mul1r.
227- by rewrite -addrAC -{2}add1n {2}mulrnDr mulrDl !mul1r opprD !addrA addrK.
211+ rewrite ler_sum // => i _.
212+ by rewrite /geometric /= -exprS -exprVn ler_piMl.
228213split.
229214 move=> x Nfx.
230215 rewrite -filter_from_ballE.
231216 case => eps /= eps0 HB.
232217 pose n := (2 + truncn (- ln eps / ln 2))%N.
233218 have eps0' : eps / 2 > 0 by exact: divr_gt0.
234219 move/continuousP/(_ _ (ball_open (f_sum n x) eps0')) : (cf_sum n) => /= ofs.
235- rewrite nbhs_filterE.
236- rewrite fmapE.
237- rewrite nbhsE /=.
220+ rewrite nbhs_filterE fmapE nbhsE /=.
238221 set B := _ @^-1` _ in ofs.
239222 exists B.
240- split => //.
241- exact: ballxx.
223+ split => //; exact: ballxx.
242224 apply: subset_trans (preimage_subset (f:=f) HB).
243225 rewrite /B /preimage /ball => t /=.
244226 have Hf y :
@@ -257,7 +239,7 @@ split.
257239 rewrite -EFin_lim.
258240 apply/congr_lim/boolp.funext => k /=.
259241 exact/esym/big_morph.
260- by rewrite is_cvg_series_restrict -f_sumE.
242+ by rewrite is_cvg_series_restrict -f_sumE' .
261243 move=> feps.
262244 rewrite !Hf opprD addrA (addrAC (f_sum n x)) -(addrA (_ - _)).
263245 apply: (le_lt_trans (ler_normD _ _)).
@@ -270,7 +252,7 @@ split.
270252 have H2n : 0 <= 2^-n :> R by rewrite -exprVn exprn_ge0.
271253 rewrite -lee_fin.
272254 apply: le_trans (epsilon_trick0 xpredT H2n).
273- rewrite -EFin_lim; last by rewrite is_cvg_series_restrict -f_sumE.
255+ rewrite -EFin_lim; last by rewrite is_cvg_series_restrict -f_sumE' .
274256 under [EFin \o _]boolp.funext do
275257 rewrite /= (big_morph EFin (id1:=0) (op1:=GRing.add)) //.
276258 rewrite -nneseries_addn; last by move=> i; rewrite lee_fin mulr_ge0.
@@ -289,7 +271,7 @@ split.
289271 by rewrite invrN mulrN mulNr ltW // truncnS_gt.
290272apply/seteqP; split => x /= Hx.
291273 apply: EFin_inj.
292- rewrite -EFin_lim // f_sumE EFin_series /= eseries0 // => i _ _ /=.
274+ rewrite -EFin_lim // f_sumE' EFin_series /= eseries0 // => i _ _ /=.
293275 case: (Hn i) => _ _ /(_ (f_n i x)) /= => ->.
294276 by rewrite mul0r.
295277 by exists x.
0 commit comments