@@ -89,11 +89,19 @@ From mathcomp Require Import ereal topology normedtype sequences.
8989(* ## Other measure-theoretic definitions *)
9090(* *)
9191(* ``` *)
92- (* preimage_set_system D f G == set system of the preimages by f of sets in G *)
93- (* image_set_system D f G == set system of the sets with a preimage by f *)
94- (* in G *)
95- (* subset_sigma_subadditive mu == alternative predicate defining *)
96- (* sigma-subadditivity *)
92+ (* preimage_set_system D f G == set system of the preimages by f of sets *)
93+ (* in G *)
94+ (* g_sigma_algebra_preimage f == sigma-algebra generated by the *)
95+ (* function f *)
96+ (* g_sigma_algebra_preimageType f == the measurableType corresponding to *)
97+ (* g_sigma_algebra_preimage f *)
98+ (* This is an HB alias. *)
99+ (* f.-preimage.-measurable A == A is measurable for *)
100+ (* g_sigma_algebra_preimage f *)
101+ (* image_set_system D f G == set system of the sets with a preimage *)
102+ (* by f in G *)
103+ (* subset_sigma_subadditive mu == alternative predicate defining *)
104+ (* sigma-subadditivity *)
97105(* ``` *)
98106(* *)
99107(* ## Product of measurable spaces *)
@@ -128,6 +136,8 @@ Reserved Notation "'d<<' D '>>'".
128136Reserved Notation "mu .-measurable" (format "mu .-measurable").
129137Reserved Notation "G .-sigma" (format "G .-sigma").
130138Reserved Notation "G .-sigma.-measurable" (format "G .-sigma.-measurable").
139+ Reserved Notation "f .-preimage" (format "f .-preimage").
140+ Reserved Notation "f .-preimage.-measurable" (format "f .-preimage.-measurable").
131141Reserved Notation "'<<l' D , G '>>'" (format "'<<l' D , G '>>'").
132142Reserved Notation "'<<l' G '>>'" (format "'<<l' G '>>'").
133143Reserved Notation "'<<d' G '>>'" (format "'<<d' G '>>'").
@@ -1339,6 +1349,58 @@ case=> h0 hC hU; split; first by exists set0 => //; rewrite preimage_set0 setI0.
13391349 exact: (mF' i).2.
13401350Qed .
13411351
1352+ Definition preimage_display {T T'} : (T -> T') -> measure_display.
1353+ Proof . exact. Qed .
1354+
1355+ Definition g_sigma_algebra_preimageType d' (T : pointedType)
1356+ (T' : measurableType d') (f : T -> T') : Type := T.
1357+
1358+ Definition g_sigma_algebra_preimage d' (T : pointedType)
1359+ (T' : measurableType d') (f : T -> T') :=
1360+ preimage_set_system setT f (@measurable _ T').
1361+
1362+ Section preimage_generated_sigma_algebra.
1363+ Context {d'} (T : pointedType) (T' : measurableType d').
1364+ Variable f : T -> T'.
1365+
1366+ Let preimage_set0 : g_sigma_algebra_preimage f set0.
1367+ Proof .
1368+ rewrite /g_sigma_algebra_preimage /preimage_set_system/=.
1369+ by exists set0 => //; rewrite preimage_set0 setI0.
1370+ Qed .
1371+
1372+ Let preimage_setC A :
1373+ g_sigma_algebra_preimage f A -> g_sigma_algebra_preimage f (~` A).
1374+ Proof .
1375+ rewrite /g_sigma_algebra_preimage /preimage_set_system/= => -[B mB] <-{A}.
1376+ by exists (~` B); [exact: measurableC|rewrite !setTI preimage_setC].
1377+ Qed .
1378+
1379+ Let preimage_bigcup (F : (set T)^nat) :
1380+ (forall i, g_sigma_algebra_preimage f (F i)) ->
1381+ g_sigma_algebra_preimage f (\bigcup_i (F i)).
1382+ Proof .
1383+ move=> mF; rewrite /g_sigma_algebra_preimage /preimage_set_system/=.
1384+ pose g := fun i => sval (cid2 (mF i)).
1385+ pose mg := fun i => svalP (cid2 (mF i)).
1386+ exists (\bigcup_i g i).
1387+ by apply: bigcup_measurable => k; case: (mg k).
1388+ rewrite setTI /g preimage_bigcup; apply: eq_bigcupr => k _.
1389+ by case: (mg k) => _; rewrite setTI.
1390+ Qed .
1391+
1392+ HB.instance Definition _ := Pointed.on (g_sigma_algebra_preimageType f).
1393+
1394+ HB.instance Definition _ := @isMeasurable.Build (preimage_display f)
1395+ (g_sigma_algebra_preimageType f) (g_sigma_algebra_preimage f)
1396+ preimage_set0 preimage_setC preimage_bigcup.
1397+
1398+ End preimage_generated_sigma_algebra.
1399+
1400+ Notation "f .-preimage" := (preimage_display f) : measure_display_scope.
1401+ Notation "f .-preimage.-measurable" :=
1402+ (measurable : set (set (g_sigma_algebra_preimageType f))) : classical_set_scope.
1403+
13421404Definition image_set_system (aT rT : Type ) (D : set aT) (f : aT -> rT)
13431405 (G : set (set aT)) : set (set rT) :=
13441406 [set B : set rT | G (D `&` f @^-1` B)].
0 commit comments