@@ -43,7 +43,10 @@ theorem dirac_one_mconv [MeasurableMul₂ M] (μ : Measure M) [SFinite μ] :
43
43
unfold mconv
44
44
rw [MeasureTheory.Measure.dirac_prod, map_map]
45
45
· simp only [Function.comp_def, one_mul, map_id']
46
- all_goals { measurability }
46
+ · -- NB. `measurability` proves this, but is slow
47
+ -- TODO(#13864): reinstate faster automation, e.g. by making `fun_prop` work here
48
+ exact Measurable.mul measurable_fst measurable_snd
49
+ measurability
47
50
48
51
/-- Convolution of a measure μ with the dirac measure at 1 returns μ. -/
49
52
@[to_additive (attr := simp)]
@@ -52,7 +55,14 @@ theorem mconv_dirac_one [MeasurableMul₂ M]
52
55
unfold mconv
53
56
rw [MeasureTheory.Measure.prod_dirac, map_map]
54
57
· simp only [Function.comp_def, mul_one, map_id']
55
- all_goals { measurability }
58
+ · -- NB. `measurability` proves this, but is slow
59
+ -- TODO(#13864): reinstate faster automation, e.g. by making `fun_prop` work here
60
+ exact Measurable.mul measurable_fst measurable_snd
61
+ -- NB. `measurability` proves this, but is slow
62
+ -- TODO(#13864): reinstate faster automation, e.g. by making `fun_prop` work here
63
+ apply Measurable.prod
64
+ · apply measurable_id'
65
+ · exact measurable_const
56
66
57
67
/-- Convolution of the zero measure with a measure μ returns the zero measure. -/
58
68
@[to_additive (attr := simp) conv_zero]
@@ -71,14 +81,18 @@ theorem mconv_add [MeasurableMul₂ M] (μ : Measure M) (ν : Measure M) (ρ : M
71
81
[SFinite ν] [SFinite ρ] : μ ∗ (ν + ρ) = μ ∗ ν + μ ∗ ρ := by
72
82
unfold mconv
73
83
rw [prod_add, map_add]
74
- measurability
84
+ -- NB. `measurability` proves this, but is pretty slow
85
+ -- TODO(#13864): reinstate faster automation, e.g. by making `fun_prop` work here
86
+ exact Measurable.mul measurable_fst measurable_snd
75
87
76
88
@[to_additive add_conv]
77
89
theorem add_mconv [MeasurableMul₂ M] (μ : Measure M) (ν : Measure M) (ρ : Measure M) [SFinite μ]
78
90
[SFinite ν] [SFinite ρ] : (μ + ν) ∗ ρ = μ ∗ ρ + ν ∗ ρ := by
79
91
unfold mconv
80
92
rw [add_prod, map_add]
81
- measurability
93
+ -- NB. `measurability` proves this, but is pretty slow
94
+ -- TODO(#13864): reinstate faster automation, e.g. by making `fun_prop` work here
95
+ exact Measurable.mul measurable_fst measurable_snd
82
96
83
97
/-- To get commutativity, we need the underlying multiplication to be commutative. -/
84
98
@[to_additive conv_comm]
@@ -87,7 +101,10 @@ theorem mconv_comm {M : Type*} [CommMonoid M] [MeasurableSpace M] [MeasurableMul
87
101
unfold mconv
88
102
rw [← prod_swap, map_map]
89
103
· simp [Function.comp_def, mul_comm]
90
- all_goals { measurability }
104
+ · -- NB. `measurability` proves this, but is pretty slow
105
+ -- TODO(#13864): reinstate faster automation, e.g. by making `fun_prop` work here
106
+ exact Measurable.mul measurable_fst measurable_snd
107
+ measurability
91
108
92
109
/-- Convolution of SFinite maps is SFinite. -/
93
110
@[to_additive sfinite_conv_of_sfinite]
@@ -107,7 +124,10 @@ instance probabilitymeasure_of_probabilitymeasures_mconv (μ : Measure M) (ν :
107
124
[MeasurableMul₂ M] [IsProbabilityMeasure μ] [IsProbabilityMeasure ν] :
108
125
IsProbabilityMeasure (μ ∗ ν) := by
109
126
apply MeasureTheory.isProbabilityMeasure_map
110
- measurability
127
+ -- NB. `measurability` proves this, but is really slow
128
+ -- TODO(#13864): reinstate faster automation, e.g. by making `fun_prop` work here
129
+ exact AEMeasurable.mul (measurable_fst.comp_aemeasurable' aemeasurable_id')
130
+ (measurable_snd.comp_aemeasurable' aemeasurable_id')
111
131
112
132
end Measure
113
133
0 commit comments