Skip to content

Commit 04dfc2c

Browse files
committed
add a definition of RN derivative (tentative)
1 parent 0a13408 commit 04dfc2c

File tree

3 files changed

+58
-33
lines changed

3 files changed

+58
-33
lines changed

CHANGELOG_UNRELEASED.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,16 +67,18 @@
6767
- in `classical_sets.v`:
6868
+ lemmas `preimage_mem_true`, `preimage_mem_false`
6969
- in `measure.v`:
70-
+ definition `dominates`, notation `` `<< ``
71-
+ lemma `dominates_trans`
70+
+ definition `measure_dominates`, notation `` `<< ``
71+
+ lemma `measure_dominates_trans`
7272
- in `measure.v`:
7373
+ defintion `mfrestr`
7474
- in `charge.v`:
7575
+ definition `measure_of_charge`
7676
+ definition `crestr0`
7777
+ definitions `jordan_neg`, `jordan_pos`
7878
+ lemmas `jordan_decomp`, `jordan_pos_dominates`, `jordan_neg_dominates`
79+
+ definition `radon_nikodym_derivative`, notation `_.-derivative _`
7980
+ lemma `radon_nikodym_finite`, theorem `Radon_Nikodym`
81+
+ lemma `integrable_radon_nikodym_derivative`
8082

8183
- in `measure.v`:
8284
+ lemmas `measurable_pair1`, `measurable_pair2`

theories/charge.v

Lines changed: 50 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ Require Import esum measure realfun lebesgue_measure lebesgue_integral.
3939
(* jordan_neg nu nuPN == the charge obtained by restricting the charge *)
4040
(* nu to the positive set N of the Hahn *)
4141
(* decomposition nuPN: hahn_decomposition nu P N *)
42+
(* mu.-derivative nu == Radon-Nikodym derivative of nu w.r.t. mu if *)
43+
(* mu dominates nu, cst -oo otherwise *)
4244
(* *)
4345
(******************************************************************************)
4446

@@ -48,6 +50,7 @@ Reserved Notation "{ 'additive_charge' 'set' T '->' '\bar' R }"
4850
Reserved Notation "{ 'charge' 'set' T '->' '\bar' R }"
4951
(at level 36, T, R at next level,
5052
format "{ 'charge' 'set' T '->' '\bar' R }").
53+
Reserved Notation "mu .-derivative" (at level 2, format "mu .-derivative").
5154

5255
Set Implicit Arguments.
5356
Unset Strict Implicit.
@@ -364,10 +367,10 @@ Context d (R : numDomainType) (T : measurableType d).
364367
Implicit Types nu : set T -> \bar R.
365368

366369
Definition positive_set nu (P : set T) :=
367-
measurable P /\ forall E, measurable E -> E `<=` P -> nu E >= 0.
370+
measurable P /\ forall A, measurable A -> A `<=` P -> nu A >= 0.
368371

369372
Definition negative_set nu (N : set T) :=
370-
measurable N /\ forall E, measurable E -> E `<=` N -> nu E <= 0.
373+
measurable N /\ forall A, measurable A -> A `<=` N -> nu A <= 0.
371374

372375
End positive_negative_set.
373376

@@ -863,7 +866,7 @@ Variables mu nu : {measure set T -> \bar R}.
863866

864867
Definition approxRN := [set g : T -> \bar R | [/\
865868
forall x, 0 <= g x, mu.-integrable [set: T] g &
866-
forall E, measurable E -> \int[mu]_(x in E) g x <= nu E] ].
869+
forall A, measurable A -> \int[mu]_(x in A) g x <= nu A] ].
867870

868871
Let approxRN_neq0 : approxRN !=set0.
869872
Proof.
@@ -1316,7 +1319,7 @@ Let f_ge0 := fRN_ge0.
13161319

