@@ -383,9 +383,7 @@ Let nuA_d_ x : nu (A_ x) >= mine (d_ x * 2^-1%:E) 1.
383383Proof . by move: x => [[[? ?] ?]] []. Qed .
384384
385385Let nuA_ge0 x : 0 <= nu (A_ x).
386- Proof .
387- by rewrite (le_trans _ (nuA_d_ _))// /mine; case: ifP => // _; rewrite mule_ge0.
388- Qed .
386+ Proof . by rewrite (le_trans _ (nuA_d_ _))// le_minr lee01 andbT mule_ge0. Qed .
389387
390388Let subDD A := [set nu E | E in [set E | measurable E /\ E `<=` D `\` A] ].
391389
@@ -408,39 +406,62 @@ have /ereal_sup_gt/cid2[_ [B/= [mB BDA <- mnuB]]] : m < t_ A.
408406 by rewrite min_r ?ltey ?gt0_mulye ?leey.
409407 rewrite -(@fineK _ (t_ A)); last first.
410408 by rewrite ge0_fin_numE// ?(ltW d_gt0)// lt_neqAle dn1oo leey.
411- rewrite -EFinM minEFin lte_fin lt_minl; apply/orP; left.
409+ rewrite -EFinM -fine_min// lte_fin lt_minl; apply/orP; left.
412410 by rewrite ltr_pdivr_mulr// ltr_pmulr ?ltr1n// fine_gt0// d_gt0/= ltey.
413411by exists B; split => //; rewrite (le_trans _ (ltW mnuB)).
414412Qed .
415413
416- (* NB: move outside ? *)
417- Let mine_cvg_0_cvg_0 (x : (\bar R) ^nat) : (forall k, 0 <= x k) ->
418- (fun n => mine (x n * ( 2^-1)%:E) 1) --> 0 -> x --> 0 .
414+ (* TODO: generalize ? *)
415+ Let minr_cvg_0_cvg_0 (x : R ^nat) : (forall k, 0 <= x k)%R ->
416+ (fun n => minr (x n * 2^-1) 1)%R --> (0:R)%R -> x --> (0:R)%R .
419417Proof .
420- move=> x_ge0 /fine_cvgP[_] /[dup] mine_cvg_0.
421- move=> /(@cvgrPdist_lt _ [normedModType R of R^o])/(_ _ ltr01)[N _ hN].
422- have xfin : \forall n \near \oo, x n \is a fin_num.
423- near=> n; have /hN : (N <= n)%N by near: n; exists N.
424- rewrite sub0r normrN /= ger0_norm ?fine_ge0//; last first.
425- by rewrite le_minr mule_ge0//=.
426- rewrite /mine; case: ifPn => [+ _|_]; last by rewrite ltxx.
427- rewrite ge0_fin_numE// lte_pdivr_mulr// mul1e => /lt_le_trans; apply.
428- by rewrite leey.
429- apply/fine_cvgP; split => //.
418+ move=> x_ge0 minr_cvg.
430419apply/(@cvgrPdist_lt _ [normedModType R of R^o]) => _ /posnumP[e].
431- move: mine_cvg_0 => /(@cvgrPdist_lt _ [normedModType R of R^o]).
432420have : (0 < minr (e%:num / 2) 1)%R by rewrite lt_minr// ltr01 andbT divr_gt0.
433- move=> /[swap] /[apply] -[M _ hM].
421+ move/(@cvgrPdist_lt _ [normedModType R of R^o]) : minr_cvg => /[apply] -[M _ hM].
434422near=> n; rewrite sub0r normrN.
435423have /hM : (M <= n)%N by near: n; exists M.
436- rewrite sub0r normrN /mine/=; case: ifPn => [_|_].
437- rewrite fineM//=; last by near: n; exact: xfin.
438- rewrite normrM (@gtr0_norm _ 2^-1%R); last by rewrite invr_gt0.
439- rewrite ltr_pdivr_mulr// => /lt_le_trans; apply.
440- by rewrite minr_pmull// -mulrA mulVr ?unitfE// mulr1 le_minl lexx.
441- by rewrite ger0_norm//= lt_minr ltxx andbF.
424+ rewrite sub0r normrN !ger0_norm// ?le_minr ?divr_ge0//=.
425+ rewrite -[X in minr _ X](@divrr _ 2) ?unitfE -?minr_pmull//.
426+ rewrite -[X in (_ < minr _ X)%R](@divrr _ 2) ?unitfE -?minr_pmull//.
427+ by rewrite ltr_pmul2r//; exact: lt_min_lt.
428+ Unshelve. all: by end_near. Qed .
429+
430+ Let mine_cvg_0_cvg_fin_num (x : (\bar R)^nat) : (forall k, 0 <= x k) ->
431+ (fun n => mine (x n * (2^-1)%:E) 1) --> 0 ->
432+ \forall n \near \oo, x n \is a fin_num.
433+ Proof .
434+ move=> x_ge0 /fine_cvgP[_].
435+ move=> /(@cvgrPdist_lt _ [normedModType R of R^o])/(_ _ ltr01)[N _ hN].
436+ near=> n; have /hN : (N <= n)%N by near: n; exists N.
437+ rewrite sub0r normrN /= ger0_norm ?fine_ge0//; last first.
438+ by rewrite le_minr mule_ge0//=.
439+ by have := x_ge0 n; case: (x n) => //=; rewrite gt0_mulye//= ltxx.
442440Unshelve. all: by end_near. Qed .
443441
442+ Let mine_cvg_minr_cvg (x : (\bar R)^nat) : (forall k, 0 <= x k) ->
443+ (fun n => mine (x n * (2^-1)%:E) 1) --> 0 ->
444+ (fun n => minr ((fine \o x) n / 2) 1%R) --> (0:R)%R.
445+ Proof .
446+ move=> x_ge0 mine_cvg.
447+ apply: (cvg_trans _ (fine_cvg mine_cvg)).
448+ move/fine_cvgP : mine_cvg => [_ /=] /(@cvgrPdist_lt _ [normedModType R of R^o]).
449+ move=> /(_ _ ltr01)[N _ hN]; apply: near_eq_cvg; near=> n.
450+ have xnoo : x n < +oo.
451+ rewrite ltNge leye_eq; apply/eqP => xnoo.
452+ have /hN : (N <= n)%N by near: n; exists N.
453+ by rewrite /= sub0r normrN xnoo gt0_mulye//= normr1 ltxx.
454+ by rewrite /= -(@fineK _ (x n)) ?ge0_fin_numE//= -fine_min.
455+ Unshelve. all: by end_near. Qed .
456+
457+ Let mine_cvg_0_cvg_0 (x : (\bar R)^nat) : (forall k, 0 <= x k) ->
458+ (fun n => mine (x n * (2^-1)%:E) 1) --> 0 -> x --> 0.
459+ Proof .
460+ move=> x_ge0 h; apply/fine_cvgP; split; first exact: mine_cvg_0_cvg_fin_num.
461+ apply: (@minr_cvg_0_cvg_0 (fine \o x)) => //; last exact: mine_cvg_minr_cvg.
462+ by move=> k /=; rewrite fine_ge0.
463+ Qed .
464+
444465Lemma hahn_decomposition_lemma : measurable D ->
445466 {A | [/\ A `<=` D, negative_set nu A & nu A <= nu D]}.
446467Proof .
@@ -562,7 +583,7 @@ have /ereal_inf_lt/cid2[_ [B/= [mB BU] <-] nuBm] : s_ U < m.
562583 by rewrite max_r ?ltNye// gt0_mulNye// leNye.
563584 rewrite -(@fineK _ (s_ U)); last first.
564585 by rewrite le0_fin_numE// ?(ltW s_lt0)// lt_neqAle leNye eq_sym s0oo.
565- rewrite -EFinM maxEFin lte_fin lt_maxr; apply/orP; left.
586+ rewrite -EFinM -fine_max// lte_fin lt_maxr; apply/orP; left.
566587 by rewrite ltr_pdivl_mulr// gtr_nmulr ?ltr1n// fine_lt0// s_lt0/= ltNye andbT.
567588have [C [CB nsC nuCB]] := hahn_decomposition_lemma nu mB.
568589exists C; split => //; first exact: (subset_trans CB).
0 commit comments