@@ -573,6 +573,12 @@ Context {d1} {d2} {X : measurableType d1} {Y : measurableType d2}
573573 {R : realType}.
574574Variables (f : {mfun X >-> X'}) (g : {mfun Y >-> Y'}).
575575
576+ Lemma measurable3 : @measurable _ (X * (Y * Y'))%type =
577+ <<s [set uvw : set (X * (Y * Y')%type) |
578+ exists U V W, [/\ measurable U, measurable V, measurable W & uvw = U `*` (V `*` W)] ] >>.
579+ Proof .
580+ Abort .
581+
576582Lemma giry_monoidal_left (x : unit * giry Y R) :
577583 (giry_map snd \o (giry_prod \o (giry_ret \X id))) x ≡μ snd x.
578584Proof .
@@ -613,25 +619,19 @@ Lemma monoidal_join (c : giry (giry X R) R * giry (giry Y R) R) :
613619Proof .
614620case: c => a b.
615621move=> U mU.
616- rewrite /giry_prod /giry_join /giry_join.
622+ rewrite /giry_prod /giry_join /giry_join. (* NB: don't /= here*)
617623apply: product_measure_unique => //= A B mA mB.
618- rewrite /giry_int.
619- rewrite /giry_map.
620- rewrite ge0_integral_pushforward//=; last first.
624+ rewrite /giry_int /giry_map ge0_integral_pushforward//=; last first.
621625 apply: measurable_giry_ev.
622626 exact: measurableX.
623627rewrite fubini_tonelli1//; last first.
624628 have mAB : measurable (A `*` B) by apply: measurableX.
625- rewrite [X in measurable_fun _ X](_ : _ = (@mgiry_ev _ _ R _ mAB \o giry_prod)); last first.
626- done.
627- by apply: measurableT_comp => //=.
629+ by rewrite [X in measurable_fun _ X](_ : _ = @mgiry_ev _ _ R _ mAB \o giry_prod).
628630rewrite -ge0_integralZr//; last 2 first.
629- by apply : measurable_giry_ev.
630- by apply : integral_ge0 => x _ .
631+ exact : measurable_giry_ev.
632+ exact : integral_ge0.
631633apply: eq_integral => /= x _.
632- rewrite /fubini_F/=.
633- rewrite -ge0_integralZl//; last first.
634- by apply: measurable_giry_ev.
634+ rewrite /fubini_F/= -ge0_integralZl//; last exact: measurable_giry_ev.
635635apply: eq_integral => /= y _.
636636by rewrite product_measure1E.
637637Qed .
@@ -667,17 +667,23 @@ Admitted.
667667HB.instance Definition _ xyz U1 := isMeasure.Build _ _ _ (m2 xyz U1)
668668 (m2_measure0 xyz U1) (m2_measure_ge0 xyz U1) (@m2_measure_semi_sigma_additive xyz U1). *)
669669
670-
671670Lemma giry_monoidal_assoc (xyz : (giry X R * giry Y R) * giry Y' R) :
672671 (giry_prod \o (id \X giry_prod) \o prodA) xyz ≡μ
673672 (giry_map prodA \o giry_prod \o (giry_prod \X id)) xyz.
674673Proof .
674+ move: xyz => [[x y] z].
675675move=> U mU.
676676apply: product_measure_unique => // U1 U2 mU1 mU2.
677- rewrite /giry_prod /prodA /pushforward.
678- rewrite /preimage.
679- rewrite /pushforward/=.
680- rewrite -[RHS](product_measure1E xyz.1.1 (* TODO: pbm *)(product_subprobability (xyz.1.2, xyz.2)))//.
677+ rewrite /giry_prod /prodA.
678+ transitivity ((x \x (y \x z)) ((U1 `*` U2))); last first.
679+ by rewrite (@product_measure1E _ _ _ _ _ x (product_subprobability (y, z)))//.
680+ rewrite /=.
681+ apply/esym.
682+ apply: (@product_measure_unique _ _ _ _ _ x (product_subprobability (y, z))) => //=; last first.
683+ exact: measurableX.
684+ move=> A B mA mB.
685+ rewrite /pushforward.
686+
681687Abort .
682688
683689End proj_giry_prod.
0 commit comments