Skip to content

Commit c8441ce

Browse files
affeldt-aisthoheinzollern
authored andcommitted
wip
1 parent ed7cd49 commit c8441ce

1 file changed

Lines changed: 102 additions & 55 deletions

File tree

theories/probability.v

Lines changed: 102 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -76,22 +76,23 @@ Import numFieldTopology.Exports.
7676
Local Open Scope classical_set_scope.
7777
Local Open Scope ring_scope.
7878

79-
Definition random_variable (d : _) (T : measurableType d) (R : realType)
80-
(P : probability T R) := {mfun T >-> R}.
79+
Definition random_variable (d d' : _) (T : measurableType d)
80+
(T' : measurableType d') (R : realType) (P : probability T R) := {mfun T >-> T'}.
8181

82-
Notation "{ 'RV' P >-> R }" := (@random_variable _ _ R P) : form_scope.
82+
Notation "{ 'RV' P >-> T }" := (@random_variable _ _ _ T _ P) : form_scope.
8383

8484
Lemma notin_range_measure d (T : measurableType d) (R : realType)
8585
(P : {measure set T -> \bar R}) (X : T -> R) r :
8686
r \notin range X -> P (X @^-1` [set r]) = 0%E.
8787
Proof. by rewrite notin_setE => hr; rewrite preimage10. Qed.
8888

89-
Lemma probability_range d (T : measurableType d) (R : realType)
90-
(P : probability T R) (X : {RV P >-> R}) : P (X @^-1` range X) = 1%E.
89+
Lemma probability_range d d' (T : measurableType d) (T' : measurableType d')
90+
(R : realType) (P : probability T R) (X : {RV P >-> T'}) :
91+
P (X @^-1` range X) = 1%E.
9192
Proof. by rewrite preimage_range probability_setT. Qed.
9293

93-
Definition distribution d (T : measurableType d) (R : realType)
94-
(P : probability T R) (X : {mfun T >-> R}) :=
94+
Definition distribution d d' (T : measurableType d) (T' : measurableType d')
95+
(R : realType) (P : probability T R) (X : {mfun T >-> T'}) :=
9596
pushforward P (@measurable_funP _ _ _ _ X).
9697

9798
Section distribution_is_probability.
@@ -122,14 +123,15 @@ End distribution_is_probability.
122123

123124
Section transfer_probability.
124125
Local Open Scope ereal_scope.
125-
Context d (T : measurableType d) (R : realType) (P : probability T R).
126+
Context d d' (T : measurableType d) (T' : measurableType d') (R : realType).
127+
Variable (P : probability T R).
126128

127-
Lemma probability_distribution (X : {RV P >-> R}) r :
129+
Lemma probability_distribution (X : {RV P >-> T'}) r :
128130
P [set x | X x = r] = distribution P X [set r].
129131
Proof. by []. Qed.
130132

131-
Lemma integral_distribution (X : {RV P >-> R}) (f : R -> \bar R) :
132-
measurable_fun [set: R] f -> (forall y, 0 <= f y) ->
133+
Lemma integral_distribution (X : {RV P >-> T'}) (f : T' -> \bar R) :
134+
measurable_fun [set: T'] f -> (forall y, 0 <= f y) ->
133135
\int[distribution P X]_y f y = \int[P]_x (f \o X) x.
134136
Proof. by move=> mf f0; rewrite ge0_integral_pushforward. Qed.
135137

@@ -1033,6 +1035,28 @@ apply: mh.
10331035
by rewrite inE orbC ny.
10341036
Qed.
10351037

1038+
Section pairRV.
1039+
Context d d' {T : measurableType d} {T' : measurableType d'} {R : realType}
1040+
(P : probability T R).
1041+
1042+
Definition pairRV (X Y : {RV P >-> T'}) : T * T -> T' * T' :=
1043+
(fun x => (X x.1, Y x.2)).
1044+
1045+
Lemma pairM (X Y : {RV P >-> T'}) : measurable_fun setT (pairRV X Y).
1046+
Proof.
1047+
rewrite /pairRV.
1048+
apply/prod_measurable_funP; split => //=.
1049+
rewrite (_ : (fst \o (fun x : T * T => (X x.1, Y x.2))) = (fun x => X x.1))//.
1050+
by apply/measurableT_comp => //=.
1051+
rewrite (_ : (snd \o (fun x : T * T => (X x.1, Y x.2))) = (fun x => Y x.2))//.
1052+
by apply/measurableT_comp => //=.
1053+
Qed.
1054+
1055+
HB.instance Definition _ (X Y : {RV P >-> T'}) :=
1056+
@isMeasurableFun.Build _ _ _ _ (pairRV X Y) (pairM X Y).
1057+
1058+
End pairRV.
1059+
10361060
Section product_expectation.
10371061
Context {R : realType} d (T : measurableType d).
10381062
Variable P : probability T R.
@@ -1067,19 +1091,30 @@ by exists B2 => //; rewrite setTI.
10671091
by exists B1 => //; rewrite setTI.
10681092
Qed.
10691093

1094+
Lemma tmp1 (X Y : {RV P >-> R}) (B1 B2 : set R) :
1095+
measurable B1 -> measurable B2 ->
1096+
independent_RVs2 P X Y ->
1097+
P (X @^-1` B1 `&` Y @^-1` B2) = (P \x P) (pairRV X Y @^-1` (B1 `*` B2)).
1098+
Proof.
1099+
move=> mB1 mB2 XY.
1100+
rewrite (_ : ((fun x : T * T => (X x.1, Y x.2)) @^-1` (B1 `*` B2)) =
1101+
(X @^-1` B1) `*` (Y @^-1` B2)); last first.
1102+
by apply/seteqP; split => [[x1 x2]|[x1 x2]]//.
1103+
rewrite product_measure1E; last 2 first.
1104+
rewrite -[_ @^-1` _]setTI.
1105+
by apply: (measurable_funP X).
1106+
rewrite -[_ @^-1` _]setTI.
1107+
by apply: (measurable_funP Y).
1108+
by rewrite tmp0//.
1109+
Qed.
1110+
10701111
Let phi (x : R * R) := (x.1 * x.2)%R.
10711112
Let mphi : measurable_fun setT phi.
10721113
Proof.
10731114
rewrite /= /phi.
10741115
by apply: measurable_funM.
10751116
Qed.
10761117

1077-
Lemma tmp (X Y : {RV P >-> R}) :
1078-
independent_RVs2 P X Y ->
1079-
distribution P (X * Y)%R = pushforward (distribution P X \x distribution P Y) mphi.
1080-
Proof.
1081-
Admitted.
1082-
10831118
Lemma PP : (P \x P) setT = 1.
10841119
Proof.
10851120
rewrite /product_measure1 /=.
@@ -1097,61 +1132,73 @@ Qed.
10971132

10981133
HB.instance Definition _ := @Measure_isProbability.Build _ _ R (P \x P) PP.
10991134

1100-
Definition mulRV (X Y : {RV P >-> R}) := (fun x => X x.1 * Y x.2)%R.
1101-
1102-
Lemma pairM (X Y : {RV P >-> R}) : measurable_fun setT (mulRV X Y).
1103-
Proof.
1104-
apply/measurable_funM => //.
1105-
by apply/measurableT_comp.
1106-
by apply/measurableT_comp.
1107-
Qed.
1108-
1109-
HB.instance Definition _ (X Y : {RV P >-> R}) :=
1110-
@isMeasurableFun.Build _ _ _ _ (mulRV X Y) (pairM X Y).
1111-
11121135
Lemma integrable_expectationM (X Y : {RV P >-> R}) :
11131136
independent_RVs2 P X Y ->
11141137
P.-integrable setT (EFin \o X) -> P.-integrable setT (EFin \o Y) ->
1115-
`|'E_(P \x P) [mulRV X Y]| < +oo.
1138+
'E_(P \x P) [(fun x => `|X x.1 * Y x.2|)%R] < +oo
1139+
(* `|'E_(P) [(fun x => X x * Y x)%R]| < +oo *) .
11161140
Proof.
11171141
move=> indeXY iX iY.
1118-
apply: (@le_lt_trans _ _ 'E_(P \x P)[(fun x => `|X x.1 * Y x.2|%R)]).
1142+
(*apply: (@le_lt_trans _ _ 'E_(P \x P)[(fun x => `|(X x.1 * Y x.2)|%R)]
1143+
(* 'E_(P)[(fun x => `|(X x * Y x)|%R)] *) ).
11191144
rewrite unlock/=.
11201145
rewrite (le_trans (le_abse_integral _ _ _))//.
11211146
apply/measurable_EFinP/measurable_funM.
11221147
by apply/measurableT_comp => //.
1123-
by apply/measurableT_comp => //.
1148+
by apply/measurableT_comp => //.*)
11241149
rewrite unlock.
1150+
rewrite [ltLHS](_ : _ =
1151+
\int[distribution (P \x P) (pairRV X Y)%R]_x `|x.1 * x.2|%:E); last first.
1152+
rewrite integral_distribution//=; last first.
1153+
apply/measurable_EFinP => //=.
1154+
by apply/measurableT_comp => //=.
1155+
(* admit. (* NG *)*)
11251156
rewrite [ltLHS](_ : _ =
11261157
\int[distribution P X \x distribution P Y]_x `|x.1 * x.2|%:E); last first.
1127-
transitivity (\int[(distribution (P \x P) (mulRV X Y))]_x (normr x)%:E).
1128-
rewrite integral_distribution//=.
1129-
exact/measurable_EFinP.
1130-
transitivity (
1131-
\int[pushforward (distribution P X \x distribution P Y) mphi]_x (normr x)%:E
1132-
); last first.
1133-
rewrite ge0_integral_pushforward//=.
1134-
exact/measurable_EFinP.
1135-
apply: eq_measure_integral => /= A mA _.
1136-
rewrite /product_measure1/= /pushforward/=.
1137-
rewrite integral_distribution//=.
1138-
admit.
1158+
apply: eq_measure_integral => //= A mA _.
1159+
apply/esym.
1160+
apply: product_measure_unique => //= A1 A2 mA1 mA2.
1161+
rewrite /pushforward/=.
1162+
rewrite -tmp1//.
1163+
by rewrite tmp0//.
11391164
rewrite fubini_tonelli1//=; last first.
11401165
by apply/measurable_EFinP => /=; apply/measurableT_comp => //=.
11411166
rewrite /fubini_F/= -/mu.
1142-
rewrite [ltLHS](_ : _ = \int[distribution P X]_x `|x|%:E * \int[distribution P Y]_y `|y|%:E); last first.
1143-
admit.
1144-
move/integrableP : iX => [mX].
1145-
rewrite -(@integral_distribution _ _ _ _ _ (EFin \o normr))//; last 2 first.
1146-
exact/measurable_EFinP.
1147-
by move=> y; rewrite /= lee_fin.
1148-
move=> iX.
1149-
move/integrableP : iY => [mY].
1150-
rewrite -(@integral_distribution _ _ _ _ _ (EFin \o normr))//; last 2 first.
1167+
rewrite [ltLHS](_ : _ = \int[distribution P X]_x `|x|%:E *
1168+
\int[distribution P Y]_y `|y|%:E); last first.
1169+
rewrite -ge0_integralZr//=; last 2 first.
1170+
exact/measurable_EFinP.
1171+
by apply: integral_ge0 => //.
1172+
apply: eq_integral => x _.
1173+
rewrite -ge0_integralZl//=.
1174+
by under eq_integral do rewrite normrM.
11511175
exact/measurable_EFinP.
1152-
by move=> y; rewrite /= lee_fin.
1153-
move=> iY.
1176+
rewrite integral_distribution//=; last exact/measurable_EFinP.
1177+
rewrite integral_distribution//=; last exact/measurable_EFinP.
11541178
rewrite lte_mul_pinfty//.
1179+
by apply: integral_ge0 => //.
1180+
apply: integral_fune_fin_num => //=.
1181+
by move/integrable_abse : iX => //.
1182+
apply: integral_fune_lt_pinfty => //.
1183+
by move/integrable_abse : iY => //.
1184+
Qed.
1185+
1186+
Lemma expectation_prod (X Y : {RV P >-> R}) :
1187+
independent_RVs2 P X Y ->
1188+
P.-integrable setT (EFin \o X) -> P.-integrable setT (EFin \o Y) ->
1189+
'E_(P \x P) [(fun x => X x.1 * Y x.2)%R] = 'E_P [X] * 'E_P [Y].
1190+
Proof.
1191+
move=> indeXY iX iY.
1192+
rewrite unlock.
1193+
rewrite -fubini1//=; last first.
1194+
apply/integrableP; split.
1195+
admit.
1196+
have := integrable_expectationM indeXY iX iY.
1197+
rewrite unlock.
1198+
apply: le_lt_trans.
1199+
rewrite le_eqVlt; apply/orP; left.
1200+
by apply/eqP/eq_integral => y _//.
1201+
rewrite /fubini_F/=.
11551202
Admitted.
11561203

11571204
End product_expectation.

0 commit comments

Comments
 (0)