Skip to content

Commit 0b0c8be

Browse files
committed
transfer lemma
1 parent 3b2d205 commit 0b0c8be

File tree

4 files changed

+72
-7
lines changed

4 files changed

+72
-7
lines changed

CHANGELOG_UNRELEASED.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,19 @@
3333
+ lemma `measurable_funTS`
3434
- in `lebesgue_measure.v`:
3535
+ lemma `measurable_fun_indic`
36+
+ Hint about `measurable_fun_normr`
37+
- in `lebesgue_integral.v`:
38+
+ lemma `integral_pushforward`
39+
3640

3741
### Changed
3842

3943
- in `measure.v`:
4044
+ generalize `measurable_uncurry`
45+
- in `lebesgue_measure.v`:
46+
+ `pushforward` requires a proof that its argument is measurable
47+
- in `lebesgue_integral.v`:
48+
+ change implicits of `integralM_indic`
4149

4250
### Renamed
4351

theories/lebesgue_integral.v

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2196,6 +2196,7 @@ by rewrite preimage_nnfun0.
21962196
Qed.
21972197

21982198
End integralM_indic.
2199+
Arguments integralM_indic {d T R m D} mD f.
21992200

22002201
Section integral_mscale.
22012202
Local Open Scope ereal_scope.
@@ -2389,6 +2390,57 @@ Qed.
23892390

23902391
End integral_cst.
23912392