13171320
Lemma radon_nikodym_finite : nu `<< mu -> exists f : T -> \bar R,
13181321
[/\ forall x, f x >= 0, mu.-integrable [set: T] f &
1319-
forall E, measurable E -> nu E = \int[mu]_(x in E) f x].
1322+
forall A, measurable A -> nu A = \int[mu]_(x in A) f x].
13201323
Proof.
13211324
move=> nu_mu; exists f; split.
13221325
- by move=> x; exact: f_ge0.
@@ -1330,11 +1333,11 @@ pose AP := A `&` P.
13301333
have mAP : measurable AP by exact: measurableI.
13311334
have muAP_gt0 : 0 < mu AP.
13321335
rewrite lt_neqAle measure_ge0// andbT eq_sym.
1333-
apply/eqP/(@contra_not _ _ (nu_mu _ mAP))/eqP; rewrite gt_eqF //.
1336+
apply/eqP/(@contra_not _ _ (nu_mu _ mAP))/eqP; rewrite gt_eqF//.
13341337
rewrite (@lt_le_trans _ _ (sigma AP))//.
13351338
rewrite (@lt_le_trans _ _ (sigma A))//; last first.
1336-
rewrite (charge_partition _ _ mP mN)// gee_addl//.
1337-
by apply: negN => //; exact: measurableI.
1339+
rewrite (charge_partition _ _ mP mN)// gee_addl// negN//.
1340+
exact: measurableI.
13381341
by rewrite sube_gt0// (proj2_sig (epsRN_ex mA abs)).
13391342
rewrite /sigma/= /sigmaRN lee_subel_addl ?fin_num_measure//.
13401343
by rewrite lee_paddl// integral_ge0// => x _; rewrite adde_ge0//; exact: f_ge0.
@@ -1365,10 +1368,9 @@ have hnu S : measurable S -> \int[mu]_(x in S) h x <= nu S.
13651368
rewrite -(setD0 S) -(setDv AP) setDDr.
13661369
have mSIAP : measurable (S `&` AP) by exact: measurableI.
13671370
have mSDAP : measurable (S `\` AP) by exact: measurableD.
1368-
rewrite integral_setU //.
1369-
- rewrite measureU//.
1370-
by apply: lee_add; [exact: hnuN|exact: hnuP].
1371-
by rewrite setDE setIACA setICl setI0.
1371+
rewrite integral_setU//.
1372+
- rewrite measureU//; last by by rewrite setDE setIACA setICl setI0.
1373+
by apply: lee_add; [exact: hnuN|exact: hnuP].
13721374
- exact: measurable_funTS.
13731375
- by rewrite disj_set2E setDE setIACA setICl setI0.
13741376
have int_h_M : \int[mu]_x h x > M.
@@ -1496,24 +1498,45 @@ rewrite -measure_bigcup//.
14961498
- exact: trivIset_setIl.
14971499
Qed.
14981500

1501+
Definition radon_nikodym_derivative
1502+
(mu : {sigma_finite_measure set T -> \bar R})
1503+
(nu : {charge set T -> \bar R}) : T -> \bar R :=
1504+
let PN := svalP (cid (svalP (cid (Hahn_decomposition nu)))) in
1505+
if pselect (nu `<< mu) is left numu then
1506+
let fp :=
1507+
sval (cid2 (radon_nikodym_sigma_finite (jordan_pos_dominates PN numu))) in
1508+
let fn :=
1509+
sval (cid2 (radon_nikodym_sigma_finite (jordan_neg_dominates PN numu))) in
1510+
fp \- fn
1511+
else cst -oo.
1512+
1513+
Notation "mu .-derivative" := (radon_nikodym_derivative mu) : type_scope.
1514+
1515+
Lemma integrable_radon_nikodym_derivative
1516+
(mu : {sigma_finite_measure set T -> \bar R})
1517+
(nu : {charge set T -> \bar R}) :
1518+
nu `<< mu -> mu.-integrable [set: T] (mu.-derivative nu).
1519+
Proof.
1520+
move=> h; rewrite /radon_nikodym_derivative; case: pselect => //= h'.
1521+
by apply: integrableB => //; case: cid2.
1522+
Qed.
1523+
14991524
Theorem Radon_Nikodym
1500-
(mu : {sigma_finite_measure set T -> \bar R}) (nu : {charge set T -> \bar R}) :
1501-
nu `<< mu ->
1502-
exists2 f : T -> \bar R, mu.-integrable [set: T] f &
1503-
forall E, measurable E -> nu E = \int[mu]_(x in E) f x.
1525+
(mu : {sigma_finite_measure set T -> \bar R})
1526+
(nu : {charge set T -> \bar R}) : nu `<< mu ->
1527+
forall A, measurable A -> nu A = \int[mu]_(x in A) (mu.-derivative nu) x.
15041528
Proof.
1505-
move=> nu_mu; have [P [N nuPN]] := Hahn_decomposition nu.
1506-
have [fp intfp fpE] := @radon_nikodym_sigma_finite mu
1507-
[the {finite_measure set _ -> \bar _} of jordan_pos nuPN]
1508-
(jordan_pos_dominates nuPN nu_mu).
1509-
have [fn intfn fnE] := @radon_nikodym_sigma_finite mu
1510-
[the {finite_measure set _ -> \bar _} of jordan_neg nuPN]
1511-
(jordan_neg_dominates nuPN nu_mu).
1512-
exists (fp \- fn); first exact: integrableB.
1513-
move=> E mE; rewrite [LHS](jordan_decomp nuPN mE)// integralB//.
1514-
- by rewrite -fpE ?inE// -fnE ?inE.
1515-
- exact: (integrableS measurableT).
1516-
- exact: (integrableS measurableT).
1529+
set PN := svalP (cid (svalP (cid (Hahn_decomposition nu)))).
1530+
move=> h A mA.
1531+
rewrite /radon_nikodym_derivative; case: pselect => // h'.
1532+
rewrite [LHS](jordan_decomp PN mA)// integralB//.
1533+
- set fpE :=
1534+
(svalP (cid2 (radon_nikodym_sigma_finite (jordan_pos_dominates PN h')))).2.
1535+
set fnE :=
1536+
(svalP (cid2 (radon_nikodym_sigma_finite (jordan_neg_dominates PN h')))).2.
1537+
by rewrite -fpE ?inE// -fnE ?inE.
1538+
- by apply: (integrableS measurableT) => //; case: cid2.
1539+
- by apply: (integrableS measurableT) => //; case: cid2.
15171540
Qed.
15181541

15191542
End radon_nikodym.

theories/measure.v

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4216,13 +4216,13 @@ Section absolute_continuity.
42164216
Context d (T : measurableType d) (R : realType).
42174217
Implicit Types m : set T -> \bar R.
42184218

4219-
Definition dominates m1 m2 :=
4219+
Definition measure_dominates m1 m2 :=
42204220
forall A, measurable A -> m2 A = 0 -> m1 A = 0.
42214221

4222-
Local Notation "m1 `<< m2" := (dominates m1 m2).
4222+
Local Notation "m1 `<< m2" := (measure_dominates m1 m2).
42234223

4224-
Lemma dominates_trans m1 m2 m3 : m1 `<< m2 -> m2 `<< m3 -> m1 `<< m3.
4224+
Lemma measure_dominates_trans m1 m2 m3 : m1 `<< m2 -> m2 `<< m3 -> m1 `<< m3.
42254225
Proof. by move=> m12 m23 A mA /m23-/(_ mA) /m12; exact. Qed.
42264226

42274227
End absolute_continuity.
4228-
Notation "m1 `<< m2" := (dominates m1 m2).
4228+
Notation "m1 `<< m2" := (measure_dominates m1 m2).

0 commit comments

Comments
 (0)