@@ -3,8 +3,8 @@ From HB Require Import structures.
33From mathcomp Require Import all_ssreflect ssralg ssrnum ssrint interval finmap.
44From mathcomp.classical Require Import boolp classical_sets functions.
55From mathcomp.classical Require Import cardinality fsbigop mathcomp_extra.
6- Require Import signed reals ereal topology normedtype sequences esum measure .
7- Require Import lebesgue_measure numfun.
6+ Require Import signed reals ereal topology normedtype sequences real_interval .
7+ Require Import esum measure lebesgue_measure numfun.
88
99(***************************************************************************** *)
1010(* Lebesgue Integral *)
@@ -1858,6 +1858,42 @@ Proof. by move=> mf; exact/(emeasurable_funM _ mf)/measurable_fun_cst. Qed.
18581858
18591859End emeasurable_fun.
18601860
1861+ Section measurable_fun_measurable2.
1862+ Local Open Scope ereal_scope.
1863+ Context d (T : measurableType d) (R : realType).
1864+ Variables (D : set T) (mD : measurable D).
1865+ Implicit Types f g : T -> \bar R.
1866+
1867+ Lemma emeasurable_fun_lt f g : measurable_fun D f -> measurable_fun D g ->
1868+ measurable (D `&` [set x | f x < g x]).
1869+ Proof .
1870+ move=> mf mg; under eq_set do rewrite -sube_gt0.
1871+ by apply: emeasurable_fun_o_infty => //; exact: emeasurable_funB.
1872+ Qed .
1873+
1874+ Lemma emeasurable_fun_le f g : measurable_fun D f -> measurable_fun D g ->
1875+ measurable (D `&` [set x | f x <= g x]).
1876+ Proof .
1877+ move=> mf mg; under eq_set do rewrite -sube_le0.
1878+ by apply: emeasurable_fun_infty_c => //; exact: emeasurable_funB.
1879+ Qed .
1880+
1881+ Lemma emeasurable_fun_eq f g : measurable_fun D f -> measurable_fun D g ->
1882+ measurable (D `&` [set x | f x = g x]).
1883+ Proof .
1884+ move=> mf mg; rewrite set_eq_le setIIr.
1885+ by apply: measurableI; apply: emeasurable_fun_le.
1886+ Qed .
1887+
1888+ Lemma emeasurable_fun_neq f g : measurable_fun D f -> measurable_fun D g ->
1889+ measurable (D `&` [set x | f x != g x]).
1890+ Proof .
1891+ move=> mf mg; rewrite set_neq_lt setIUr.
1892+ by apply: measurableU; exact: emeasurable_fun_lt.
1893+ Qed .
1894+
1895+ End measurable_fun_measurable2.
1896+
18611897Section ge0_integral_sum.
18621898Local Open Scope ereal_scope.
18631899Context d (T : measurableType d) (R : realType).
@@ -4132,6 +4168,72 @@ Qed.
41324168
41334169End ae_ge0_le_integral.
41344170
4171+ Section integral_ae_eq.
4172+ Local Open Scope ereal_scope.
4173+ Context d (T : measurableType d) (R : realType) (mu : {measure set T -> \bar R}).
4174+
4175+ Let integral_measure_lt (D : set T) (mD : measurable D) (g f : T -> \bar R) :
4176+ mu.-integrable D f -> mu.-integrable D g ->
4177+ (forall E, measurable E -> \int[mu]_(x in E) f x = \int[mu]_(x in E) g x) ->
4178+ mu (D `&` [set x | g x < f x]) = 0.
4179+ Proof .
4180+ move=> mf mg fg; pose E j := D `&` [set x | f x - g x >= j.+1%:R^-1%:E].
4181+ have mE j : measurable (E j).
4182+ rewrite /E; apply: emeasurable_fun_le => //; first exact: measurable_fun_cst.
4183+ by apply/(emeasurable_funD mf.1)/emeasurable_funN; case: mg.
4184+ have muE j : mu (E j) = 0.
4185+ apply/eqP; rewrite eq_le measure_ge0// andbT.
4186+ have fg0 : \int[mu]_(x in E j) (f \- g) x = 0.
4187+ rewrite integralB//; last 2 first.
4188+ by apply: integrableS mf => //; exact: subIsetl.
4189+ by apply: integrableS mg => //; exact: subIsetl.
4190+ rewrite fg// subee// fin_num_abs (le_lt_trans (le_abse_integral _ _ _))//.
4191+ by apply: measurable_funS mg.1 => //; first exact: subIsetl.
4192+ apply: le_lt_trans mg.2; apply: subset_integral => //; last exact: subIsetl.
4193+ exact: measurable_funT_comp mg.1.
4194+ suff : mu (E j) <= j.+1%:R%:E * \int[mu]_(x in E j) (f \- g) x.
4195+ by rewrite fg0 mule0.
4196+ apply: (@le_trans _ _ (j.+1%:R%:E * \int[mu]_(x in E j) j.+1%:R^-1%:E)).
4197+ by rewrite integral_cst// muleA -EFinM divrr ?unitfE// mul1e.
4198+ rewrite lee_pmul//; first exact: integral_ge0.
4199+ apply: ge0_le_integral => //; [exact: measurable_fun_cst| | |by move=> x []].
4200+ - by move=> x [_/=]; exact: le_trans.
4201+ - apply: emeasurable_funB.
4202+ + by apply: measurable_funS mf.1 => //; exact: subIsetl.
4203+ + by apply: measurable_funS mg.1 => //; exact: subIsetl.
4204+ have nd_E : {homo E : n0 m / (n0 <= m)%N >-> (n0 <= m)%O}.
4205+ move=> i j ij; apply/subsetPset => x [Dx /= ifg]; split => //.
4206+ by move: ifg; apply: le_trans; rewrite lee_fin lef_pinv// ?posrE// ler_nat.
4207+ rewrite set_lte_bigcup.
4208+ have /cvg_lim h1 : mu \o E --> 0 by apply: cvg_near_cst; exact: nearW.
4209+ have := @nondecreasing_cvg_mu _ _ _ mu E mE (bigcupT_measurable E mE) nd_E.
4210+ by move/cvg_lim => h2; rewrite setI_bigcupr -h2// h1.
4211+ Qed .
4212+
4213+ Lemma integral_ae_eq (D : set T) (mD : measurable D) (g f : T -> \bar R) :
4214+ mu.-integrable D f -> mu.-integrable D g ->
4215+ (forall E, measurable E -> \int[mu]_(x in E) f x = \int[mu]_(x in E) g x) ->
4216+ ae_eq mu D f g.
4217+ Proof .
4218+ move=> mf mg fg.
4219+ have mugf : mu (D `&` [set x | g x < f x]) = 0 by exact: integral_measure_lt.
4220+ have mufg : mu (D `&` [set x | f x < g x]) = 0.
4221+ by apply: integral_measure_lt => // E mE; rewrite fg.
4222+ have h : ~` [set x | D x -> f x = g x] = D `&` [set x | f x != g x].
4223+ apply/seteqP; split => [x/= /not_implyP[? /eqP]//|x/= [Dx fgx]].
4224+ by apply/not_implyP; split => //; exact/eqP.
4225+ apply/negligibleP.
4226+ by rewrite h; apply: emeasurable_fun_neq => //; [case: mf|case: mg].
4227+ rewrite h set_neq_lt setIUr measureU//.
4228+ - by rewrite [X in X + _]mufg add0e [LHS]mugf.
4229+ - by apply: emeasurable_fun_lt => //; [case: mf|case: mg].
4230+ - by apply: emeasurable_fun_lt => //; [case: mg|case: mf].
4231+ - apply/seteqP; split => [x [[Dx/= + [_]]]|//].
4232+ by move=> /lt_trans => /[apply]; rewrite ltxx.
4233+ Qed .
4234+
4235+ End integral_ae_eq.
4236+
41354237(***************************************************************************** *)
41364238(* * product measure *)
41374239(***************************************************************************** *)
0 commit comments