@@ -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 *)
@@ -1767,6 +1767,42 @@ Proof. by move=> mf; exact/(emeasurable_funM _ mf)/measurable_fun_cst. Qed.
17671767
17681768End emeasurable_fun.
17691769
1770+ Section measurable_fun_measurable2.
1771+ Local Open Scope ereal_scope.
1772+ Context d (T : measurableType d) (R : realType).
1773+ Variables (D : set T) (mD : measurable D).
1774+ Implicit Types f g : T -> \bar R.
1775+
1776+ Lemma emeasurable_fun_lt f g : measurable_fun D f -> measurable_fun D g ->
1777+ measurable (D `&` [set x | f x < g x]).
1778+ Proof .
1779+ move=> mf mg; under eq_set do rewrite -sube_gt0.
1780+ by apply: emeasurable_fun_o_infty => //; exact: emeasurable_funB.
1781+ Qed .
1782+
1783+ Lemma emeasurable_fun_le f g : measurable_fun D f -> measurable_fun D g ->
1784+ measurable (D `&` [set x | f x <= g x]).
1785+ Proof .
1786+ move=> mf mg; under eq_set do rewrite -sube_le0.
1787+ by apply: emeasurable_fun_infty_c => //; exact: emeasurable_funB.
1788+ Qed .
1789+
1790+ Lemma emeasurable_fun_eq f g : measurable_fun D f -> measurable_fun D g ->
1791+ measurable (D `&` [set x | f x = g x]).
1792+ Proof .
1793+ move=> mf mg; rewrite set_eq_le setIIr.
1794+ by apply: measurableI; apply: emeasurable_fun_le.
1795+ Qed .
1796+
1797+ Lemma emeasurable_fun_neq f g : measurable_fun D f -> measurable_fun D g ->
1798+ measurable (D `&` [set x | f x != g x]).
1799+ Proof .
1800+ move=> mf mg; rewrite set_neq_lt setIUr.
1801+ by apply: measurableU; exact: emeasurable_fun_lt.
1802+ Qed .
1803+
1804+ End measurable_fun_measurable2.
1805+
17701806Section ge0_integral_sum.
17711807Local Open Scope ereal_scope.
17721808Context d (T : measurableType d) (R : realType).
@@ -4039,6 +4075,72 @@ Qed.
40394075
40404076End ae_ge0_le_integral.
40414077
4078+ Section integral_ae_eq.
4079+ Local Open Scope ereal_scope.
4080+ Context d (T : measurableType d) (R : realType) (mu : {measure set T -> \bar R}).
4081+
4082+ Let integral_measure_lt (D : set T) (mD : measurable D) (g f : T -> \bar R) :
4083+ mu.-integrable D f -> mu.-integrable D g ->
4084+ (forall E, measurable E -> \int[mu]_(x in E) f x = \int[mu]_(x in E) g x) ->
4085+ mu (D `&` [set x | g x < f x]) = 0.
4086+ Proof .
4087+ move=> mf mg fg; pose E j := D `&` [set x | f x - g x >= j.+1%:R^-1%:E].
4088+ have mE j : measurable (E j).
4089+ rewrite /E; apply: emeasurable_fun_le => //; first exact: measurable_fun_cst.
4090+ exact/(emeasurable_funD mf.1)/(emeasurable_funN _ (mg.1)).
4091+ have muE j : mu (E j) = 0.
4092+ apply/eqP; rewrite eq_le measure_ge0// andbT.
4093+ have fg0 : \int[mu]_(x in E j) (f \- g) x = 0.
4094+ rewrite integralB//; last 2 first.
4095+ by apply: integrableS mf => //; exact: subIsetl.
4096+ by apply: integrableS mg => //; exact: subIsetl.
4097+ rewrite fg// subee// fin_num_abs (le_lt_trans (le_abse_integral _ _ _))//.
4098+ by apply: measurable_funS mg.1 => //; first exact: subIsetl.
4099+ apply: le_lt_trans mg.2; apply: subset_integral => //; last exact: subIsetl.
4100+ exact: measurable_funT_comp mg.1.
4101+ suff : mu (E j) <= j.+1%:R%:E * \int[mu]_(x in E j) (f \- g) x.
4102+ by rewrite fg0 mule0.
4103+ apply: (@le_trans _ _ (j.+1%:R%:E * \int[mu]_(x in E j) j.+1%:R^-1%:E)).
4104+ by rewrite integral_cst// muleA -EFinM divrr ?unitfE// mul1e.
4105+ rewrite lee_pmul//; first exact: integral_ge0.
4106+ apply: ge0_le_integral => //; [exact: measurable_fun_cst| | |by move=> x []].
4107+ - by move=> x [_/=]; exact: le_trans.
4108+ - apply: emeasurable_funB.
4109+ + by apply: measurable_funS mf.1 => //; exact: subIsetl.
4110+ + by apply: measurable_funS mg.1 => //; exact: subIsetl.
4111+ have nd_E : {homo E : n0 m / (n0 <= m)%N >-> (n0 <= m)%O}.
4112+ move=> i j ij; apply/subsetPset => x [Dx /= ifg]; split => //.
4113+ by move: ifg; apply: le_trans; rewrite lee_fin lef_pinv// ?posrE// ler_nat.
4114+ rewrite set_lte_bigcup.
4115+ have /cvg_lim h1 : mu \o E --> 0 by apply: cvg_near_cst; exact: nearW.
4116+ have := @nondecreasing_cvg_mu _ _ _ mu E mE (bigcupT_measurable E mE) nd_E.
4117+ by move/cvg_lim => h2; rewrite setI_bigcupr -h2// h1.
4118+ Qed .
4119+
4120+ Lemma integral_ae_eq (D : set T) (mD : measurable D) (g f : T -> \bar R) :
4121+ mu.-integrable D f -> mu.-integrable D g ->
4122+ (forall E, measurable E -> \int[mu]_(x in E) f x = \int[mu]_(x in E) g x) ->
4123+ ae_eq mu D f g.
4124+ Proof .
4125+ move=> mf mg fg.
4126+ have mugf : mu (D `&` [set x | g x < f x]) = 0 by exact: integral_measure_lt.
4127+ have mufg : mu (D `&` [set x | f x < g x]) = 0.
4128+ by apply: integral_measure_lt => // E mE; rewrite fg.
4129+ have h : ~` [set x | D x -> f x = g x] = D `&` [set x | f x != g x].
4130+ apply/seteqP; split => [x/= /not_implyP[? /eqP]//|x/= [Dx fgx]].
4131+ by apply/not_implyP; split => //; exact/eqP.
4132+ apply/negligibleP.
4133+ by rewrite h; apply: emeasurable_fun_neq => //; [case: mf|case: mg].
4134+ rewrite h set_neq_lt setIUr measureU//.
4135+ - by rewrite [X in X + _]mufg add0e [LHS]mugf.
4136+ - by apply: emeasurable_fun_lt => //; [case: mf|case: mg].
4137+ - by apply: emeasurable_fun_lt => //; [case: mg|case: mf].
4138+ - apply/seteqP; split => [x [[Dx/= + [_]]]|//].
4139+ by move=> /lt_trans => /[apply]; rewrite ltxx.
4140+ Qed .
4141+
4142+ End integral_ae_eq.
4143+
40424144(***************************************************************************** *)
40434145(* * product measure *)
40444146(***************************************************************************** *)
0 commit comments