Skip to content

Commit 81ded63

Browse files
committed
small simp
1 parent d381d8c commit 81ded63

File tree

1 file changed

+18
-36
lines changed

1 file changed

+18
-36
lines changed

theories/borel_hierarchy.v

Lines changed: 18 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -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.
197195
exists f.
198196
have 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.
206202
have 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.
228213
split.
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.
290272
apply/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

Comments
 (0)