@@ -65,7 +65,8 @@ From mathcomp Require Import lebesgue_measure lebesgue_integral.
6565(* decomposition nuPN: hahn_decomposition nu P N *)
6666(* charge_variation nuPN == variation of the charge nu *)
6767(* := jordan_pos nuPN \+ jordan_neg nuPN *)
68- (* induced intf == charge induced by a function f : T -> \bar R *)
68+ (* charge_dominates mu nuPN := content_dominates mu (charge_variation nuPN) *)
69+ (* induced_charge intf == charge induced by a function f : T -> \bar R *)
6970(* R has type realType; T is a measurableType. *)
7071(* intf is a proof that f is integrable over *)
7172(* [set: T] *)
@@ -429,24 +430,27 @@ HB.instance Definition _ := isCharge.Build _ _ _ cscale
429430End charge_scale.
430431
431432Lemma dominates_cscalel d (T : measurableType d) (R : realType)
432- (mu : set T -> \bar R)
433+ (mu : {measure set T -> \bar R} )
433434 (nu : {charge set T -> \bar R})
434435 (c : R) : nu `<< mu -> cscale c nu `<< mu.
435- Proof . by move=> numu E mE /numu; rewrite /cscale => ->//; rewrite mule0. Qed .
436+ Proof .
437+ move=> /null_content_dominatesP numu; apply/null_content_dominatesP => E mE.
438+ by move/(numu _ mE) => E0; apply/eqP; rewrite mule_eq0 eqe E0/= eqxx orbT.
439+ Qed .
436440
437441Lemma dominates_cscaler d (T : measurableType d) (R : realType)
438442 (nu : {charge set T -> \bar R})
439443 (mu : set T -> \bar R)
440444 (c : R) : c != 0%R -> mu `<< nu -> mu `<< cscale c nu.
441445Proof .
442- move=> /negbTE c0 munu E mE /eqP; rewrite /cscale mule_eq0 eqe c0/= .
443- by move=> /eqP/munu; exact .
446+ move=> /negbTE c0 /null_dominates_trans; apply => E nE A mA AE .
447+ by have /eqP := nE A mA AE; rewrite mule_eq0 eqe c0/= => /eqP .
444448Qed .
445449
446450Section charge_opp.
447451Local Open Scope ereal_scope.
448452Context d (T : measurableType d) (R : realType).
449- Variables ( nu : {charge set T -> \bar R}) .
453+ Variable nu : {charge set T -> \bar R}.
450454
451455Definition copp := \- nu.
452456
@@ -513,7 +517,9 @@ Lemma dominates_cadd d (T : measurableType d) (R : realType)
513517 nu0 `<< mu -> nu1 `<< mu ->
514518 cadd nu0 nu1 `<< mu.
515519Proof .
516- by move=> nu0mu nu1mu A mA A0; rewrite /cadd nu0mu// nu1mu// adde0.
520+ move=> /null_content_dominatesP nu0mu.
521+ move=> /null_content_dominatesP nu1mu A nA A0 mA0 A0A.
522+ by have muA0 := nA _ mA0 A0A; rewrite /cadd nu0mu// nu1mu// adde0.
517523Qed .
518524
519525Section pushforward_charge.
@@ -558,18 +564,15 @@ HB.instance Definition _ := isCharge.Build _ _ _
558564
559565HB.end .
560566
561- Section dominates_pushforward.
562-
563567Lemma dominates_pushforward d d' (T : measurableType d) (T' : measurableType d')
564568 (R : realType) (mu : {measure set T -> \bar R})
565569 (nu : {charge set T -> \bar R}) (f : T -> T') (mf : measurable_fun setT f) :
566570 nu `<< mu -> pushforward nu f `<< pushforward mu f.
567571Proof .
568- by move=> numu A mA; apply: numu; rewrite -[X in measurable X]setTI; exact: mf.
572+ move=> /null_content_dominatesP numu; apply/null_content_dominatesP => A mA.
573+ by apply: numu; rewrite -[X in measurable X]setTI; exact: mf.
569574Qed .
570575
571- End dominates_pushforward.
572-
573576Section positive_negative_set.
574577Context d (T : semiRingOfSetsType d) (R : numDomainType).
575578Implicit Types nu : set T -> \bar R.
@@ -1016,7 +1019,9 @@ Qed.
10161019Lemma jordan_pos_dominates (mu : {measure set T -> \bar R}) :
10171020 nu `<< mu -> jordan_pos `<< mu.
10181021Proof .
1019- move=> nu_mu A mA muA0; have := nu_mu A mA muA0.
1022+ move=> /null_content_dominatesP nu_mu.
1023+ apply/null_content_dominatesP => A mA muA0.
1024+ have := nu_mu A mA muA0.
10201025rewrite jordan_posE// cjordan_posE /crestr0 mem_set// /crestr/=.
10211026have mAP : measurable (A `&` P) by exact: measurableI.
10221027suff : mu (A `&` P) = 0 by move/(nu_mu _ mAP) => ->.
@@ -1026,7 +1031,9 @@ Qed.
10261031Lemma jordan_neg_dominates (mu : {measure set T -> \bar R}) :
10271032 nu `<< mu -> jordan_neg `<< mu.
10281033Proof .
1029- move=> nu_mu A mA muA0; have := nu_mu A mA muA0.
1034+ move=> /null_content_dominatesP nu_mu.
1035+ apply/null_content_dominatesP => A mA muA0.
1036+ have := nu_mu A mA muA0.
10301037rewrite jordan_negE// cjordan_negE /crestr0 mem_set// /crestr/=.
10311038have mAN : measurable (A `&` N) by exact: measurableI.
10321039suff : mu (A `&` N) = 0 by move=> /(nu_mu _ mAN) ->; rewrite oppe0.
@@ -1075,35 +1082,64 @@ HB.instance Definition _ := isCharge.Build _ _ _ mu
10751082
10761083End charge_variation.
10771084
1078- Lemma abse_charge_variation d (T : measurableType d) (R : realType)
1079- (nu : {charge set T -> \bar R}) P N (PN : hahn_decomposition nu P N) A :
1080- measurable A -> `|nu A| <= charge_variation PN A.
1081- Proof .
1082- move=> mA.
1083- rewrite (jordan_decomp PN mA) /cadd/= cscaleN1 /charge_variation.
1084- by rewrite (le_trans (lee_abs_sub _ _))// !gee0_abs.
1085- Qed .
1085+ Definition charge_dominates d (T : measurableType d) {R : realType}
1086+ (mu : {content set T -> \bar R}) (nu : {charge set T -> \bar R})
1087+ (P N : set T) (nuPN : hahn_decomposition nu P N) :=
1088+ content_dominates mu (charge_variation nuPN).
10861089
10871090Section charge_variation_continuous.
10881091Local Open Scope ereal_scope.
1089- Context {R : realType} d (T : measurableType d).
1092+ Context d (T : measurableType d) {R : realType} .
10901093Variable nu : {charge set T -> \bar R}.
10911094Variables (P N : set T) (nuPN : hahn_decomposition nu P N).
10921095
1093- Lemma dominates_charge_variation (mu : {measure set T -> \bar R}) :
1096+ Lemma abse_charge_variation A :
1097+ measurable A -> `|nu A| <= charge_variation nuPN A.
1098+ Proof .
1099+ move=> mA.
1100+ rewrite (jordan_decomp nuPN mA) /cadd/= cscaleN1 /charge_variation.
1101+ by rewrite (le_trans (lee_abs_sub _ _))// !gee0_abs.
1102+ Qed .
1103+
1104+ Lemma __deprecated__dominates_charge_variation (mu : {measure set T -> \bar R}) :
10941105 nu `<< mu -> charge_variation nuPN `<< mu.
10951106Proof .
1096- move=> numu A mA muA0.
1097- rewrite /charge_variation/= (jordan_pos_dominates nuPN numu)// add0e.
1098- by rewrite (jordan_neg_dominates nuPN numu).
1107+ move=> /[dup]numu /null_content_dominatesP nu0mu0.
1108+ apply/null_content_dominatesP => A mA muA0; rewrite /charge_variation/=.
1109+ have /null_content_dominatesP ->// := jordan_pos_dominates nuPN numu.
1110+ rewrite add0e.
1111+ by have /null_content_dominatesP -> := jordan_neg_dominates nuPN numu.
1112+ Qed .
1113+
1114+ Lemma null_charge_dominatesP (mu : {measure set T -> \bar R}) :
1115+ nu `<< mu <-> charge_dominates mu nuPN.
1116+ Proof .
1117+ split => [|numu].
1118+ - move=> /[dup]numu /null_content_dominatesP nu0mu0.
1119+ move=> A mA muA0; rewrite /charge_variation/=.
1120+ have /null_content_dominatesP ->// := jordan_pos_dominates nuPN numu.
1121+ rewrite add0e.
1122+ by have /null_content_dominatesP -> := jordan_neg_dominates nuPN numu.
1123+ - apply/null_content_dominatesP => A mA /numu => /(_ mA) nuA0.
1124+ apply/eqP; rewrite -abse_eq0 eq_le abse_ge0 andbT.
1125+ by rewrite -nuA0 abse_charge_variation.
1126+ Qed .
1127+
1128+ Lemma content_charge_dominatesP (mu : {measure set T -> \bar R}) :
1129+ content_dominates mu nu <-> charge_dominates mu nuPN.
1130+ Proof .
1131+ split.
1132+ - by move/null_content_dominatesP/null_charge_dominatesP.
1133+ - by move/null_charge_dominatesP/null_content_dominatesP.
10991134Qed .
11001135
11011136Lemma charge_variation_continuous (mu : {measure set T -> \bar R}) :
11021137 nu `<< mu -> forall e : R, (0 < e)%R ->
11031138 exists d : R, (0 < d)%R /\
11041139 forall A, measurable A -> mu A < d%:E -> charge_variation nuPN A < e%:E.
11051140Proof .
1106- move=> numu; apply/not_forallP => -[e] /not_implyP[e0] /forallNP H.
1141+ move=> /[dup]nudommu /null_content_dominatesP numu.
1142+ apply/not_forallP => -[e] /not_implyP[e0] /forallNP H.
11071143have {H} : forall n, exists A,
11081144 [/\ measurable A, mu A < (2 ^- n.+1)%:E & charge_variation nuPN A >= e%:E].
11091145 move=> n; have /not_andP[|] := H (2 ^- n.+1); first by rewrite invr_gt0.
@@ -1129,7 +1165,7 @@ have : mu (lim_sup_set F) = 0.
11291165 by move/cvg_lim : h => ->//; rewrite ltry.
11301166have : measurable (lim_sup_set F).
11311167 by apply: bigcap_measurable => // k _; exact: bigcup_measurable.
1132- move=> /(dominates_charge_variation numu) /[apply].
1168+ move/null_charge_dominatesP : nudommu => /[apply] /[apply].
11331169apply/eqP; rewrite neq_lt// ltNge measure_ge0//=.
11341170suff : charge_variation nuPN (lim_sup_set F) >= e%:E by exact: lt_le_trans.
11351171have echarge n : e%:E <= charge_variation nuPN (\bigcup_(j >= n) F j).
@@ -1147,12 +1183,17 @@ by rewrite -ge0_fin_numE// fin_num_measure//; exact: bigcup_measurable.
11471183Qed .
11481184
11491185End charge_variation_continuous.
1186+ #[deprecated(since="mathcomp-analysis 1.15.0", note="use `charge_null_dominatesP` instead")]
1187+ Notation dominates_charge_variation := __deprecated__dominates_charge_variation (only parsing).
11501188
1151- Definition induced d (T : measurableType d) {R : realType}
1189+ Definition induced_charge d (T : measurableType d) {R : realType}
11521190 (mu : {measure set T -> \bar R}) (f : T -> \bar R)
11531191 (intf : mu.-integrable [set: T] f) :=
11541192 fun A => (\int[mu]_(t in A) f t)%E.
11551193
1194+ #[deprecated(since="mathcomp-analysis 1.15.0", note="renamed to `induced_charge`")]
1195+ Notation induced := induced_charge (only parsing).
1196+
11561197Section induced_charge.
11571198Context d (T : measurableType d) {R : realType} (mu : {measure set T -> \bar R}).
11581199Local Open Scope ereal_scope.
@@ -1169,7 +1210,7 @@ Qed.
11691210Variable f : T -> \bar R.
11701211Hypothesis intf : mu.-integrable setT f.
11711212
1172- Local Notation nu := (induced intf).
1213+ Local Notation nu := (induced_charge intf).
11731214
11741215Let nu0 : nu set0 = 0. Proof . by rewrite /nu integral_set0. Qed .
11751216
@@ -1211,10 +1252,10 @@ Hypothesis intf : mu.-integrable setT f.
12111252Let intnf : mu.-integrable [set: T] (abse \o f).
12121253Proof . exact: integrable_abse. Qed .
12131254
1214- Lemma dominates_induced : induced intnf `<< mu.
1255+ Lemma dominates_induced : induced_charge intnf `<< mu.
12151256Proof .
1216- move => /= A mA muA.
1217- rewrite /induced ; apply/eqP; rewrite -abse_eq0 eq_le abse_ge0 andbT.
1257+ apply/null_content_dominatesP => /= A mA muA.
1258+ rewrite /induced_charge ; apply/eqP; rewrite -abse_eq0 eq_le abse_ge0 andbT.
12181259rewrite (le_trans (le_abse_integral _ _ _))//=.
12191260 by case/integrableP : intnf => /= + _; exact: measurable_funTS.
12201261rewrite le_eqVlt; apply/orP; left; apply/eqP.
@@ -1238,7 +1279,7 @@ Lemma integral_normr_continuous (e : R) : (0 < e)%R ->
12381279 exists d : R, (0 < d)%R /\
12391280 forall A, measurable A -> mu A < d%:E -> (\int[mu]_(x in A) `|f x| < e)%R.
12401281Proof .
1241- move=> e0; have [P [N pn]] := Hahn_decomposition (induced intnf).
1282+ move=> e0; have [P [N pn]] := Hahn_decomposition (induced_charge intnf).
12421283have [r [r0 re]] := charge_variation_continuous pn (dominates_induced intf) e0.
12431284exists r; split => //= A mA Ad.
12441285have {re} := re _ mA Ad.
@@ -1721,6 +1762,7 @@ pose AP := A `&` P.
17211762have mAP : measurable AP by exact: measurableI.
17221763have muAP_gt0 : 0 < mu AP.
17231764 rewrite lt0e measure_ge0// andbT.
1765+ move/null_content_dominatesP in nu_mu.
17241766 apply/eqP/(contra_not (nu_mu _ mAP))/eqP; rewrite gt_eqF//.
17251767 rewrite (@lt_le_trans _ _ (sigma AP))//.
17261768 rewrite (@lt_le_trans _ _ (sigma A))//; last first.
@@ -1815,7 +1857,9 @@ pose mu_ j : {finite_measure set T -> \bar R} := mfrestr (mE j) (muEoo j).
18151857have nuEoo i : nu (E i) < +oo by rewrite ltey_eq fin_num_measure.
18161858pose nu_ j : {finite_measure set T -> \bar R} := mfrestr (mE j) (nuEoo j).
18171859have nu_mu_ k : nu_ k `<< mu_ k.
1818- by move=> S mS mu_kS0; apply: nu_mu => //; exact: measurableI.
1860+ apply/null_content_dominatesP => S mS mu_kS0.
1861+ move/null_content_dominatesP : nu_mu; apply => //.
1862+ exact: measurableI.
18191863have [g_] := choice (fun j => radon_nikodym_finite (nu_mu_ j)).
18201864move=> /all_and3[g_ge0 ig_ int_gE].
18211865pose f_ j x := if x \in E j then g_ j x else 0.
@@ -2038,11 +2082,11 @@ have mf : measurable_fun E ('d nu '/d mu).
20382082 exact/measurable_funTS/(measurable_int _ (f_integrable _)).
20392083apply: integral_ae_eq => //.
20402084- apply: (integrableS measurableT) => //; apply: f_integrable.
2041- exact: measure_dominates_trans numu mula.
2085+ exact: null_dominates_trans numu mula.
20422086- apply: emeasurable_funM => //.
20432087 exact/measurable_funTS/(measurable_int _ (f_integrable _)).
20442088- move=> A AE mA; rewrite change_of_variables//.
2045- + by rewrite -!f_integral//; exact: measure_dominates_trans numu mula.
2089+ + by rewrite -!f_integral//; exact: null_dominates_trans numu mula.
20462090 + exact: f_ge0.
20472091 + exact: measurable_funS mf.
20482092Qed .
@@ -2204,7 +2248,7 @@ Lemma Radon_Nikodym_chain_rule : nu `<< mu -> mu `<< la ->
22042248 ('d nu '/d mu \* 'd (charge_of_finite_measure mu) '/d la).
22052249Proof .
22062250have [Pnu [Nnu nuPN]] := Hahn_decomposition nu.
2207- move=> numu mula; have nula := measure_dominates_trans numu mula.
2251+ move=> numu mula; have nula := null_dominates_trans numu mula.
22082252apply: integral_ae_eq; [exact: measurableT| |exact: emeasurable_funM|].
22092253- exact: Radon_Nikodym_integrable.
22102254- move=> E _ mE.
0 commit comments