@@ -153,6 +153,28 @@ def measurableEquivPiIco : UnitAddTorus d ≃ᵐ {x : d → ℝ | ∀ i, x i ∈
153153 (MeasurableEquiv.piCongrRight fun i => AddCircle.measurableEquivIco 1 (a i)).trans <|
154154 MeasurableEquiv.subtypePiEquivPi.symm
155155
156+ theorem lintegral_preimage (f : UnitAddTorus d → ℝ≥0 ∞) (a : d → ℝ) :
157+ ∫⁻ x : UnitAddTorus d, f x =
158+ ∫⁻ (x : d → ℝ) in {x : d → ℝ | ∀ i, x i ∈ Ioc (a i) (a i + 1 )}, f (fun i => x i) := by
159+ have m : MeasurableSet {x : d → ℝ | ∀ i, x i ∈ Ioc (a i) (a i + 1 )} :=
160+ (MeasurableSet.univ_pi (fun i : d => measurableSet_Ioc (a := a i) (b := a i + 1 ))).congr
161+ (by grind)
162+ have hl : (measurableEquivPiIoc a).symm = fun (x : {x : d → ℝ | ∀ i, x i ∈ Ioc (a i) (a i + 1 )})
163+ (i : d) => (x.1 i : UnitAddCircle) := rfl
164+ convert lintegral_map_equiv (μ := volume.comap Subtype.val) f (measurableEquivPiIoc a).symm
165+ · have := Measure.map_map (μ := volume.comap Subtype.val) (measurable_pi_lambda
166+ (fun (x : d → ℝ) => (fun i => x i : UnitAddTorus d))
167+ (fun i => AddCircle.measurable_mk'.comp (measurable_pi_apply i)))
168+ measurable_subtype_coe (α := {x : d → ℝ | ∀ i, x i ∈ Ioc (a i) (a i + 1 )})
169+ simp only [coe_setOf, mem_setOf_eq, Function.comp_def] at this
170+ simp_rw [hl, coe_setOf, mem_setOf_eq, ← this]
171+ convert (measurePreserving_pi _ _ (fun i => AddCircle.measurePreserving_mk 1 (a i))).map_eq.symm
172+ · simp [volume, AddCircle.haarAddCircle]
173+ · convert (map_comap_subtype_coe m volume)
174+ convert (Measure.restrict_pi_pi (fun i => volume) (fun i => Ioc (a i) (a i + 1 ))).symm
175+ grind
176+ · simp only [← coe_eq_subtype, hl, lintegral_subtype_comap m (f := fun x => f (fun i => x i))]
177+
156178variable {E : Type *} [NormedAddCommGroup E] [NormedSpace ℝ E]
157179
158180theorem integral_preimage (f : UnitAddTorus d → E) (a : d → ℝ) :
0 commit comments