2393+
Section transfer.
2394+
Local Open Scope ereal_scope.
2395+
Variables (d1 d2 : _) (X : measurableType d1) (Y : measurableType d2).
2396+
Variables (phi : X -> Y) (mphi : measurable_fun setT phi).
2397+
Variables (R : realType) (mu : {measure set X -> \bar R}).
2398+
2399+
Lemma integral_pushforward (f : Y -> \bar R) :
2400+
measurable_fun setT f -> (forall y, 0 <= f y) ->
2401+
\int[pushforward mu mphi]_y f y = \int[mu]_x (f \o phi) x.
2402+
Proof.
2403+
move=> mf f0.
2404+
have [f_ [ndf_ f_f]] := approximation measurableT mf (fun t _ => f0 t).
2405+
transitivity (lim (fun n => \int[pushforward mu mphi]_x (f_ n x)%:E)).
2406+
rewrite -monotone_convergence//.
2407+
- by apply: eq_integral => y _; apply/esym/cvg_lim => //; exact: f_f.
2408+
- by move=> n; exact/EFin_measurable_fun.
2409+
- by move=> n y _; rewrite lee_fin.
2410+
- by move=> y _ m n mn; rewrite lee_fin; apply/lefP/ndf_.
2411+
rewrite (_ : (fun _ => _) = (fun n => \int[mu]_x (EFin \o f_ n \o phi) x)).
2412+
rewrite -monotone_convergence//; last 3 first.
2413+
- move=> n /=; apply: measurable_fun_comp; first exact: measurable_fun_EFin.
2414+
by apply: measurable_fun_comp => //; exact: measurable_sfun.
2415+
- by move=> n x _ /=; rewrite lee_fin.
2416+
- by move=> x _ m n mn; rewrite lee_fin; exact/lefP/ndf_.
2417+
by apply: eq_integral => x _ /=; apply/cvg_lim => //; exact: f_f.
2418+
apply/funext => n.
2419+
have mfnphi r : measurable (f_ n @^-1` [set r] \o phi).
2420+
rewrite -[_ \o _]/(phi @^-1` (f_ n @^-1` [set r])) -(setTI (_ @^-1` _)).
2421+
exact/mphi.
2422+
transitivity (\sum_(k <- fset_set (range (f_ n)))
2423+
\int[mu]_x (k * \1_((f_ n @^-1` [set k]) \o phi) x)%:E).
2424+
under eq_integral do rewrite fimfunE -sumEFin.
2425+
rewrite ge0_integral_sum//; last 2 first.
2426+
- move=> y; apply/EFin_measurable_fun; apply: measurable_funM.
2427+
exact: measurable_fun_cst.
2428+
by rewrite (_ : \1_ _ = mindic R (measurable_sfunP (f_ n) y)).
2429+
- by move=> y x _; rewrite nnfun_muleindic_ge0.
2430+
apply eq_bigr => r _; rewrite integralM_indic_nnsfun// integral_indic//=.
2431+
rewrite (integralM_indic _ (fun r => f_ n @^-1` [set r] \o phi))//.
2432+
by congr (_ * _); rewrite [RHS](@integral_indic).
2433+
by move=> r0; rewrite preimage_nnfun0.
2434+
rewrite -ge0_integral_sum//; last 2 first.
2435+
- move=> r; apply/EFin_measurable_fun; apply: measurable_funM.
2436+
exact: measurable_fun_cst.
2437+
by rewrite (_ : \1_ _ = mindic R (mfnphi r)).
2438+
- by move=> r x _; rewrite nnfun_muleindic_ge0.
2439+
by apply eq_integral => x _; rewrite sumEFin -fimfunE.
2440+
Qed.
2441+
2442+
End transfer.
2443+
23922444
Section integral_dirac.
23932445
Local Open Scope ereal_scope.
23942446
Variables (d : measure_display) (T : measurableType d) (a : T) (R : realType).

theories/lebesgue_measure.v

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1520,6 +1520,9 @@ Qed.
15201520

15211521
End standard_measurable_fun.
15221522

1523+
#[global] Hint Extern 0 (measurable_fun _ normr) =>
1524+
solve [exact: measurable_fun_normr] : core.
1525+
15231526
Section measurable_fun_realType.
15241527
Variables (d : measure_display) (T : measurableType d) (R : realType).
15251528
Implicit Types (D : set T) (f g : T -> R).

theories/measure.v

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,8 @@ From HB Require Import structures.
8484
(* isMeasure == factory corresponding to the type of measures *)
8585
(* Measure == structure corresponding to measures *)
8686
(* *)
87-
(* pushforward f m == pushforward/image measure of m by f *)
87+
(* pushforward mf m == pushforward/image measure of m by f, where mf is a *)
88+
(* proof that f is measurable *)
8889
(* \d_a == Dirac measure *)
8990
(* msum mu n == the measure corresponding to the sum of the measures *)
9091
(* mu_0, ..., mu_{n-1} *)
@@ -1461,18 +1462,19 @@ Section pushforward_measure.
14611462
Local Open Scope ereal_scope.
14621463
Variables (d d' : measure_display).
14631464
Variables (T1 : measurableType d) (T2 : measurableType d') (f : T1 -> T2).
1464-
Hypothesis mf : measurable_fun setT f.
14651465
Variables (R : realFieldType) (m : {measure set T1 -> \bar R}).
14661466

1467-
Definition pushforward A := m (f @^-1` A).
1467+
Definition pushforward (mf : measurable_fun setT f) A := m (f @^-1` A).
1468+
1469+
Hypothesis mf : measurable_fun setT f.
14681470

1469-
Let pushforward0 : pushforward set0 = 0.
1471+
Let pushforward0 : pushforward mf set0 = 0.
14701472
Proof. by rewrite /pushforward preimage_set0 measure0. Qed.
14711473

1472-
Let pushforward_ge0 A : 0 <= pushforward A.
1474+
Let pushforward_ge0 A : 0 <= pushforward mf A.
14731475
Proof. by apply: measure_ge0; rewrite -[X in measurable X]setIT; apply: mf. Qed.
14741476

1475-
Let pushforward_sigma_additive : semi_sigma_additive pushforward.
1477+
Let pushforward_sigma_additive : semi_sigma_additive (pushforward mf).
14761478
Proof.
14771479
move=> F mF tF mUF; rewrite /pushforward preimage_bigcup.
14781480
apply: measure_semi_sigma_additive.
@@ -1483,7 +1485,7 @@ apply: measure_semi_sigma_additive.
14831485
Qed.
14841486

14851487
HB.instance Definition _ := isMeasure.Build _ _ _
1486-
pushforward pushforward0 pushforward_ge0 pushforward_sigma_additive.
1488+
(pushforward mf) pushforward0 pushforward_ge0 pushforward_sigma_additive.
14871489

14881490
End pushforward_measure.
14891491

0 commit comments

Comments
 (0)