@@ -92,11 +92,20 @@ From mathcomp Require Import sequences esum numfun.
9292(* ## Other measure-theoretic definitions *)
9393(* *)
9494(* ``` *)
95- (* preimage_set_system D f G == set system of the preimages by f of sets in G *)
96- (* image_set_system D f G == set system of the sets with a preimage by f *)
97- (* in G *)
98- (* subset_sigma_subadditive mu == alternative predicate defining *)
99- (* sigma-subadditivity *)
95+ (* preimage_set_system D f G == set system of the preimages by f of sets *)
96+ (* in G *)
97+ (* g_sigma_algebra_preimage f == sigma-algebra generated by the *)
98+ (* function f *)
99+ (* g_sigma_algebra_preimageType f == the measurableType corresponding to *)
100+ (* g_sigma_algebra_preimage f *)
101+ (* This is an HB alias. *)
102+ (* f.-preimage.-measurable A == A is measurable for *)
103+ (* g_sigma_algebra_preimage f *)
104+ (* image_set_system D f G == set system of the sets with a preimage *)
105+ (* by f in G *)
106+ (* *)
107+ (* subset_sigma_subadditive mu == alternative predicate defining *)
108+ (* sigma-subadditivity *)
100109(* ``` *)
101110(* *)
102111(* ## Product of measurable spaces *)
@@ -1343,6 +1352,58 @@ case=> h0 hC hU; split; first by exists set0 => //; rewrite preimage_set0 setI0.
13431352 exact: (mF' i).2.
13441353Qed .
13451354
1355+ Definition preimage_display {T T'} : (T -> T') -> measure_display.
1356+ Proof . exact. Qed .
1357+
1358+ Definition g_sigma_algebra_preimageType d' (T : pointedType)
1359+ (T' : measurableType d') (f : T -> T') : Type := T.
1360+
1361+ Definition g_sigma_algebra_preimage d' (T : pointedType)
1362+ (T' : measurableType d') (f : T -> T') :=
1363+ preimage_set_system setT f (@measurable _ T').
1364+
1365+ Section preimage_generated_sigma_algebra.
1366+ Context {d'} (T : pointedType) (T' : measurableType d').
1367+ Variable f : T -> T'.
1368+
1369+ Let preimage_set0 : g_sigma_algebra_preimage f set0.
1370+ Proof .
1371+ rewrite /g_sigma_algebra_preimage /preimage_set_system/=.
1372+ by exists set0 => //; rewrite preimage_set0 setI0.
1373+ Qed .
1374+
1375+ Let preimage_setC A :
1376+ g_sigma_algebra_preimage f A -> g_sigma_algebra_preimage f (~` A).
1377+ Proof .
1378+ rewrite /g_sigma_algebra_preimage /preimage_set_system/= => -[B mB] <-{A}.
1379+ by exists (~` B); [exact: measurableC|rewrite !setTI preimage_setC].
1380+ Qed .
1381+
1382+ Let preimage_bigcup (F : (set T)^nat) :
1383+ (forall i, g_sigma_algebra_preimage f (F i)) ->
1384+ g_sigma_algebra_preimage f (\bigcup_i (F i)).
1385+ Proof .
1386+ move=> mF; rewrite /g_sigma_algebra_preimage /preimage_set_system/=.
1387+ pose g := fun i => sval (cid2 (mF i)).
1388+ pose mg := fun i => svalP (cid2 (mF i)).
1389+ exists (\bigcup_i g i).
1390+ by apply: bigcup_measurable => k; case: (mg k).
1391+ rewrite setTI /g preimage_bigcup; apply: eq_bigcupr => k _.
1392+ by case: (mg k) => _; rewrite setTI.
1393+ Qed .
1394+
1395+ HB.instance Definition _ := Pointed.on (g_sigma_algebra_preimageType f).
1396+
1397+ HB.instance Definition _ := @isMeasurable.Build (preimage_display f)
1398+ (g_sigma_algebra_preimageType f) (g_sigma_algebra_preimage f)
1399+ preimage_set0 preimage_setC preimage_bigcup.
1400+
1401+ End preimage_generated_sigma_algebra.
1402+
1403+ Notation "f .-preimage" := (preimage_display f) : measure_display_scope.
1404+ Notation "f .-preimage.-measurable" :=
1405+ (measurable : set (set (g_sigma_algebra_preimageType f))) : classical_set_scope.
1406+
13461407Definition image_set_system (aT rT : Type ) (D : set aT) (f : aT -> rT)
13471408 (G : set (set aT)) : set (set rT) :=
13481409 [set B : set rT | G (D `&` f @^-1` B)].
0 commit comments