@@ -387,6 +387,12 @@ Qed.
387387Definition lebesgue_measure := measure_extension [the measure _ _ of hlength].
388388HB.instance Definition _ := Measure.on lebesgue_measure.
389389
390+ Let sigmaT_finite_lebesgue_measure : sigma_finite setT lebesgue_measure.
391+ Proof . exact/measure_extension_sigma_finite/hlength_sigma_finite. Qed .
392+
393+ HB.instance Definition _ := @isSigmaFinite.Build _ _ _
394+ lebesgue_measure sigmaT_finite_lebesgue_measure.
395+
390396End itv_semiRingOfSets.
391397Arguments hlength {R}.
392398#[global] Hint Extern 0 (0%:E <= hlength _) => solve[apply: hlength_ge0] : core.
@@ -1424,17 +1430,19 @@ by apply: measurableI => //; exact: open_measurable.
14241430Qed .
14251431
14261432Lemma closed_measurable (U : set R) : closed U -> measurable U.
1433+ Proof . by move/closed_openC/open_measurable/measurableC; rewrite setCK. Qed .
1434+
1435+ Lemma compact_measurable (A : set R) : compact A -> measurable A.
14271436Proof .
1428- move/closed_openC=> ?; rewrite -[U]setCK; apply: measurableC.
1429- exact: open_measurable.
1437+ by move/compact_closed => /(_ (@Rhausdorff R)); exact: closed_measurable.
14301438Qed .
14311439
14321440Lemma subspace_continuous_measurable_fun (D : set R) (f : subspace D -> R) :
14331441 measurable D -> continuous f -> measurable_fun D f.
14341442Proof .
14351443move=> mD /continuousP cf; apply: (measurability (RGenOpens.measurableE R)).
14361444move=> _ [_ [a [b ->] <-]]; apply: open_measurable_subspace => //.
1437- by exact/cf/interval_open.
1445+ exact/cf/interval_open.
14381446Qed .
14391447
14401448Corollary open_continuous_measurable_fun (D : set R) (f : R -> R) :
@@ -1975,9 +1983,9 @@ wlog : eps epspos D mD finD / exists ab : R * R, D `<=` `[ab.1, ab.2]%classic.
19751983 by apply: compact_closed => //; exact: Rhausdorff.
19761984 exact: interval_closed.
19771985 - by move=> ? [/VDab []].
1978- have -> : D `\` (V `&` `[a, b]) = ( D `&` `[a, b]) `\` V `|` D `\` `[a, b] .
1979- by rewrite setDIr eqEsubset; split => z /=; case: (z \in `[a, b]);
1980- (try tauto); try ( by case; case; left); try (by case; case; right) .
1986+ rewrite setDIr (setU_id2r (( D `&` `[a, b]) `\` V)); last first .
1987+ move => z ; rewrite setDE setCI setCK => -[?|?];
1988+ by apply/propext; split => [[]|[[]]] .
19811989 have mV : measurable V.
19821990 by apply: closed_measurable; apply: compact_closed => //; exact: Rhausdorff.
19831991 rewrite [eps]splitr EFinD (measureU mu) // ?lte_add //.
@@ -1999,10 +2007,53 @@ exists (`[a, b] `&` ~` U); split.
19992007 rewrite [_ `&` ~` _ ](iffRL (disjoints_subset _ _)) ?setCK // set0U.
20002008 move: mDeps; rewrite /D' ?setDE setCI setIUr setCK [U `&` D]setIC.
20012009 move => /(le_lt_trans _); apply; apply: le_measure; last by move => ?; right.
2002- by rewrite inE; apply: measurableI => //; apply : open_measurable.
2010+ by rewrite inE; apply: measurableI => //; exact : open_measurable.
20032011 rewrite inE; apply: measurableU.
2004- by (apply: measurableI; first exact: open_measurable); exact: measurableC.
2005- by apply: measurableI => //; apply: open_measurable.
2012+ by apply: measurableI; [exact: open_measurable|exact: measurableC].
2013+ by apply: measurableI => //; exact: open_measurable.
2014+ Qed .
2015+
2016+ Let lebesgue_regularity_innerE_bounded (A : set R) : measurable A ->
2017+ mu A < +oo ->
2018+ mu A = ereal_sup [set mu K | K in [set K | compact K /\ K `<=` A]].
2019+ Proof .
2020+ move=> mA muA; apply/eqP; rewrite eq_le; apply/andP; split; last first.
2021+ by apply: ub_ereal_sup => /= x [B /= [cB BA <-{x}]]; exact: le_outer_measure.
2022+ apply/lee_addgt0Pr => e e0.
2023+ have [B [cB BA /= ABe]] := lebesgue_regularity_inner mA muA e0.
2024+ rewrite -{1}(setDKU BA) (@le_trans _ _ (mu B + mu (A `\` B)))//.
2025+ by rewrite setUC outer_measureU2.
2026+ by rewrite lee_add//; [apply: ereal_sup_ub => /=; exists B|exact/ltW].
2027+ Qed .
2028+
2029+ Lemma lebesgue_regularity_inner_sup (D : set R) (eps : R) : measurable D ->
2030+ mu D = ereal_sup [set mu K | K in [set K | compact K /\ K `<=` D]].
2031+ Proof .
2032+ move=> mD; have [?|] := ltP (mu D) +oo.
2033+ exact: lebesgue_regularity_innerE_bounded.
2034+ have /sigma_finiteP [/= F RFU [Fsub ffin]] := sigma_finiteT mu.
2035+ rewrite leye_eq => /eqP /[dup] + ->.
2036+ have {1}-> : D = \bigcup_n (F n `&` D) by rewrite -setI_bigcupl -RFU setTI.
2037+ move=> FDp; apply/esym/eq_infty => M.
2038+ have : (fun n => mu (F n `&` D)) @ \oo --> +oo.
2039+ rewrite -FDp; apply: nondecreasing_cvg_mu.
2040+ - by move=> i; apply: measurableI => //; exact: (ffin i).1.
2041+ - by apply: bigcup_measurable => i _; exact: (measurableI _ _ (ffin i).1).
2042+ - by move=> n m nm; apply/subsetPset; apply: setSI; exact/subsetPset/Fsub.
2043+ move/cvgey_ge => /(_ (M + 1)%R) [N _ /(_ _ (lexx N))].
2044+ have [mFN FNoo] := ffin N.
2045+ have [] := @lebesgue_regularity_inner (F N `&` D) _ _ _ ltr01.
2046+ - exact: measurableI.
2047+ - by rewrite (le_lt_trans _ (ffin N).2)// measureIl.
2048+ move=> V [/[dup] /compact_measurable mV cptV VFND] FDV1 M1FD.
2049+ rewrite (@le_trans _ _ (mu V))//; last first.
2050+ apply: ereal_sup_ub; exists V => //=; split => //.
2051+ exact: (subset_trans VFND (@subIsetr _ _ _)).
2052+ rewrite -(@lee_add2lE _ 1)// {1}addeC -EFinD (le_trans M1FD)//.
2053+ rewrite /mu (@measureDI _ _ _ _ (F N `&` D) _ _ mV)/=; last exact: measurableI.
2054+ rewrite ltW// lte_le_add // ?ge0_fin_numE //; last first.
2055+ by rewrite measureIr//; apply: measurableI.
2056+ by rewrite -setIA (le_lt_trans _ (ffin N).2)// measureIl//; exact: measurableI.
20062057Qed .
20072058
20082059End lebesgue_regularity.
0 commit comments