measure_theory.integral.periodic
⟷
Mathlib.MeasureTheory.Integral.Periodic
The following section lists changes to this file in mathlib3 and mathlib4 that occured after the initial port. Most recent changes are shown first. Hovering over a commit will show all commits associated with the same mathlib3 commit.
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(last sync)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -321,7 +321,7 @@ theorem intervalIntegral_add_eq_of_pos (hf : Periodic f T) (hT : 0 < T) (t s :
haveI : vadd_invariant_measure (AddSubgroup.zmultiples T) ℝ volume :=
⟨fun c s hs => measure_preimage_add _ _ _⟩
exact
- (isAddFundamentalDomain_Ioc hT t).set_integral_eq (isAddFundamentalDomain_Ioc hT s)
+ (isAddFundamentalDomain_Ioc hT t).setIntegral_eq (isAddFundamentalDomain_Ioc hT s)
hf.map_vadd_zmultiples
#align function.periodic.interval_integral_add_eq_of_pos Function.Periodic.intervalIntegral_add_eq_of_pos
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -336,7 +336,7 @@ theorem intervalIntegral_add_eq (hf : Periodic f T) (t s : ℝ) :
· exact hf.interval_integral_add_eq_of_pos hT t s
· simp
· rw [← neg_inj, ← integral_symm, ← integral_symm]
- simpa only [← sub_eq_add_neg, add_sub_cancel] using
+ simpa only [← sub_eq_add_neg, add_sub_cancel_right] using
hf.neg.interval_integral_add_eq_of_pos (neg_pos.2 hT) (t + T) (s + T)
#align function.periodic.interval_integral_add_eq Function.Periodic.intervalIntegral_add_eq
-/
@@ -368,7 +368,7 @@ theorem intervalIntegral_add_zsmul_eq (hf : Periodic f T) (n : ℤ) (t : ℝ)
intros
induction' m with m ih
· simp
- · simp only [succ_nsmul', hf.interval_integral_add_eq_add 0 (m • T) h_int, ih, zero_add]
+ · simp only [succ_nsmul, hf.interval_integral_add_eq_add 0 (m • T) h_int, ih, zero_add]
-- Then prove it for all integers
cases' n with n n
· simp [← this n]
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -195,7 +195,7 @@ protected theorem lintegral_preimage (t : ℝ) (f : AddCircle T → ℝ≥0∞)
have := lintegral_map_equiv f (measurable_equiv_Ioc T t).symm
swap; exact volume
simp only [measurable_equiv_Ioc, equiv_Ioc, QuotientAddGroup.equivIocMod, MeasurableEquiv.symm_mk,
- MeasurableEquiv.coe_mk, Equiv.coe_fn_symm_mk] at this
+ MeasurableEquiv.coe_mk, Equiv.coe_fn_symm_mk] at this
rw [← (AddCircle.measurePreserving_mk T t).map_eq]
convert this.symm using 1
-- TODO : there is no "set_lintegral_eq_subtype"?
@@ -221,7 +221,7 @@ protected theorem integral_preimage (t : ℝ) (f : AddCircle T → E) :
have m : MeasurableSet (Ioc t (t + T)) := measurableSet_Ioc
have := integral_map_equiv (measurable_equiv_Ioc T t).symm f
simp only [measurable_equiv_Ioc, equiv_Ioc, QuotientAddGroup.equivIocMod, MeasurableEquiv.symm_mk,
- MeasurableEquiv.coe_mk, Equiv.coe_fn_symm_mk, coe_coe] at this
+ MeasurableEquiv.coe_mk, Equiv.coe_fn_symm_mk, coe_coe] at this
rw [← (AddCircle.measurePreserving_mk T t).map_eq, set_integral_eq_subtype m, ← this]
have : (coe : Ioc t (t + T) → AddCircle T) = (coe : ℝ → AddCircle T) ∘ (coe : _ → ℝ) := by ext1 x;
rfl
mathlib commit https://github.com/leanprover-community/mathlib/commit/b1abe23ae96fef89ad30d9f4362c307f72a55010
@@ -34,17 +34,13 @@ open Set Function MeasureTheory MeasureTheory.Measure TopologicalSpace AddSubgro
open scoped MeasureTheory NNReal ENNReal
-#print AddCircle.measurableSpace /-
noncomputable instance AddCircle.measurableSpace {a : ℝ} : MeasurableSpace (AddCircle a) :=
QuotientAddGroup.measurableSpace _
#align add_circle.measurable_space AddCircle.measurableSpace
--/
-#print AddCircle.borelSpace /-
instance AddCircle.borelSpace {a : ℝ} : BorelSpace (AddCircle a) :=
QuotientAddGroup.borelSpace
#align add_circle.borel_space AddCircle.borelSpace
--/
#print AddCircle.measurable_mk' /-
@[measurability]
@@ -252,11 +248,9 @@ namespace UnitAddCircle
attribute [local instance] Real.fact_zero_lt_one
-#print UnitAddCircle.measureSpace /-
noncomputable instance measureSpace : MeasureSpace UnitAddCircle :=
AddCircle.measureSpace 1
#align unit_add_circle.measure_space UnitAddCircle.measureSpace
--/
#print UnitAddCircle.measure_univ /-
@[simp]
@@ -264,11 +258,9 @@ protected theorem measure_univ : volume (Set.univ : Set UnitAddCircle) = 1 := by
#align unit_add_circle.measure_univ UnitAddCircle.measure_univ
-/
-#print UnitAddCircle.isFiniteMeasure /-
instance isFiniteMeasure : IsFiniteMeasure (volume : Measure UnitAddCircle) :=
AddCircle.isFiniteMeasure 1
#align unit_add_circle.is_finite_measure UnitAddCircle.isFiniteMeasure
--/
#print UnitAddCircle.measurePreserving_mk /-
/-- The covering map from `ℝ` to the "unit additive circle" `ℝ ⧸ ℤ` is measure-preserving,
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -69,7 +69,7 @@ theorem isAddFundamentalDomain_Ioc {T : ℝ} (hT : 0 < T) (t : ℝ)
#print isAddFundamentalDomain_Ioc' /-
theorem isAddFundamentalDomain_Ioc' {T : ℝ} (hT : 0 < T) (t : ℝ)
(μ : Measure ℝ := by exact MeasureTheory.MeasureSpace.volume) :
- IsAddFundamentalDomain (AddSubgroup.zmultiples T).opposite (Ioc t (t + T)) μ :=
+ IsAddFundamentalDomain (AddSubgroup.zmultiples T).opEquiv (Ioc t (t + T)) μ :=
by
refine' is_add_fundamental_domain.mk' measurable_set_Ioc.null_measurable_set fun x => _
have : bijective (cod_restrict (fun n : ℤ => n • T) (AddSubgroup.zmultiples T) _) :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,11 +3,11 @@ Copyright (c) 2021 Yury Kudryashov. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Yury Kudryashov, Alex Kontorovich, Heather Macbeth
-/
-import Mathbin.MeasureTheory.Measure.Lebesgue.EqHaar
-import Mathbin.MeasureTheory.Measure.Haar.Quotient
-import Mathbin.MeasureTheory.Constructions.Polish
-import Mathbin.MeasureTheory.Integral.IntervalIntegral
-import Mathbin.Topology.Algebra.Order.Floor
+import MeasureTheory.Measure.Lebesgue.EqHaar
+import MeasureTheory.Measure.Haar.Quotient
+import MeasureTheory.Constructions.Polish
+import MeasureTheory.Integral.IntervalIntegral
+import Topology.Algebra.Order.Floor
#align_import measure_theory.integral.periodic from "leanprover-community/mathlib"@"f2ad3645af9effcdb587637dc28a6074edc813f9"
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,11 +2,6 @@
Copyright (c) 2021 Yury Kudryashov. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Yury Kudryashov, Alex Kontorovich, Heather Macbeth
-
-! This file was ported from Lean 3 source module measure_theory.integral.periodic
-! leanprover-community/mathlib commit f2ad3645af9effcdb587637dc28a6074edc813f9
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathbin.MeasureTheory.Measure.Lebesgue.EqHaar
import Mathbin.MeasureTheory.Measure.Haar.Quotient
@@ -14,6 +9,8 @@ import Mathbin.MeasureTheory.Constructions.Polish
import Mathbin.MeasureTheory.Integral.IntervalIntegral
import Mathbin.Topology.Algebra.Order.Floor
+#align_import measure_theory.integral.periodic from "leanprover-community/mathlib"@"f2ad3645af9effcdb587637dc28a6074edc813f9"
+
/-!
# Integrals of periodic functions
mathlib commit https://github.com/leanprover-community/mathlib/commit/f2ad3645af9effcdb587637dc28a6074edc813f9
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Yury Kudryashov, Alex Kontorovich, Heather Macbeth
! This file was ported from Lean 3 source module measure_theory.integral.periodic
-! leanprover-community/mathlib commit 9f55d0d4363ae59948c33864cbc52e0b12e0e8ce
+! leanprover-community/mathlib commit f2ad3645af9effcdb587637dc28a6074edc813f9
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -17,6 +17,9 @@ import Mathbin.Topology.Algebra.Order.Floor
/-!
# Integrals of periodic functions
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
In this file we prove that the half-open interval `Ioc t (t + T)` in `ℝ` is a fundamental domain of
the action of the subgroup `ℤ ∙ T` on `ℝ`.
mathlib commit https://github.com/leanprover-community/mathlib/commit/2a0ce625dbb0ffbc7d1316597de0b25c1ec75303
@@ -34,19 +34,26 @@ open Set Function MeasureTheory MeasureTheory.Measure TopologicalSpace AddSubgro
open scoped MeasureTheory NNReal ENNReal
+#print AddCircle.measurableSpace /-
noncomputable instance AddCircle.measurableSpace {a : ℝ} : MeasurableSpace (AddCircle a) :=
QuotientAddGroup.measurableSpace _
#align add_circle.measurable_space AddCircle.measurableSpace
+-/
+#print AddCircle.borelSpace /-
instance AddCircle.borelSpace {a : ℝ} : BorelSpace (AddCircle a) :=
QuotientAddGroup.borelSpace
#align add_circle.borel_space AddCircle.borelSpace
+-/
+#print AddCircle.measurable_mk' /-
@[measurability]
protected theorem AddCircle.measurable_mk' {a : ℝ} : Measurable (coe : ℝ → AddCircle a) :=
Continuous.measurable <| AddCircle.continuous_mk' a
#align add_circle.measurable_mk' AddCircle.measurable_mk'
+-/
+#print isAddFundamentalDomain_Ioc /-
theorem isAddFundamentalDomain_Ioc {T : ℝ} (hT : 0 < T) (t : ℝ)
(μ : Measure ℝ := by exact MeasureTheory.MeasureSpace.volume) :
IsAddFundamentalDomain (AddSubgroup.zmultiples T) (Ioc t (t + T)) μ :=
@@ -57,7 +64,9 @@ theorem isAddFundamentalDomain_Ioc {T : ℝ} (hT : 0 < T) (t : ℝ)
refine' this.exists_unique_iff.2 _
simpa only [add_comm x] using existsUnique_add_zsmul_mem_Ioc hT x t
#align is_add_fundamental_domain_Ioc isAddFundamentalDomain_Ioc
+-/
+#print isAddFundamentalDomain_Ioc' /-
theorem isAddFundamentalDomain_Ioc' {T : ℝ} (hT : 0 < T) (t : ℝ)
(μ : Measure ℝ := by exact MeasureTheory.MeasureSpace.volume) :
IsAddFundamentalDomain (AddSubgroup.zmultiples T).opposite (Ioc t (t + T)) μ :=
@@ -68,17 +77,21 @@ theorem isAddFundamentalDomain_Ioc' {T : ℝ} (hT : 0 < T) (t : ℝ)
refine' this.exists_unique_iff.2 _
simpa using existsUnique_add_zsmul_mem_Ioc hT x t
#align is_add_fundamental_domain_Ioc' isAddFundamentalDomain_Ioc'
+-/
namespace AddCircle
variable (T : ℝ) [hT : Fact (0 < T)]
+#print AddCircle.measureSpace /-
/-- Equip the "additive circle" `ℝ ⧸ (ℤ ∙ T)` with, as a standard measure, the Haar measure of total
mass `T` -/
noncomputable instance measureSpace : MeasureSpace (AddCircle T) :=
{ AddCircle.measurableSpace with volume := ENNReal.ofReal T • addHaarMeasure ⊤ }
#align add_circle.measure_space AddCircle.measureSpace
+-/
+#print AddCircle.measure_univ /-
@[simp]
protected theorem measure_univ : volume (Set.univ : Set (AddCircle T)) = ENNReal.ofReal T :=
by
@@ -86,14 +99,18 @@ protected theorem measure_univ : volume (Set.univ : Set (AddCircle T)) = ENNReal
rw [← positive_compacts.coe_top]
simp [add_haar_measure_self, -positive_compacts.coe_top]
#align add_circle.measure_univ AddCircle.measure_univ
+-/
instance : IsAddHaarMeasure (volume : Measure (AddCircle T)) :=
IsAddHaarMeasure.smul _ (by simp [hT.out]) ENNReal.ofReal_ne_top
+#print AddCircle.isFiniteMeasure /-
instance isFiniteMeasure : IsFiniteMeasure (volume : Measure (AddCircle T))
where measure_univ_lt_top := by simp
#align add_circle.is_finite_measure AddCircle.isFiniteMeasure
+-/
+#print AddCircle.measurePreserving_mk /-
/-- The covering map from `ℝ` to the "additive circle" `ℝ ⧸ (ℤ ∙ T)` is measure-preserving,
considered with respect to the standard measure (defined to be the Haar measure of total mass `T`)
on the additive circle, and with respect to the restriction of Lebsegue measure on `ℝ` to an
@@ -104,7 +121,9 @@ protected theorem measurePreserving_mk (t : ℝ) :
(⊤ : PositiveCompacts (AddCircle T)) (by simp) T.toNNReal
(by simp [← ENNReal.ofReal_coe_nnreal, Real.coe_toNNReal T hT.out.le])
#align add_circle.measure_preserving_mk AddCircle.measurePreserving_mk
+-/
+#print AddCircle.volume_closedBall /-
theorem volume_closedBall {x : AddCircle T} (ε : ℝ) :
volume (Metric.closedBall x ε) = ENNReal.ofReal (min T (2 * ε)) :=
by
@@ -129,6 +148,7 @@ theorem volume_closedBall {x : AddCircle T} (ε : ℝ) :
· simp [hε, min_eq_right (by linarith : 2 * ε ≤ T)]
· simp [hε, min_eq_left (by linarith : T ≤ 2 * ε)]
#align add_circle.volume_closed_ball AddCircle.volume_closedBall
+-/
instance : IsUnifLocDoublingMeasure (volume : Measure (AddCircle T)) :=
by
@@ -139,6 +159,7 @@ instance : IsUnifLocDoublingMeasure (volume : Measure (AddCircle T)) :=
rw [mul_min_of_nonneg _ _ (zero_le_two : (0 : ℝ) ≤ 2)]
exact min_le_min (by linarith [hT.out]) (le_refl _)
+#print AddCircle.measurableEquivIoc /-
/-- The isomorphism `add_circle T ≃ Ioc a (a + T)` whose inverse is the natural quotient map,
as an equivalence of measurable spaces. -/
noncomputable def measurableEquivIoc (a : ℝ) : AddCircle T ≃ᵐ Ioc a (a + T) :=
@@ -151,7 +172,9 @@ noncomputable def measurableEquivIoc (a : ℝ) : AddCircle T ≃ᵐ Ioc a (a + T
ContinuousAt.continuousOn fun x hx => continuousAt_equivIoc T a hx).Measurable
measurable_inv_fun := AddCircle.measurable_mk'.comp measurable_subtype_coe }
#align add_circle.measurable_equiv_Ioc AddCircle.measurableEquivIoc
+-/
+#print AddCircle.measurableEquivIco /-
/-- The isomorphism `add_circle T ≃ Ico a (a + T)` whose inverse is the natural quotient map,
as an equivalence of measurable spaces. -/
noncomputable def measurableEquivIco (a : ℝ) : AddCircle T ≃ᵐ Ico a (a + T) :=
@@ -164,7 +187,9 @@ noncomputable def measurableEquivIco (a : ℝ) : AddCircle T ≃ᵐ Ico a (a + T
ContinuousAt.continuousOn fun x hx => continuousAt_equivIco T a hx).Measurable
measurable_inv_fun := AddCircle.measurable_mk'.comp measurable_subtype_coe }
#align add_circle.measurable_equiv_Ico AddCircle.measurableEquivIco
+-/
+#print AddCircle.lintegral_preimage /-
/-- The lower integral of a function over `add_circle T` is equal to the lower integral over an
interval (t, t + T] in `ℝ` of its lift to `ℝ`. -/
protected theorem lintegral_preimage (t : ℝ) (f : AddCircle T → ℝ≥0∞) :
@@ -187,9 +212,11 @@ protected theorem lintegral_preimage (t : ℝ) (f : AddCircle T → ℝ≥0∞)
map_comap_subtype_coe m]
rfl
#align add_circle.lintegral_preimage AddCircle.lintegral_preimage
+-/
variable {E : Type _} [NormedAddCommGroup E] [NormedSpace ℝ E] [CompleteSpace E]
+#print AddCircle.integral_preimage /-
/-- The integral of an almost-everywhere strongly measurable function over `add_circle T` is equal
to the integral over an interval (t, t + T] in `ℝ` of its lift to `ℝ`. -/
protected theorem integral_preimage (t : ℝ) (f : AddCircle T → E) :
@@ -206,7 +233,9 @@ protected theorem integral_preimage (t : ℝ) (f : AddCircle T → E) :
map_comap_subtype_coe m]
rfl
#align add_circle.integral_preimage AddCircle.integral_preimage
+-/
+#print AddCircle.intervalIntegral_preimage /-
/-- The integral of an almost-everywhere strongly measurable function over `add_circle T` is equal
to the integral over an interval (t, t + T] in `ℝ` of its lift to `ℝ`. -/
protected theorem intervalIntegral_preimage (t : ℝ) (f : AddCircle T → E) :
@@ -215,6 +244,7 @@ protected theorem intervalIntegral_preimage (t : ℝ) (f : AddCircle T → E) :
rw [integral_of_le, AddCircle.integral_preimage T t f]
linarith [hT.out]
#align add_circle.interval_integral_preimage AddCircle.intervalIntegral_preimage
+-/
end AddCircle
@@ -222,18 +252,25 @@ namespace UnitAddCircle
attribute [local instance] Real.fact_zero_lt_one
+#print UnitAddCircle.measureSpace /-
noncomputable instance measureSpace : MeasureSpace UnitAddCircle :=
AddCircle.measureSpace 1
#align unit_add_circle.measure_space UnitAddCircle.measureSpace
+-/
+#print UnitAddCircle.measure_univ /-
@[simp]
protected theorem measure_univ : volume (Set.univ : Set UnitAddCircle) = 1 := by simp
#align unit_add_circle.measure_univ UnitAddCircle.measure_univ
+-/
+#print UnitAddCircle.isFiniteMeasure /-
instance isFiniteMeasure : IsFiniteMeasure (volume : Measure UnitAddCircle) :=
AddCircle.isFiniteMeasure 1
#align unit_add_circle.is_finite_measure UnitAddCircle.isFiniteMeasure
+-/
+#print UnitAddCircle.measurePreserving_mk /-
/-- The covering map from `ℝ` to the "unit additive circle" `ℝ ⧸ ℤ` is measure-preserving,
considered with respect to the standard measure (defined to be the Haar measure of total mass 1)
on the additive circle, and with respect to the restriction of Lebsegue measure on `ℝ` to an
@@ -242,29 +279,36 @@ protected theorem measurePreserving_mk (t : ℝ) :
MeasurePreserving (coe : ℝ → UnitAddCircle) (volume.restrict (Ioc t (t + 1))) :=
AddCircle.measurePreserving_mk 1 t
#align unit_add_circle.measure_preserving_mk UnitAddCircle.measurePreserving_mk
+-/
+#print UnitAddCircle.lintegral_preimage /-
/-- The integral of a measurable function over `unit_add_circle` is equal to the integral over an
interval (t, t + 1] in `ℝ` of its lift to `ℝ`. -/
protected theorem lintegral_preimage (t : ℝ) (f : UnitAddCircle → ℝ≥0∞) :
∫⁻ a in Ioc t (t + 1), f a = ∫⁻ b : UnitAddCircle, f b :=
AddCircle.lintegral_preimage 1 t f
#align unit_add_circle.lintegral_preimage UnitAddCircle.lintegral_preimage
+-/
variable {E : Type _} [NormedAddCommGroup E] [NormedSpace ℝ E] [CompleteSpace E]
+#print UnitAddCircle.integral_preimage /-
/-- The integral of an almost-everywhere strongly measurable function over `unit_add_circle` is
equal to the integral over an interval (t, t + 1] in `ℝ` of its lift to `ℝ`. -/
protected theorem integral_preimage (t : ℝ) (f : UnitAddCircle → E) :
∫ a in Ioc t (t + 1), f a = ∫ b : UnitAddCircle, f b :=
AddCircle.integral_preimage 1 t f
#align unit_add_circle.integral_preimage UnitAddCircle.integral_preimage
+-/
+#print UnitAddCircle.intervalIntegral_preimage /-
/-- The integral of an almost-everywhere strongly measurable function over `unit_add_circle` is
equal to the integral over an interval (t, t + 1] in `ℝ` of its lift to `ℝ`. -/
protected theorem intervalIntegral_preimage (t : ℝ) (f : UnitAddCircle → E) :
∫ a in t..t + 1, f a = ∫ b : UnitAddCircle, f b :=
AddCircle.intervalIntegral_preimage 1 t f
#align unit_add_circle.interval_integral_preimage UnitAddCircle.intervalIntegral_preimage
+-/
end UnitAddCircle
@@ -276,6 +320,7 @@ namespace Periodic
variable {f : ℝ → E} {T : ℝ}
+#print Function.Periodic.intervalIntegral_add_eq_of_pos /-
/-- An auxiliary lemma for a more general `function.periodic.interval_integral_add_eq`. -/
theorem intervalIntegral_add_eq_of_pos (hf : Periodic f T) (hT : 0 < T) (t s : ℝ) :
∫ x in t..t + T, f x = ∫ x in s..s + T, f x :=
@@ -287,7 +332,9 @@ theorem intervalIntegral_add_eq_of_pos (hf : Periodic f T) (hT : 0 < T) (t s :
(isAddFundamentalDomain_Ioc hT t).set_integral_eq (isAddFundamentalDomain_Ioc hT s)
hf.map_vadd_zmultiples
#align function.periodic.interval_integral_add_eq_of_pos Function.Periodic.intervalIntegral_add_eq_of_pos
+-/
+#print Function.Periodic.intervalIntegral_add_eq /-
/-- If `f` is a periodic function with period `T`, then its integral over `[t, t + T]` does not
depend on `t`. -/
theorem intervalIntegral_add_eq (hf : Periodic f T) (t s : ℝ) :
@@ -300,7 +347,9 @@ theorem intervalIntegral_add_eq (hf : Periodic f T) (t s : ℝ) :
simpa only [← sub_eq_add_neg, add_sub_cancel] using
hf.neg.interval_integral_add_eq_of_pos (neg_pos.2 hT) (t + T) (s + T)
#align function.periodic.interval_integral_add_eq Function.Periodic.intervalIntegral_add_eq
+-/
+#print Function.Periodic.intervalIntegral_add_eq_add /-
/-- If `f` is an integrable periodic function with period `T`, then its integral over `[t, s + T]`
is the sum of its integrals over the intervals `[t, s]` and `[t, t + T]`. -/
theorem intervalIntegral_add_eq_add (hf : Periodic f T) (t s : ℝ)
@@ -308,7 +357,9 @@ theorem intervalIntegral_add_eq_add (hf : Periodic f T) (t s : ℝ)
∫ x in t..s + T, f x = (∫ x in t..s, f x) + ∫ x in t..t + T, f x := by
rw [hf.interval_integral_add_eq t s, integral_add_adjacent_intervals (h_int t s) (h_int s _)]
#align function.periodic.interval_integral_add_eq_add Function.Periodic.intervalIntegral_add_eq_add
+-/
+#print Function.Periodic.intervalIntegral_add_zsmul_eq /-
/-- If `f` is an integrable periodic function with period `T`, and `n` is an integer, then its
integral over `[t, t + n • T]` is `n` times its integral over `[t, t + T]`. -/
theorem intervalIntegral_add_zsmul_eq (hf : Periodic f T) (n : ℤ) (t : ℝ)
@@ -335,6 +386,7 @@ theorem intervalIntegral_add_zsmul_eq (hf : Periodic f T) (n : ℤ) (t : ℝ)
simp_rw [integral_comp_add_right, h₀, zero_add, this (n + 1), add_comm T,
hf.interval_integral_add_eq ((n + 1) • T) 0, zero_add]
#align function.periodic.interval_integral_add_zsmul_eq Function.Periodic.intervalIntegral_add_zsmul_eq
+-/
section RealValued
@@ -344,6 +396,7 @@ variable {g : ℝ → ℝ}
variable (hg : Periodic g T) (h_int : ∀ t₁ t₂, IntervalIntegrable g MeasureSpace.volume t₁ t₂)
+#print Function.Periodic.sInf_add_zsmul_le_integral_of_pos /-
/-- If `g : ℝ → ℝ` is periodic with period `T > 0`, then for any `t : ℝ`, the function
`t ↦ ∫ x in 0..t, g x` is bounded below by `t ↦ X + ⌊t/T⌋ • Y` for appropriate constants `X` and
`Y`. -/
@@ -361,7 +414,9 @@ theorem sInf_add_zsmul_le_integral_of_pos (hT : 0 < T) (t : ℝ) :
(continuous_primitive h_int 0).ContinuousOn.sInf_image_Icc_le
(mem_Icc_of_Ico (Int.fract_div_mul_self_mem_Ico T t hT))
#align function.periodic.Inf_add_zsmul_le_integral_of_pos Function.Periodic.sInf_add_zsmul_le_integral_of_pos
+-/
+#print Function.Periodic.integral_le_sSup_add_zsmul_of_pos /-
/-- If `g : ℝ → ℝ` is periodic with period `T > 0`, then for any `t : ℝ`, the function
`t ↦ ∫ x in 0..t, g x` is bounded above by `t ↦ X + ⌊t/T⌋ • Y` for appropriate constants `X` and
`Y`. -/
@@ -379,7 +434,9 @@ theorem integral_le_sSup_add_zsmul_of_pos (hT : 0 < T) (t : ℝ) :
(continuous_primitive h_int 0).ContinuousOn.le_sSup_image_Icc
(mem_Icc_of_Ico (Int.fract_div_mul_self_mem_Ico T t hT))
#align function.periodic.integral_le_Sup_add_zsmul_of_pos Function.Periodic.integral_le_sSup_add_zsmul_of_pos
+-/
+#print Function.Periodic.tendsto_atTop_intervalIntegral_of_pos /-
/-- If `g : ℝ → ℝ` is periodic with period `T > 0` and `0 < ∫ x in 0..T, g x`, then
`t ↦ ∫ x in 0..t, g x` tends to `∞` as `t` tends to `∞`. -/
theorem tendsto_atTop_intervalIntegral_of_pos (h₀ : 0 < ∫ x in 0 ..T, g x) (hT : 0 < T) :
@@ -390,7 +447,9 @@ theorem tendsto_atTop_intervalIntegral_of_pos (h₀ : 0 < ∫ x in 0 ..T, g x) (
apply tendsto.at_top_zsmul_const h₀
exact tendsto_floor_at_top.comp (tendsto_id.at_top_mul_const (inv_pos.mpr hT))
#align function.periodic.tendsto_at_top_interval_integral_of_pos Function.Periodic.tendsto_atTop_intervalIntegral_of_pos
+-/
+#print Function.Periodic.tendsto_atBot_intervalIntegral_of_pos /-
/-- If `g : ℝ → ℝ` is periodic with period `T > 0` and `0 < ∫ x in 0..T, g x`, then
`t ↦ ∫ x in 0..t, g x` tends to `-∞` as `t` tends to `-∞`. -/
theorem tendsto_atBot_intervalIntegral_of_pos (h₀ : 0 < ∫ x in 0 ..T, g x) (hT : 0 < T) :
@@ -401,20 +460,25 @@ theorem tendsto_atBot_intervalIntegral_of_pos (h₀ : 0 < ∫ x in 0 ..T, g x) (
apply tendsto.at_bot_zsmul_const h₀
exact tendsto_floor_at_bot.comp (tendsto_id.at_bot_mul_const (inv_pos.mpr hT))
#align function.periodic.tendsto_at_bot_interval_integral_of_pos Function.Periodic.tendsto_atBot_intervalIntegral_of_pos
+-/
+#print Function.Periodic.tendsto_atTop_intervalIntegral_of_pos' /-
/-- If `g : ℝ → ℝ` is periodic with period `T > 0` and `∀ x, 0 < g x`, then `t ↦ ∫ x in 0..t, g x`
tends to `∞` as `t` tends to `∞`. -/
theorem tendsto_atTop_intervalIntegral_of_pos' (h₀ : ∀ x, 0 < g x) (hT : 0 < T) :
Tendsto (fun t => ∫ x in 0 ..t, g x) atTop atTop :=
hg.tendsto_atTop_intervalIntegral_of_pos h_int (intervalIntegral_pos_of_pos (h_int 0 T) h₀ hT) hT
#align function.periodic.tendsto_at_top_interval_integral_of_pos' Function.Periodic.tendsto_atTop_intervalIntegral_of_pos'
+-/
+#print Function.Periodic.tendsto_atBot_intervalIntegral_of_pos' /-
/-- If `g : ℝ → ℝ` is periodic with period `T > 0` and `∀ x, 0 < g x`, then `t ↦ ∫ x in 0..t, g x`
tends to `-∞` as `t` tends to `-∞`. -/
theorem tendsto_atBot_intervalIntegral_of_pos' (h₀ : ∀ x, 0 < g x) (hT : 0 < T) :
Tendsto (fun t => ∫ x in 0 ..t, g x) atBot atBot :=
hg.tendsto_atBot_intervalIntegral_of_pos h_int (intervalIntegral_pos_of_pos (h_int 0 T) h₀ hT) hT
#align function.periodic.tendsto_at_bot_interval_integral_of_pos' Function.Periodic.tendsto_atBot_intervalIntegral_of_pos'
+-/
end RealValued
mathlib commit https://github.com/leanprover-community/mathlib/commit/2a0ce625dbb0ffbc7d1316597de0b25c1ec75303
@@ -39,7 +39,7 @@ noncomputable instance AddCircle.measurableSpace {a : ℝ} : MeasurableSpace (Ad
#align add_circle.measurable_space AddCircle.measurableSpace
instance AddCircle.borelSpace {a : ℝ} : BorelSpace (AddCircle a) :=
- quotientAddGroup.borelSpace
+ QuotientAddGroup.borelSpace
#align add_circle.borel_space AddCircle.borelSpace
@[measurability]
mathlib commit https://github.com/leanprover-community/mathlib/commit/9f55d0d4363ae59948c33864cbc52e0b12e0e8ce
@@ -4,12 +4,13 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Yury Kudryashov, Alex Kontorovich, Heather Macbeth
! This file was ported from Lean 3 source module measure_theory.integral.periodic
-! leanprover-community/mathlib commit fd5edc43dc4f10b85abfe544b88f82cf13c5f844
+! leanprover-community/mathlib commit 9f55d0d4363ae59948c33864cbc52e0b12e0e8ce
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
import Mathbin.MeasureTheory.Measure.Lebesgue.EqHaar
import Mathbin.MeasureTheory.Measure.Haar.Quotient
+import Mathbin.MeasureTheory.Constructions.Polish
import Mathbin.MeasureTheory.Integral.IntervalIntegral
import Mathbin.Topology.Algebra.Order.Floor
@@ -33,14 +34,12 @@ open Set Function MeasureTheory MeasureTheory.Measure TopologicalSpace AddSubgro
open scoped MeasureTheory NNReal ENNReal
-attribute [-instance] QuotientAddGroup.measurableSpace Quotient.instMeasurableSpace
-
noncomputable instance AddCircle.measurableSpace {a : ℝ} : MeasurableSpace (AddCircle a) :=
- borel (AddCircle a)
+ QuotientAddGroup.measurableSpace _
#align add_circle.measurable_space AddCircle.measurableSpace
instance AddCircle.borelSpace {a : ℝ} : BorelSpace (AddCircle a) :=
- ⟨rfl⟩
+ quotientAddGroup.borelSpace
#align add_circle.borel_space AddCircle.borelSpace
@[measurability]
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -74,8 +74,6 @@ namespace AddCircle
variable (T : ℝ) [hT : Fact (0 < T)]
-include hT
-
/-- Equip the "additive circle" `ℝ ⧸ (ℤ ∙ T)` with, as a standard measure, the Haar measure of total
mass `T` -/
noncomputable instance measureSpace : MeasureSpace (AddCircle T) :=
@@ -347,8 +345,6 @@ variable {g : ℝ → ℝ}
variable (hg : Periodic g T) (h_int : ∀ t₁ t₂, IntervalIntegrable g MeasureSpace.volume t₁ t₂)
-include hg h_int
-
/-- If `g : ℝ → ℝ` is periodic with period `T > 0`, then for any `t : ℝ`, the function
`t ↦ ∫ x in 0..t, g x` is bounded below by `t ↦ X + ⌊t/T⌋ • Y` for appropriate constants `X` and
`Y`. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/a3e83f0fa4391c8740f7d773a7a9b74e311ae2a3
@@ -171,7 +171,7 @@ noncomputable def measurableEquivIco (a : ℝ) : AddCircle T ≃ᵐ Ico a (a + T
/-- The lower integral of a function over `add_circle T` is equal to the lower integral over an
interval (t, t + T] in `ℝ` of its lift to `ℝ`. -/
protected theorem lintegral_preimage (t : ℝ) (f : AddCircle T → ℝ≥0∞) :
- (∫⁻ a in Ioc t (t + T), f a) = ∫⁻ b : AddCircle T, f b :=
+ ∫⁻ a in Ioc t (t + T), f a = ∫⁻ b : AddCircle T, f b :=
by
have m : MeasurableSet (Ioc t (t + T)) := measurableSet_Ioc
have := lintegral_map_equiv f (measurable_equiv_Ioc T t).symm
@@ -196,7 +196,7 @@ variable {E : Type _} [NormedAddCommGroup E] [NormedSpace ℝ E] [CompleteSpace
/-- The integral of an almost-everywhere strongly measurable function over `add_circle T` is equal
to the integral over an interval (t, t + T] in `ℝ` of its lift to `ℝ`. -/
protected theorem integral_preimage (t : ℝ) (f : AddCircle T → E) :
- (∫ a in Ioc t (t + T), f a) = ∫ b : AddCircle T, f b :=
+ ∫ a in Ioc t (t + T), f a = ∫ b : AddCircle T, f b :=
by
have m : MeasurableSet (Ioc t (t + T)) := measurableSet_Ioc
have := integral_map_equiv (measurable_equiv_Ioc T t).symm f
@@ -213,7 +213,7 @@ protected theorem integral_preimage (t : ℝ) (f : AddCircle T → E) :
/-- The integral of an almost-everywhere strongly measurable function over `add_circle T` is equal
to the integral over an interval (t, t + T] in `ℝ` of its lift to `ℝ`. -/
protected theorem intervalIntegral_preimage (t : ℝ) (f : AddCircle T → E) :
- (∫ a in t..t + T, f a) = ∫ b : AddCircle T, f b :=
+ ∫ a in t..t + T, f a = ∫ b : AddCircle T, f b :=
by
rw [integral_of_le, AddCircle.integral_preimage T t f]
linarith [hT.out]
@@ -249,7 +249,7 @@ protected theorem measurePreserving_mk (t : ℝ) :
/-- The integral of a measurable function over `unit_add_circle` is equal to the integral over an
interval (t, t + 1] in `ℝ` of its lift to `ℝ`. -/
protected theorem lintegral_preimage (t : ℝ) (f : UnitAddCircle → ℝ≥0∞) :
- (∫⁻ a in Ioc t (t + 1), f a) = ∫⁻ b : UnitAddCircle, f b :=
+ ∫⁻ a in Ioc t (t + 1), f a = ∫⁻ b : UnitAddCircle, f b :=
AddCircle.lintegral_preimage 1 t f
#align unit_add_circle.lintegral_preimage UnitAddCircle.lintegral_preimage
@@ -258,14 +258,14 @@ variable {E : Type _} [NormedAddCommGroup E] [NormedSpace ℝ E] [CompleteSpace
/-- The integral of an almost-everywhere strongly measurable function over `unit_add_circle` is
equal to the integral over an interval (t, t + 1] in `ℝ` of its lift to `ℝ`. -/
protected theorem integral_preimage (t : ℝ) (f : UnitAddCircle → E) :
- (∫ a in Ioc t (t + 1), f a) = ∫ b : UnitAddCircle, f b :=
+ ∫ a in Ioc t (t + 1), f a = ∫ b : UnitAddCircle, f b :=
AddCircle.integral_preimage 1 t f
#align unit_add_circle.integral_preimage UnitAddCircle.integral_preimage
/-- The integral of an almost-everywhere strongly measurable function over `unit_add_circle` is
equal to the integral over an interval (t, t + 1] in `ℝ` of its lift to `ℝ`. -/
protected theorem intervalIntegral_preimage (t : ℝ) (f : UnitAddCircle → E) :
- (∫ a in t..t + 1, f a) = ∫ b : UnitAddCircle, f b :=
+ ∫ a in t..t + 1, f a = ∫ b : UnitAddCircle, f b :=
AddCircle.intervalIntegral_preimage 1 t f
#align unit_add_circle.interval_integral_preimage UnitAddCircle.intervalIntegral_preimage
@@ -281,7 +281,7 @@ variable {f : ℝ → E} {T : ℝ}
/-- An auxiliary lemma for a more general `function.periodic.interval_integral_add_eq`. -/
theorem intervalIntegral_add_eq_of_pos (hf : Periodic f T) (hT : 0 < T) (t s : ℝ) :
- (∫ x in t..t + T, f x) = ∫ x in s..s + T, f x :=
+ ∫ x in t..t + T, f x = ∫ x in s..s + T, f x :=
by
simp only [integral_of_le, hT.le, le_add_iff_nonneg_right]
haveI : vadd_invariant_measure (AddSubgroup.zmultiples T) ℝ volume :=
@@ -294,7 +294,7 @@ theorem intervalIntegral_add_eq_of_pos (hf : Periodic f T) (hT : 0 < T) (t s :
/-- If `f` is a periodic function with period `T`, then its integral over `[t, t + T]` does not
depend on `t`. -/
theorem intervalIntegral_add_eq (hf : Periodic f T) (t s : ℝ) :
- (∫ x in t..t + T, f x) = ∫ x in s..s + T, f x :=
+ ∫ x in t..t + T, f x = ∫ x in s..s + T, f x :=
by
rcases lt_trichotomy 0 T with (hT | rfl | hT)
· exact hf.interval_integral_add_eq_of_pos hT t s
@@ -308,7 +308,7 @@ theorem intervalIntegral_add_eq (hf : Periodic f T) (t s : ℝ) :
is the sum of its integrals over the intervals `[t, s]` and `[t, t + T]`. -/
theorem intervalIntegral_add_eq_add (hf : Periodic f T) (t s : ℝ)
(h_int : ∀ t₁ t₂, IntervalIntegrable f MeasureSpace.volume t₁ t₂) :
- (∫ x in t..s + T, f x) = (∫ x in t..s, f x) + ∫ x in t..t + T, f x := by
+ ∫ x in t..s + T, f x = (∫ x in t..s, f x) + ∫ x in t..t + T, f x := by
rw [hf.interval_integral_add_eq t s, integral_add_adjacent_intervals (h_int t s) (h_int s _)]
#align function.periodic.interval_integral_add_eq_add Function.Periodic.intervalIntegral_add_eq_add
@@ -316,14 +316,14 @@ theorem intervalIntegral_add_eq_add (hf : Periodic f T) (t s : ℝ)
integral over `[t, t + n • T]` is `n` times its integral over `[t, t + T]`. -/
theorem intervalIntegral_add_zsmul_eq (hf : Periodic f T) (n : ℤ) (t : ℝ)
(h_int : ∀ t₁ t₂, IntervalIntegrable f MeasureSpace.volume t₁ t₂) :
- (∫ x in t..t + n • T, f x) = n • ∫ x in t..t + T, f x :=
+ ∫ x in t..t + n • T, f x = n • ∫ x in t..t + T, f x :=
by
-- Reduce to the case `b = 0`
- suffices (∫ x in 0 ..n • T, f x) = n • ∫ x in 0 ..T, f x by
+ suffices ∫ x in 0 ..n • T, f x = n • ∫ x in 0 ..T, f x by
simp only [hf.interval_integral_add_eq t 0, (hf.zsmul n).intervalIntegral_add_eq t 0, zero_add,
this]
-- First prove it for natural numbers
- have : ∀ m : ℕ, (∫ x in 0 ..m • T, f x) = m • ∫ x in 0 ..T, f x :=
+ have : ∀ m : ℕ, ∫ x in 0 ..m • T, f x = m • ∫ x in 0 ..T, f x :=
by
intros
induction' m with m ih
@@ -353,7 +353,7 @@ include hg h_int
`t ↦ ∫ x in 0..t, g x` is bounded below by `t ↦ X + ⌊t/T⌋ • Y` for appropriate constants `X` and
`Y`. -/
theorem sInf_add_zsmul_le_integral_of_pos (hT : 0 < T) (t : ℝ) :
- (sInf ((fun t => ∫ x in 0 ..t, g x) '' Icc 0 T) + ⌊t / T⌋ • ∫ x in 0 ..T, g x) ≤
+ sInf ((fun t => ∫ x in 0 ..t, g x) '' Icc 0 T) + ⌊t / T⌋ • ∫ x in 0 ..T, g x ≤
∫ x in 0 ..t, g x :=
by
let ε := Int.fract (t / T) * T
@@ -371,7 +371,7 @@ theorem sInf_add_zsmul_le_integral_of_pos (hT : 0 < T) (t : ℝ) :
`t ↦ ∫ x in 0..t, g x` is bounded above by `t ↦ X + ⌊t/T⌋ • Y` for appropriate constants `X` and
`Y`. -/
theorem integral_le_sSup_add_zsmul_of_pos (hT : 0 < T) (t : ℝ) :
- (∫ x in 0 ..t, g x) ≤
+ ∫ x in 0 ..t, g x ≤
sSup ((fun t => ∫ x in 0 ..t, g x) '' Icc 0 T) + ⌊t / T⌋ • ∫ x in 0 ..T, g x :=
by
let ε := Int.fract (t / T) * T
mathlib commit https://github.com/leanprover-community/mathlib/commit/5f25c089cb34db4db112556f23c50d12da81b297
@@ -90,12 +90,12 @@ protected theorem measure_univ : volume (Set.univ : Set (AddCircle T)) = ENNReal
simp [add_haar_measure_self, -positive_compacts.coe_top]
#align add_circle.measure_univ AddCircle.measure_univ
-instance : AddHaarMeasure (volume : Measure (AddCircle T)) :=
- AddHaarMeasure.smul _ (by simp [hT.out]) ENNReal.ofReal_ne_top
+instance : IsAddHaarMeasure (volume : Measure (AddCircle T)) :=
+ IsAddHaarMeasure.smul _ (by simp [hT.out]) ENNReal.ofReal_ne_top
-instance finiteMeasure : FiniteMeasure (volume : Measure (AddCircle T))
+instance isFiniteMeasure : IsFiniteMeasure (volume : Measure (AddCircle T))
where measure_univ_lt_top := by simp
-#align add_circle.is_finite_measure AddCircle.finiteMeasure
+#align add_circle.is_finite_measure AddCircle.isFiniteMeasure
/-- The covering map from `ℝ` to the "additive circle" `ℝ ⧸ (ℤ ∙ T)` is measure-preserving,
considered with respect to the standard measure (defined to be the Haar measure of total mass `T`)
@@ -233,9 +233,9 @@ noncomputable instance measureSpace : MeasureSpace UnitAddCircle :=
protected theorem measure_univ : volume (Set.univ : Set UnitAddCircle) = 1 := by simp
#align unit_add_circle.measure_univ UnitAddCircle.measure_univ
-instance finiteMeasure : FiniteMeasure (volume : Measure UnitAddCircle) :=
- AddCircle.finiteMeasure 1
-#align unit_add_circle.is_finite_measure UnitAddCircle.finiteMeasure
+instance isFiniteMeasure : IsFiniteMeasure (volume : Measure UnitAddCircle) :=
+ AddCircle.isFiniteMeasure 1
+#align unit_add_circle.is_finite_measure UnitAddCircle.isFiniteMeasure
/-- The covering map from `ℝ` to the "unit additive circle" `ℝ ⧸ ℤ` is measure-preserving,
considered with respect to the standard measure (defined to be the Haar measure of total mass 1)
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -177,7 +177,7 @@ protected theorem lintegral_preimage (t : ℝ) (f : AddCircle T → ℝ≥0∞)
have := lintegral_map_equiv f (measurable_equiv_Ioc T t).symm
swap; exact volume
simp only [measurable_equiv_Ioc, equiv_Ioc, QuotientAddGroup.equivIocMod, MeasurableEquiv.symm_mk,
- MeasurableEquiv.coe_mk, Equiv.coe_fn_symm_mk] at this
+ MeasurableEquiv.coe_mk, Equiv.coe_fn_symm_mk] at this
rw [← (AddCircle.measurePreserving_mk T t).map_eq]
convert this.symm using 1
-- TODO : there is no "set_lintegral_eq_subtype"?
@@ -201,7 +201,7 @@ protected theorem integral_preimage (t : ℝ) (f : AddCircle T → E) :
have m : MeasurableSet (Ioc t (t + T)) := measurableSet_Ioc
have := integral_map_equiv (measurable_equiv_Ioc T t).symm f
simp only [measurable_equiv_Ioc, equiv_Ioc, QuotientAddGroup.equivIocMod, MeasurableEquiv.symm_mk,
- MeasurableEquiv.coe_mk, Equiv.coe_fn_symm_mk, coe_coe] at this
+ MeasurableEquiv.coe_mk, Equiv.coe_fn_symm_mk, coe_coe] at this
rw [← (AddCircle.measurePreserving_mk T t).map_eq, set_integral_eq_subtype m, ← this]
have : (coe : Ioc t (t + T) → AddCircle T) = (coe : ℝ → AddCircle T) ∘ (coe : _ → ℝ) := by ext1 x;
rfl
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -90,8 +90,8 @@ protected theorem measure_univ : volume (Set.univ : Set (AddCircle T)) = ENNReal
simp [add_haar_measure_self, -positive_compacts.coe_top]
#align add_circle.measure_univ AddCircle.measure_univ
-instance : IsAddHaarMeasure (volume : Measure (AddCircle T)) :=
- IsAddHaarMeasure.smul _ (by simp [hT.out]) ENNReal.ofReal_ne_top
+instance : AddHaarMeasure (volume : Measure (AddCircle T)) :=
+ AddHaarMeasure.smul _ (by simp [hT.out]) ENNReal.ofReal_ne_top
instance finiteMeasure : FiniteMeasure (volume : Measure (AddCircle T))
where measure_univ_lt_top := by simp
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -31,7 +31,7 @@ period `T`.
open Set Function MeasureTheory MeasureTheory.Measure TopologicalSpace AddSubgroup intervalIntegral
-open MeasureTheory NNReal ENNReal
+open scoped MeasureTheory NNReal ENNReal
attribute [-instance] QuotientAddGroup.measurableSpace Quotient.instMeasurableSpace
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -117,8 +117,7 @@ theorem volume_closedBall {x : AddCircle T} (ε : ℝ) :
by
intro hε
rw [inter_eq_left_iff_subset, Real.closedBall_eq_Icc, zero_sub, zero_add]
- rintro y ⟨hy₁, hy₂⟩
- constructor <;> linarith
+ rintro y ⟨hy₁, hy₂⟩; constructor <;> linarith
have h₂ :
coe ⁻¹' Metric.closedBall (0 : AddCircle T) ε ∩ I =
if ε < T / 2 then Metric.closedBall (0 : ℝ) ε else I :=
@@ -185,10 +184,8 @@ protected theorem lintegral_preimage (t : ℝ) (f : AddCircle T → ℝ≥0∞)
· rw [← map_comap_subtype_coe m _]
exact MeasurableEmbedding.lintegral_map (MeasurableEmbedding.subtype_coe m) _
· congr 1
- have : (coe : Ioc t (t + T) → AddCircle T) = (coe : ℝ → AddCircle T) ∘ (coe : _ → ℝ) :=
- by
- ext1 x
- rfl
+ have : (coe : Ioc t (t + T) → AddCircle T) = (coe : ℝ → AddCircle T) ∘ (coe : _ → ℝ) := by
+ ext1 x; rfl
simp_rw [this, ← map_map AddCircle.measurable_mk' measurable_subtype_coe, ←
map_comap_subtype_coe m]
rfl
@@ -206,9 +203,7 @@ protected theorem integral_preimage (t : ℝ) (f : AddCircle T → E) :
simp only [measurable_equiv_Ioc, equiv_Ioc, QuotientAddGroup.equivIocMod, MeasurableEquiv.symm_mk,
MeasurableEquiv.coe_mk, Equiv.coe_fn_symm_mk, coe_coe] at this
rw [← (AddCircle.measurePreserving_mk T t).map_eq, set_integral_eq_subtype m, ← this]
- have : (coe : Ioc t (t + T) → AddCircle T) = (coe : ℝ → AddCircle T) ∘ (coe : _ → ℝ) :=
- by
- ext1 x
+ have : (coe : Ioc t (t + T) → AddCircle T) = (coe : ℝ → AddCircle T) ∘ (coe : _ → ℝ) := by ext1 x;
rfl
simp_rw [this, ← map_map AddCircle.measurable_mk' measurable_subtype_coe, ←
map_comap_subtype_coe m]
@@ -338,10 +333,7 @@ theorem intervalIntegral_add_zsmul_eq (hf : Periodic f T) (n : ℤ) (t : ℝ)
cases' n with n n
· simp [← this n]
· conv_rhs => rw [negSucc_zsmul]
- have h₀ : Int.negSucc n • T + (n + 1) • T = 0 :=
- by
- simp
- linarith
+ have h₀ : Int.negSucc n • T + (n + 1) • T = 0 := by simp; linarith
rw [integral_symm, ← (hf.nsmul (n + 1)).funext, neg_inj]
simp_rw [integral_comp_add_right, h₀, zero_add, this (n + 1), add_comm T,
hf.interval_integral_add_eq ((n + 1) • T) 0, zero_add]
mathlib commit https://github.com/leanprover-community/mathlib/commit/f51de8769c34652d82d1c8e5f8f18f8374782bed
@@ -4,12 +4,12 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Yury Kudryashov, Alex Kontorovich, Heather Macbeth
! This file was ported from Lean 3 source module measure_theory.integral.periodic
-! leanprover-community/mathlib commit bf6a01357ff5684b1ebcd0f1a13be314fc82c0bf
+! leanprover-community/mathlib commit fd5edc43dc4f10b85abfe544b88f82cf13c5f844
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
-import Mathbin.MeasureTheory.Measure.HaarLebesgue
-import Mathbin.MeasureTheory.Measure.HaarQuotient
+import Mathbin.MeasureTheory.Measure.Lebesgue.EqHaar
+import Mathbin.MeasureTheory.Measure.Haar.Quotient
import Mathbin.MeasureTheory.Integral.IntervalIntegral
import Mathbin.Topology.Algebra.Order.Floor
mathlib commit https://github.com/leanprover-community/mathlib/commit/0b9eaaa7686280fad8cce467f5c3c57ee6ce77f8
@@ -177,7 +177,7 @@ protected theorem lintegral_preimage (t : ℝ) (f : AddCircle T → ℝ≥0∞)
have m : MeasurableSet (Ioc t (t + T)) := measurableSet_Ioc
have := lintegral_map_equiv f (measurable_equiv_Ioc T t).symm
swap; exact volume
- simp only [measurable_equiv_Ioc, equiv_Ioc, quotientAddGroup.equivIocMod, MeasurableEquiv.symm_mk,
+ simp only [measurable_equiv_Ioc, equiv_Ioc, QuotientAddGroup.equivIocMod, MeasurableEquiv.symm_mk,
MeasurableEquiv.coe_mk, Equiv.coe_fn_symm_mk] at this
rw [← (AddCircle.measurePreserving_mk T t).map_eq]
convert this.symm using 1
@@ -203,7 +203,7 @@ protected theorem integral_preimage (t : ℝ) (f : AddCircle T → E) :
by
have m : MeasurableSet (Ioc t (t + T)) := measurableSet_Ioc
have := integral_map_equiv (measurable_equiv_Ioc T t).symm f
- simp only [measurable_equiv_Ioc, equiv_Ioc, quotientAddGroup.equivIocMod, MeasurableEquiv.symm_mk,
+ simp only [measurable_equiv_Ioc, equiv_Ioc, QuotientAddGroup.equivIocMod, MeasurableEquiv.symm_mk,
MeasurableEquiv.coe_mk, Equiv.coe_fn_symm_mk, coe_coe] at this
rw [← (AddCircle.measurePreserving_mk T t).map_eq, set_integral_eq_subtype m, ← this]
have : (coe : Ioc t (t + T) → AddCircle T) = (coe : ℝ → AddCircle T) ∘ (coe : _ → ℝ) :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/0b9eaaa7686280fad8cce467f5c3c57ee6ce77f8
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Yury Kudryashov, Alex Kontorovich, Heather Macbeth
! This file was ported from Lean 3 source module measure_theory.integral.periodic
-! leanprover-community/mathlib commit f0c8bf9245297a541f468be517f1bde6195105e9
+! leanprover-community/mathlib commit bf6a01357ff5684b1ebcd0f1a13be314fc82c0bf
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -35,6 +35,19 @@ open MeasureTheory NNReal ENNReal
attribute [-instance] QuotientAddGroup.measurableSpace Quotient.instMeasurableSpace
+noncomputable instance AddCircle.measurableSpace {a : ℝ} : MeasurableSpace (AddCircle a) :=
+ borel (AddCircle a)
+#align add_circle.measurable_space AddCircle.measurableSpace
+
+instance AddCircle.borelSpace {a : ℝ} : BorelSpace (AddCircle a) :=
+ ⟨rfl⟩
+#align add_circle.borel_space AddCircle.borelSpace
+
+@[measurability]
+protected theorem AddCircle.measurable_mk' {a : ℝ} : Measurable (coe : ℝ → AddCircle a) :=
+ Continuous.measurable <| AddCircle.continuous_mk' a
+#align add_circle.measurable_mk' AddCircle.measurable_mk'
+
theorem isAddFundamentalDomain_Ioc {T : ℝ} (hT : 0 < T) (t : ℝ)
(μ : Measure ℝ := by exact MeasureTheory.MeasureSpace.volume) :
IsAddFundamentalDomain (AddSubgroup.zmultiples T) (Ioc t (t + T)) μ :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/e3fb84046afd187b710170887195d50bada934ee
@@ -347,8 +347,8 @@ include hg h_int
/-- If `g : ℝ → ℝ` is periodic with period `T > 0`, then for any `t : ℝ`, the function
`t ↦ ∫ x in 0..t, g x` is bounded below by `t ↦ X + ⌊t/T⌋ • Y` for appropriate constants `X` and
`Y`. -/
-theorem infₛ_add_zsmul_le_integral_of_pos (hT : 0 < T) (t : ℝ) :
- (infₛ ((fun t => ∫ x in 0 ..t, g x) '' Icc 0 T) + ⌊t / T⌋ • ∫ x in 0 ..T, g x) ≤
+theorem sInf_add_zsmul_le_integral_of_pos (hT : 0 < T) (t : ℝ) :
+ (sInf ((fun t => ∫ x in 0 ..t, g x) '' Icc 0 T) + ⌊t / T⌋ • ∫ x in 0 ..T, g x) ≤
∫ x in 0 ..t, g x :=
by
let ε := Int.fract (t / T) * T
@@ -358,16 +358,16 @@ theorem infₛ_add_zsmul_le_integral_of_pos (hT : 0 < T) (t : ℝ) :
rw [hg.interval_integral_add_zsmul_eq ⌊t / T⌋ ε h_int, hg.interval_integral_add_eq ε 0, zero_add,
add_le_add_iff_right]
exact
- (continuous_primitive h_int 0).ContinuousOn.infₛ_image_Icc_le
+ (continuous_primitive h_int 0).ContinuousOn.sInf_image_Icc_le
(mem_Icc_of_Ico (Int.fract_div_mul_self_mem_Ico T t hT))
-#align function.periodic.Inf_add_zsmul_le_integral_of_pos Function.Periodic.infₛ_add_zsmul_le_integral_of_pos
+#align function.periodic.Inf_add_zsmul_le_integral_of_pos Function.Periodic.sInf_add_zsmul_le_integral_of_pos
/-- If `g : ℝ → ℝ` is periodic with period `T > 0`, then for any `t : ℝ`, the function
`t ↦ ∫ x in 0..t, g x` is bounded above by `t ↦ X + ⌊t/T⌋ • Y` for appropriate constants `X` and
`Y`. -/
-theorem integral_le_supₛ_add_zsmul_of_pos (hT : 0 < T) (t : ℝ) :
+theorem integral_le_sSup_add_zsmul_of_pos (hT : 0 < T) (t : ℝ) :
(∫ x in 0 ..t, g x) ≤
- supₛ ((fun t => ∫ x in 0 ..t, g x) '' Icc 0 T) + ⌊t / T⌋ • ∫ x in 0 ..T, g x :=
+ sSup ((fun t => ∫ x in 0 ..t, g x) '' Icc 0 T) + ⌊t / T⌋ • ∫ x in 0 ..T, g x :=
by
let ε := Int.fract (t / T) * T
conv_lhs =>
@@ -376,9 +376,9 @@ theorem integral_le_supₛ_add_zsmul_of_pos (hT : 0 < T) (t : ℝ) :
rw [hg.interval_integral_add_zsmul_eq ⌊t / T⌋ ε h_int, hg.interval_integral_add_eq ε 0, zero_add,
add_le_add_iff_right]
exact
- (continuous_primitive h_int 0).ContinuousOn.le_supₛ_image_Icc
+ (continuous_primitive h_int 0).ContinuousOn.le_sSup_image_Icc
(mem_Icc_of_Ico (Int.fract_div_mul_self_mem_Ico T t hT))
-#align function.periodic.integral_le_Sup_add_zsmul_of_pos Function.Periodic.integral_le_supₛ_add_zsmul_of_pos
+#align function.periodic.integral_le_Sup_add_zsmul_of_pos Function.Periodic.integral_le_sSup_add_zsmul_of_pos
/-- If `g : ℝ → ℝ` is periodic with period `T > 0` and `0 < ∫ x in 0..T, g x`, then
`t ↦ ∫ x in 0..t, g x` tends to `∞` as `t` tends to `∞`. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/d4437c68c8d350fc9d4e95e1e174409db35e30d7
@@ -33,7 +33,7 @@ open Set Function MeasureTheory MeasureTheory.Measure TopologicalSpace AddSubgro
open MeasureTheory NNReal ENNReal
-attribute [-instance] QuotientAddGroup.measurableSpace Quotient.measurableSpace
+attribute [-instance] QuotientAddGroup.measurableSpace Quotient.instMeasurableSpace
theorem isAddFundamentalDomain_Ioc {T : ℝ} (hT : 0 < T) (t : ℝ)
(μ : Measure ℝ := by exact MeasureTheory.MeasureSpace.volume) :
@@ -80,9 +80,9 @@ protected theorem measure_univ : volume (Set.univ : Set (AddCircle T)) = ENNReal
instance : IsAddHaarMeasure (volume : Measure (AddCircle T)) :=
IsAddHaarMeasure.smul _ (by simp [hT.out]) ENNReal.ofReal_ne_top
-instance isFiniteMeasure : IsFiniteMeasure (volume : Measure (AddCircle T))
+instance finiteMeasure : FiniteMeasure (volume : Measure (AddCircle T))
where measure_univ_lt_top := by simp
-#align add_circle.is_finite_measure AddCircle.isFiniteMeasure
+#align add_circle.is_finite_measure AddCircle.finiteMeasure
/-- The covering map from `ℝ` to the "additive circle" `ℝ ⧸ (ℤ ∙ T)` is measure-preserving,
considered with respect to the standard measure (defined to be the Haar measure of total mass `T`)
@@ -225,9 +225,9 @@ noncomputable instance measureSpace : MeasureSpace UnitAddCircle :=
protected theorem measure_univ : volume (Set.univ : Set UnitAddCircle) = 1 := by simp
#align unit_add_circle.measure_univ UnitAddCircle.measure_univ
-instance isFiniteMeasure : IsFiniteMeasure (volume : Measure UnitAddCircle) :=
- AddCircle.isFiniteMeasure 1
-#align unit_add_circle.is_finite_measure UnitAddCircle.isFiniteMeasure
+instance finiteMeasure : FiniteMeasure (volume : Measure UnitAddCircle) :=
+ AddCircle.finiteMeasure 1
+#align unit_add_circle.is_finite_measure UnitAddCircle.finiteMeasure
/-- The covering map from `ℝ` to the "unit additive circle" `ℝ ⧸ ℤ` is measure-preserving,
considered with respect to the standard measure (defined to be the Haar measure of total mass 1)
mathlib commit https://github.com/leanprover-community/mathlib/commit/738054fa93d43512da144ec45ce799d18fd44248
@@ -4,10 +4,11 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Yury Kudryashov, Alex Kontorovich, Heather Macbeth
! This file was ported from Lean 3 source module measure_theory.integral.periodic
-! leanprover-community/mathlib commit 5f6e827d81dfbeb6151d7016586ceeb0099b9655
+! leanprover-community/mathlib commit f0c8bf9245297a541f468be517f1bde6195105e9
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
+import Mathbin.MeasureTheory.Measure.HaarLebesgue
import Mathbin.MeasureTheory.Measure.HaarQuotient
import Mathbin.MeasureTheory.Integral.IntervalIntegral
import Mathbin.Topology.Algebra.Order.Floor
mathlib commit https://github.com/leanprover-community/mathlib/commit/92c69b77c5a7dc0f7eeddb552508633305157caa
@@ -34,7 +34,7 @@ open MeasureTheory NNReal ENNReal
attribute [-instance] QuotientAddGroup.measurableSpace Quotient.measurableSpace
-theorem isAddFundamentalDomainIoc {T : ℝ} (hT : 0 < T) (t : ℝ)
+theorem isAddFundamentalDomain_Ioc {T : ℝ} (hT : 0 < T) (t : ℝ)
(μ : Measure ℝ := by exact MeasureTheory.MeasureSpace.volume) :
IsAddFundamentalDomain (AddSubgroup.zmultiples T) (Ioc t (t + T)) μ :=
by
@@ -43,9 +43,9 @@ theorem isAddFundamentalDomainIoc {T : ℝ} (hT : 0 < T) (t : ℝ)
(Equiv.ofInjective (fun n : ℤ => n • T) (zsmul_strictMono_left hT).Injective).Bijective
refine' this.exists_unique_iff.2 _
simpa only [add_comm x] using existsUnique_add_zsmul_mem_Ioc hT x t
-#align is_add_fundamental_domain_Ioc isAddFundamentalDomainIoc
+#align is_add_fundamental_domain_Ioc isAddFundamentalDomain_Ioc
-theorem isAddFundamentalDomainIoc' {T : ℝ} (hT : 0 < T) (t : ℝ)
+theorem isAddFundamentalDomain_Ioc' {T : ℝ} (hT : 0 < T) (t : ℝ)
(μ : Measure ℝ := by exact MeasureTheory.MeasureSpace.volume) :
IsAddFundamentalDomain (AddSubgroup.zmultiples T).opposite (Ioc t (t + T)) μ :=
by
@@ -54,7 +54,7 @@ theorem isAddFundamentalDomainIoc' {T : ℝ} (hT : 0 < T) (t : ℝ)
(Equiv.ofInjective (fun n : ℤ => n • T) (zsmul_strictMono_left hT).Injective).Bijective
refine' this.exists_unique_iff.2 _
simpa using existsUnique_add_zsmul_mem_Ioc hT x t
-#align is_add_fundamental_domain_Ioc' isAddFundamentalDomainIoc'
+#align is_add_fundamental_domain_Ioc' isAddFundamentalDomain_Ioc'
namespace AddCircle
@@ -65,7 +65,7 @@ include hT
/-- Equip the "additive circle" `ℝ ⧸ (ℤ ∙ T)` with, as a standard measure, the Haar measure of total
mass `T` -/
noncomputable instance measureSpace : MeasureSpace (AddCircle T) :=
- { AddCircle.measurableSpace with volume := ENNReal.ofReal T • add_haar_measure ⊤ }
+ { AddCircle.measurableSpace with volume := ENNReal.ofReal T • addHaarMeasure ⊤ }
#align add_circle.measure_space AddCircle.measureSpace
@[simp]
@@ -87,12 +87,12 @@ instance isFiniteMeasure : IsFiniteMeasure (volume : Measure (AddCircle T))
considered with respect to the standard measure (defined to be the Haar measure of total mass `T`)
on the additive circle, and with respect to the restriction of Lebsegue measure on `ℝ` to an
interval (t, t + T]. -/
-protected theorem measurePreservingMk (t : ℝ) :
+protected theorem measurePreserving_mk (t : ℝ) :
MeasurePreserving (coe : ℝ → AddCircle T) (volume.restrict (Ioc t (t + T))) :=
- MeasurePreservingQuotientAddGroup.mk' (isAddFundamentalDomainIoc' hT.out t)
+ MeasurePreservingQuotientAddGroup.mk' (isAddFundamentalDomain_Ioc' hT.out t)
(⊤ : PositiveCompacts (AddCircle T)) (by simp) T.toNNReal
(by simp [← ENNReal.ofReal_coe_nnreal, Real.coe_toNNReal T hT.out.le])
-#align add_circle.measure_preserving_mk AddCircle.measurePreservingMk
+#align add_circle.measure_preserving_mk AddCircle.measurePreserving_mk
theorem volume_closedBall {x : AddCircle T} (ε : ℝ) :
volume (Metric.closedBall x ε) = ENNReal.ofReal (min T (2 * ε)) :=
@@ -114,7 +114,7 @@ theorem volume_closedBall {x : AddCircle T} (ε : ℝ) :
simpa only [hT', Real.closedBall_eq_Icc, zero_add, zero_sub] using Ioc_subset_Icc_self
rw [add_haar_closed_ball_center]
simp only [restrict_apply' measurableSet_Ioc, (by linarith : -(T / 2) + T = T / 2), h₂, ←
- (AddCircle.measurePreservingMk T (-(T / 2))).measure_preimage measurableSet_closedBall]
+ (AddCircle.measurePreserving_mk T (-(T / 2))).measure_preimage measurableSet_closedBall]
by_cases hε : ε < T / 2
· simp [hε, min_eq_right (by linarith : 2 * ε ≤ T)]
· simp [hε, min_eq_left (by linarith : T ≤ 2 * ε)]
@@ -165,7 +165,7 @@ protected theorem lintegral_preimage (t : ℝ) (f : AddCircle T → ℝ≥0∞)
swap; exact volume
simp only [measurable_equiv_Ioc, equiv_Ioc, quotientAddGroup.equivIocMod, MeasurableEquiv.symm_mk,
MeasurableEquiv.coe_mk, Equiv.coe_fn_symm_mk] at this
- rw [← (AddCircle.measurePreservingMk T t).map_eq]
+ rw [← (AddCircle.measurePreserving_mk T t).map_eq]
convert this.symm using 1
-- TODO : there is no "set_lintegral_eq_subtype"?
· rw [← map_comap_subtype_coe m _]
@@ -191,7 +191,7 @@ protected theorem integral_preimage (t : ℝ) (f : AddCircle T → E) :
have := integral_map_equiv (measurable_equiv_Ioc T t).symm f
simp only [measurable_equiv_Ioc, equiv_Ioc, quotientAddGroup.equivIocMod, MeasurableEquiv.symm_mk,
MeasurableEquiv.coe_mk, Equiv.coe_fn_symm_mk, coe_coe] at this
- rw [← (AddCircle.measurePreservingMk T t).map_eq, set_integral_eq_subtype m, ← this]
+ rw [← (AddCircle.measurePreserving_mk T t).map_eq, set_integral_eq_subtype m, ← this]
have : (coe : Ioc t (t + T) → AddCircle T) = (coe : ℝ → AddCircle T) ∘ (coe : _ → ℝ) :=
by
ext1 x
@@ -232,10 +232,10 @@ instance isFiniteMeasure : IsFiniteMeasure (volume : Measure UnitAddCircle) :=
considered with respect to the standard measure (defined to be the Haar measure of total mass 1)
on the additive circle, and with respect to the restriction of Lebsegue measure on `ℝ` to an
interval (t, t + 1]. -/
-protected theorem measurePreservingMk (t : ℝ) :
+protected theorem measurePreserving_mk (t : ℝ) :
MeasurePreserving (coe : ℝ → UnitAddCircle) (volume.restrict (Ioc t (t + 1))) :=
- AddCircle.measurePreservingMk 1 t
-#align unit_add_circle.measure_preserving_mk UnitAddCircle.measurePreservingMk
+ AddCircle.measurePreserving_mk 1 t
+#align unit_add_circle.measure_preserving_mk UnitAddCircle.measurePreserving_mk
/-- The integral of a measurable function over `unit_add_circle` is equal to the integral over an
interval (t, t + 1] in `ℝ` of its lift to `ℝ`. -/
@@ -278,7 +278,7 @@ theorem intervalIntegral_add_eq_of_pos (hf : Periodic f T) (hT : 0 < T) (t s :
haveI : vadd_invariant_measure (AddSubgroup.zmultiples T) ℝ volume :=
⟨fun c s hs => measure_preimage_add _ _ _⟩
exact
- (isAddFundamentalDomainIoc hT t).set_integral_eq (isAddFundamentalDomainIoc hT s)
+ (isAddFundamentalDomain_Ioc hT t).set_integral_eq (isAddFundamentalDomain_Ioc hT s)
hf.map_vadd_zmultiples
#align function.periodic.interval_integral_add_eq_of_pos Function.Periodic.intervalIntegral_add_eq_of_pos
mathlib commit https://github.com/leanprover-community/mathlib/commit/d95bef0d215ea58c0fd7bbc4b151bf3fe952c095
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Yury Kudryashov, Alex Kontorovich, Heather Macbeth
! This file was ported from Lean 3 source module measure_theory.integral.periodic
-! leanprover-community/mathlib commit 6a033cb3d188a12ca5c509b33e2eaac1c61916cd
+! leanprover-community/mathlib commit 5f6e827d81dfbeb6151d7016586ceeb0099b9655
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -120,7 +120,7 @@ theorem volume_closedBall {x : AddCircle T} (ε : ℝ) :
· simp [hε, min_eq_left (by linarith : T ≤ 2 * ε)]
#align add_circle.volume_closed_ball AddCircle.volume_closedBall
-instance : IsDoublingMeasure (volume : Measure (AddCircle T)) :=
+instance : IsUnifLocDoublingMeasure (volume : Measure (AddCircle T)) :=
by
refine' ⟨⟨Real.toNNReal 2, Filter.eventually_of_forall fun ε x => _⟩⟩
simp only [volume_closed_ball]
mathlib commit https://github.com/leanprover-community/mathlib/commit/eb0cb4511aaef0da2462207b67358a0e1fe1e2ee
@@ -30,7 +30,7 @@ period `T`.
open Set Function MeasureTheory MeasureTheory.Measure TopologicalSpace AddSubgroup intervalIntegral
-open MeasureTheory NNReal Ennreal
+open MeasureTheory NNReal ENNReal
attribute [-instance] QuotientAddGroup.measurableSpace Quotient.measurableSpace
@@ -65,11 +65,11 @@ include hT
/-- Equip the "additive circle" `ℝ ⧸ (ℤ ∙ T)` with, as a standard measure, the Haar measure of total
mass `T` -/
noncomputable instance measureSpace : MeasureSpace (AddCircle T) :=
- { AddCircle.measurableSpace with volume := Ennreal.ofReal T • add_haar_measure ⊤ }
+ { AddCircle.measurableSpace with volume := ENNReal.ofReal T • add_haar_measure ⊤ }
#align add_circle.measure_space AddCircle.measureSpace
@[simp]
-protected theorem measure_univ : volume (Set.univ : Set (AddCircle T)) = Ennreal.ofReal T :=
+protected theorem measure_univ : volume (Set.univ : Set (AddCircle T)) = ENNReal.ofReal T :=
by
dsimp [volume]
rw [← positive_compacts.coe_top]
@@ -77,7 +77,7 @@ protected theorem measure_univ : volume (Set.univ : Set (AddCircle T)) = Ennreal
#align add_circle.measure_univ AddCircle.measure_univ
instance : IsAddHaarMeasure (volume : Measure (AddCircle T)) :=
- IsAddHaarMeasure.smul _ (by simp [hT.out]) Ennreal.ofReal_ne_top
+ IsAddHaarMeasure.smul _ (by simp [hT.out]) ENNReal.ofReal_ne_top
instance isFiniteMeasure : IsFiniteMeasure (volume : Measure (AddCircle T))
where measure_univ_lt_top := by simp
@@ -91,11 +91,11 @@ protected theorem measurePreservingMk (t : ℝ) :
MeasurePreserving (coe : ℝ → AddCircle T) (volume.restrict (Ioc t (t + T))) :=
MeasurePreservingQuotientAddGroup.mk' (isAddFundamentalDomainIoc' hT.out t)
(⊤ : PositiveCompacts (AddCircle T)) (by simp) T.toNNReal
- (by simp [← Ennreal.ofReal_coe_nNReal, Real.coe_toNNReal T hT.out.le])
+ (by simp [← ENNReal.ofReal_coe_nnreal, Real.coe_toNNReal T hT.out.le])
#align add_circle.measure_preserving_mk AddCircle.measurePreservingMk
theorem volume_closedBall {x : AddCircle T} (ε : ℝ) :
- volume (Metric.closedBall x ε) = Ennreal.ofReal (min T (2 * ε)) :=
+ volume (Metric.closedBall x ε) = ENNReal.ofReal (min T (2 * ε)) :=
by
have hT' : |T| = T := abs_eq_self.mpr hT.out.le
let I := Ioc (-(T / 2)) (T / 2)
@@ -124,8 +124,8 @@ instance : IsDoublingMeasure (volume : Measure (AddCircle T)) :=
by
refine' ⟨⟨Real.toNNReal 2, Filter.eventually_of_forall fun ε x => _⟩⟩
simp only [volume_closed_ball]
- erw [← Ennreal.ofReal_mul zero_le_two]
- apply Ennreal.ofReal_le_ofReal
+ erw [← ENNReal.ofReal_mul zero_le_two]
+ apply ENNReal.ofReal_le_ofReal
rw [mul_min_of_nonneg _ _ (zero_le_two : (0 : ℝ) ≤ 2)]
exact min_le_min (by linarith [hT.out]) (le_refl _)
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
set_integral
with setIntegral
(#12215)
Done with a global search and replace, and then (to fix the #align
lines), replace (#align \S*)setIntegral
with $1set_integral
.
@@ -256,7 +256,7 @@ theorem intervalIntegral_add_eq_of_pos (hf : Periodic f T) (hT : 0 < T) (t s :
simp only [integral_of_le, hT.le, le_add_iff_nonneg_right]
haveI : VAddInvariantMeasure (AddSubgroup.zmultiples T) ℝ volume :=
⟨fun c s _ => measure_preimage_add _ _ _⟩
- apply IsAddFundamentalDomain.set_integral_eq (G := AddSubgroup.zmultiples T)
+ apply IsAddFundamentalDomain.setIntegral_eq (G := AddSubgroup.zmultiples T)
exacts [isAddFundamentalDomain_Ioc hT t, isAddFundamentalDomain_Ioc hT s, hf.map_vadd_zmultiples]
#align function.periodic.interval_integral_add_eq_of_pos Function.Periodic.intervalIntegral_add_eq_of_pos
We introduce a new typeclass QuotientMeasureEqMeasurePreimage
which expresses a relationship between a measure on a space and a measure on its quotient under a discrete group action. Namely, the volume of a measurable set in the quotient is equal to the volume of its preimage, intersected with any fundamental domain.
Our main application is in the context of a discrete normal subgroup of a topological group acting on the group itself, so as to compare Haar measures on a group and its quotient. Before this typeclass, you could have Haar measure upstairs and downstairs and you would have ugly scaling factors if you wanted to compare the two. This typeclass more accurately reflects what is needed in order to have a clear relationship between the upstairs and downstairs measures.
Two big theorems (proved under various technical assumptions, like finiteness of the volume - which shouldn't be necessary):
(1) if you're Haar upstairs and satisfy QuotientMeasureEqMeasurePreimage
, then you're Haar downstairs.
And conversely (2): if you're Haar upstairs and downstairs, and scale correctly on a single measurable set, then you satisfy QuotientMeasureEqMeasurePreimage
.
Contains the forward-port of https://github.com/leanprover-community/mathlib/pull/18863
Co-authored-by: Heather Macbeth <25316162+hrmacbeth@users.noreply.github.com>
Co-authored-by: Heather Macbeth <25316162+hrmacbeth@users.noreply.github.com>
@@ -79,20 +79,29 @@ instance isFiniteMeasure : IsFiniteMeasure (volume : Measure (AddCircle T)) wher
measure_univ_lt_top := by simp
#align add_circle.is_finite_measure AddCircle.isFiniteMeasure
+instance : HasAddFundamentalDomain (AddSubgroup.op <| .zmultiples T) ℝ where
+ ExistsIsAddFundamentalDomain := ⟨Ioc 0 (0 + T), isAddFundamentalDomain_Ioc' Fact.out 0⟩
+
+instance : AddQuotientMeasureEqMeasurePreimage volume (volume : Measure (AddCircle T)) := by
+ apply MeasureTheory.leftInvariantIsAddQuotientMeasureEqMeasurePreimage
+ simp [(isAddFundamentalDomain_Ioc' hT.out 0).covolume_eq_volume, AddCircle.measure_univ]
+
/-- The covering map from `ℝ` to the "additive circle" `ℝ ⧸ (ℤ ∙ T)` is measure-preserving,
considered with respect to the standard measure (defined to be the Haar measure of total mass `T`)
on the additive circle, and with respect to the restriction of Lebsegue measure on `ℝ` to an
interval (t, t + T]. -/
protected theorem measurePreserving_mk (t : ℝ) :
MeasurePreserving (β := AddCircle T) ((↑) : ℝ → AddCircle T)
- (volume.restrict (Ioc t (t + T))) := by
- apply MeasurePreservingQuotientAddGroup.mk'
- · exact isAddFundamentalDomain_Ioc' hT.out t
- · simp
- · haveI : CompactSpace (ℝ ⧸ zmultiples T) := inferInstanceAs (CompactSpace (AddCircle T))
- simp [← ENNReal.ofReal_coe_nnreal, Real.coe_toNNReal T hT.out.le, -Real.coe_toNNReal']
+ (volume.restrict (Ioc t (t + T))) :=
+ measurePreserving_quotientAddGroup_mk_of_AddQuotientMeasureEqMeasurePreimage
+ volume (𝓕 := Ioc t (t+T)) (isAddFundamentalDomain_Ioc' hT.out _) _
#align add_circle.measure_preserving_mk AddCircle.measurePreserving_mk
+lemma add_projection_respects_measure (t : ℝ) {U : Set (AddCircle T)} (meas_U : MeasurableSet U) :
+ volume U = volume (QuotientAddGroup.mk ⁻¹' U ∩ (Ioc t (t + T))) :=
+ (isAddFundamentalDomain_Ioc' hT.out _).addProjection_respects_measure_apply
+ (volume : Measure (AddCircle T)) meas_U
+
theorem volume_closedBall {x : AddCircle T} (ε : ℝ) :
volume (Metric.closedBall x ε) = ENNReal.ofReal (min T (2 * ε)) := by
have hT' : |T| = T := abs_eq_self.mpr hT.out.le
@@ -106,9 +115,8 @@ theorem volume_closedBall {x : AddCircle T} (ε : ℝ) :
conv_rhs => rw [← if_ctx_congr (Iff.rfl : ε < T / 2 ↔ ε < T / 2) h₁ fun _ => rfl, ← hT']
apply coe_real_preimage_closedBall_inter_eq
simpa only [hT', Real.closedBall_eq_Icc, zero_add, zero_sub] using Ioc_subset_Icc_self
- rw [addHaar_closedBall_center]
- simp only [restrict_apply' measurableSet_Ioc, (by linarith : -(T / 2) + T = T / 2), h₂, ←
- (AddCircle.measurePreserving_mk T (-(T / 2))).measure_preimage measurableSet_closedBall]
+ rw [addHaar_closedBall_center, add_projection_respects_measure T (-(T/2))
+ measurableSet_closedBall, (by linarith : -(T / 2) + T = T / 2), h₂]
by_cases hε : ε < T / 2
· simp [hε, min_eq_right (by linarith : 2 * ε ≤ T)]
· simp [I, hε, min_eq_left (by linarith : T ≤ 2 * ε)]
We change the following field in the definition of an additive commutative monoid:
nsmul_succ : ∀ (n : ℕ) (x : G),
- AddMonoid.nsmul (n + 1) x = x + AddMonoid.nsmul n x
+ AddMonoid.nsmul (n + 1) x = AddMonoid.nsmul n x + x
where the latter is more natural
We adjust the definitions of ^
in monoids, groups, etc.
Originally there was a warning comment about why this natural order was preferred
use
x * npowRec n x
and notnpowRec n x * x
in the definition to make sure that definitional unfolding ofnpowRec
is blocked, to avoid deep recursion issues.
but it seems to no longer apply.
Remarks on the PR :
pow_succ
and pow_succ'
have switched their meanings.Ideal.IsPrime.mul_mem_pow
which is defined in [Mathlib/RingTheory/DedekindDomain/Ideal.lean]. Changing the order of operation forced me to add the symmetric lemma Ideal.IsPrime.mem_pow_mul
.@@ -285,7 +285,7 @@ theorem intervalIntegral_add_zsmul_eq (hf : Periodic f T) (n : ℤ) (t : ℝ)
have : ∀ m : ℕ, (∫ x in (0)..m • T, f x) = m • ∫ x in (0)..T, f x := fun m ↦ by
induction' m with m ih
· simp
- · simp only [succ_nsmul', hf.intervalIntegral_add_eq_add 0 (m • T) h_int, ih, zero_add]
+ · simp only [succ_nsmul, hf.intervalIntegral_add_eq_add 0 (m • T) h_int, ih, zero_add]
-- Then prove it for all integers
cases' n with n n
· simp [← this n]
mul
-div
cancellation lemmas (#11530)
Lemma names around cancellation of multiplication and division are a mess.
This PR renames a handful of them according to the following table (each big row contains the multiplicative statement, then the three rows contain the GroupWithZero
lemma name, the Group
lemma, the AddGroup
lemma name).
| Statement | New name | Old name | |
@@ -260,7 +260,7 @@ theorem intervalIntegral_add_eq (hf : Periodic f T) (t s : ℝ) :
· exact hf.intervalIntegral_add_eq_of_pos hT t s
· simp
· rw [← neg_inj, ← integral_symm, ← integral_symm]
- simpa only [← sub_eq_add_neg, add_sub_cancel] using
+ simpa only [← sub_eq_add_neg, add_sub_cancel_right] using
hf.neg.intervalIntegral_add_eq_of_pos (neg_pos.2 hT) (t + T) (s + T)
#align function.periodic.interval_integral_add_eq Function.Periodic.intervalIntegral_add_eq
Empty lines were removed by executing the following Python script twice
import os
import re
# Loop through each file in the repository
for dir_path, dirs, files in os.walk('.'):
for filename in files:
if filename.endswith('.lean'):
file_path = os.path.join(dir_path, filename)
# Open the file and read its contents
with open(file_path, 'r') as file:
content = file.read()
# Use a regular expression to replace sequences of "variable" lines separated by empty lines
# with sequences without empty lines
modified_content = re.sub(r'(variable.*\n)\n(variable(?! .* in))', r'\1\2', content)
# Write the modified content back to the file
with open(file_path, 'w') as file:
file.write(modified_content)
@@ -301,7 +301,6 @@ section RealValued
open Filter
variable {g : ℝ → ℝ}
-
variable (hg : Periodic g T) (h_int : ∀ t₁ t₂, IntervalIntegrable g MeasureSpace.volume t₁ t₂)
/-- If `g : ℝ → ℝ` is periodic with period `T > 0`, then for any `t : ℝ`, the function
This is a very large PR, but it has been reviewed piecemeal already in PRs to the bump/v4.7.0
branch as we update to intermediate nightlies.
Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: Kyle Miller <kmill31415@gmail.com> Co-authored-by: damiano <adomani@gmail.com>
@@ -196,7 +196,6 @@ namespace UnitAddCircle
attribute [local instance] Real.fact_zero_lt_one
-@[simp]
protected theorem measure_univ : volume (Set.univ : Set UnitAddCircle) = 1 := by simp
#align unit_add_circle.measure_univ UnitAddCircle.measure_univ
@@ -111,7 +111,7 @@ theorem volume_closedBall {x : AddCircle T} (ε : ℝ) :
(AddCircle.measurePreserving_mk T (-(T / 2))).measure_preimage measurableSet_closedBall]
by_cases hε : ε < T / 2
· simp [hε, min_eq_right (by linarith : 2 * ε ≤ T)]
- · simp [hε, min_eq_left (by linarith : T ≤ 2 * ε)]
+ · simp [I, hε, min_eq_left (by linarith : T ≤ 2 * ε)]
#align add_circle.volume_closed_ball AddCircle.volume_closedBall
instance : IsUnifLocDoublingMeasure (volume : Measure (AddCircle T)) := by
Subtype.measureSpace
(#8381)
Currently, a subtype of a MeasureSpace
has a MeasureSpace
instance, obtained by restricting the initial measure. There are however other reasonable constructions, like the normalized restriction for a probability measure, or the subspace measure when restricting to a vector subspace. We disable the global instance Subtype.measureSpace
to make these other choices possible, as discussed on Zulip.
It turns out that this instance was duplicated in SetCoe.measureSpace
, so we delete the other one.
@@ -142,6 +142,7 @@ noncomputable def measurableEquivIco (a : ℝ) : AddCircle T ≃ᵐ Ico a (a + T
measurable_invFun := AddCircle.measurable_mk'.comp measurable_subtype_coe
#align add_circle.measurable_equiv_Ico AddCircle.measurableEquivIco
+attribute [local instance] Subtype.measureSpace in
/-- The lower integral of a function over `AddCircle T` is equal to the lower integral over an
interval (t, t + T] in `ℝ` of its lift to `ℝ`. -/
protected theorem lintegral_preimage (t : ℝ) (f : AddCircle T → ℝ≥0∞) :
@@ -164,6 +165,7 @@ protected theorem lintegral_preimage (t : ℝ) (f : AddCircle T → ℝ≥0∞)
variable {E : Type*} [NormedAddCommGroup E] [NormedSpace ℝ E] [CompleteSpace E]
+attribute [local instance] Subtype.measureSpace in
/-- The integral of an almost-everywhere strongly measurable function over `AddCircle T` is equal
to the integral over an interval (t, t + T] in `ℝ` of its lift to `ℝ`. -/
protected theorem integral_preimage (t : ℝ) (f : AddCircle T → E) :
set_lintegral_subtype
(#7679)
MeasureTheory.set_lintegral_eq_subtype
and
MeasureTheory.set_lintegral_subtype
.MeasurableEmbedding.comap_map
,
MeasurableEmbedding.comap_restrict
, and
MeasurableEmbedding.restrict_comap
.MeasurableEmbedding.comap_preimage
.@@ -172,7 +172,7 @@ protected theorem integral_preimage (t : ℝ) (f : AddCircle T → E) :
have := integral_map_equiv (μ := volume) (measurableEquivIoc T t).symm f
simp only [measurableEquivIoc, equivIoc, QuotientAddGroup.equivIocMod, MeasurableEquiv.symm_mk,
MeasurableEquiv.coe_mk, Equiv.coe_fn_symm_mk] at this
- rw [← (AddCircle.measurePreserving_mk T t).map_eq, set_integral_eq_subtype m, ← this]
+ rw [← (AddCircle.measurePreserving_mk T t).map_eq, ← integral_subtype m, ← this]
have : ((↑) : Ioc t (t + T) → AddCircle T) = ((↑) : ℝ → AddCircle T) ∘ ((↑) : _ → ℝ) := by
ext1 x; rfl
simp_rw [this]
This is a refactor of AddCircle
, changing it from a def
to an abbrev
. This fixes issues arising from a deriving
statement that failed during the port, and allows for much better inference of instances.
Co-authored-by: Heather Macbeth <25316162+hrmacbeth@users.noreply.github.com>
@@ -26,19 +26,10 @@ Another consequence (`Function.Periodic.intervalIntegral_add_eq` and related dec
period `T`.
-/
-
open Set Function MeasureTheory MeasureTheory.Measure TopologicalSpace AddSubgroup intervalIntegral
open scoped MeasureTheory NNReal ENNReal
-noncomputable instance AddCircle.measurableSpace {a : ℝ} : MeasurableSpace (AddCircle a) :=
- QuotientAddGroup.measurableSpace _
-#align add_circle.measurable_space AddCircle.measurableSpace
-
-instance AddCircle.borelSpace {a : ℝ} : BorelSpace (AddCircle a) :=
- QuotientAddGroup.borelSpace
-#align add_circle.borel_space AddCircle.borelSpace
-
@[measurability]
protected theorem AddCircle.measurable_mk' {a : ℝ} :
Measurable (β := AddCircle a) ((↑) : ℝ → AddCircle a) :=
@@ -71,7 +62,7 @@ variable (T : ℝ) [hT : Fact (0 < T)]
/-- Equip the "additive circle" `ℝ ⧸ (ℤ ∙ T)` with, as a standard measure, the Haar measure of total
mass `T` -/
noncomputable instance measureSpace : MeasureSpace (AddCircle T) :=
- { AddCircle.measurableSpace with volume := ENNReal.ofReal T • addHaarMeasure ⊤ }
+ { QuotientAddGroup.measurableSpace _ with volume := ENNReal.ofReal T • addHaarMeasure ⊤ }
#align add_circle.measure_space AddCircle.measureSpace
@[simp]
@@ -203,18 +194,10 @@ namespace UnitAddCircle
attribute [local instance] Real.fact_zero_lt_one
-noncomputable instance measureSpace : MeasureSpace UnitAddCircle :=
- AddCircle.measureSpace 1
-#align unit_add_circle.measure_space UnitAddCircle.measureSpace
-
@[simp]
protected theorem measure_univ : volume (Set.univ : Set UnitAddCircle) = 1 := by simp
#align unit_add_circle.measure_univ UnitAddCircle.measure_univ
-instance isFiniteMeasure : IsFiniteMeasure (volume : Measure UnitAddCircle) :=
- AddCircle.isFiniteMeasure 1
-#align unit_add_circle.is_finite_measure UnitAddCircle.isFiniteMeasure
-
/-- The covering map from `ℝ` to the "unit additive circle" `ℝ ⧸ ℤ` is measure-preserving,
considered with respect to the standard measure (defined to be the Haar measure of total mass 1)
on the additive circle, and with respect to the restriction of Lebsegue measure on `ℝ` to an
Set
/Finset
lemmas match lattice lemma names (#7378)
Rename union_eq_left_iff_subset
to union_eq_left
to match sup_eq_left
. Similarly for the right
and inter
versions.
@@ -108,7 +108,7 @@ theorem volume_closedBall {x : AddCircle T} (ε : ℝ) :
let I := Ioc (-(T / 2)) (T / 2)
have h₁ : ε < T / 2 → Metric.closedBall (0 : ℝ) ε ∩ I = Metric.closedBall (0 : ℝ) ε := by
intro hε
- rw [inter_eq_left_iff_subset, Real.closedBall_eq_Icc, zero_sub, zero_add]
+ rw [inter_eq_left, Real.closedBall_eq_Icc, zero_sub, zero_add]
rintro y ⟨hy₁, hy₂⟩; constructor <;> linarith
have h₂ : (↑) ⁻¹' Metric.closedBall (0 : AddCircle T) ε ∩ I =
if ε < T / 2 then Metric.closedBall (0 : ℝ) ε else I := by
We already have API for the multiplicative opposite of subgroups.
This tidies the API for subgroups by introducing separate .op
and .unop
definitions (as dot notation on .opposite
worked in Lean 3 but not Lean 4), and adds the same API for submonoids.
@@ -56,11 +56,11 @@ theorem isAddFundamentalDomain_Ioc {T : ℝ} (hT : 0 < T) (t : ℝ)
#align is_add_fundamental_domain_Ioc isAddFundamentalDomain_Ioc
theorem isAddFundamentalDomain_Ioc' {T : ℝ} (hT : 0 < T) (t : ℝ) (μ : Measure ℝ := by volume_tac) :
- IsAddFundamentalDomain (AddSubgroup.opposite <| .zmultiples T) (Ioc t (t + T)) μ := by
+ IsAddFundamentalDomain (AddSubgroup.op <| .zmultiples T) (Ioc t (t + T)) μ := by
refine' IsAddFundamentalDomain.mk' measurableSet_Ioc.nullMeasurableSet fun x => _
have : Bijective (codRestrict (fun n : ℤ => n • T) (AddSubgroup.zmultiples T) _) :=
(Equiv.ofInjective (fun n : ℤ => n • T) (zsmul_strictMono_left hT).injective).bijective
- refine' (AddSubgroup.oppositeEquiv _).bijective.comp this |>.existsUnique_iff.2 _
+ refine' (AddSubgroup.equivOp _).bijective.comp this |>.existsUnique_iff.2 _
simpa using existsUnique_add_zsmul_mem_Ioc hT x t
#align is_add_fundamental_domain_Ioc' isAddFundamentalDomain_Ioc'
Type _
and Sort _
(#6499)
We remove all possible occurences of Type _
and Sort _
in favor of Type*
and Sort*
.
This has nice performance benefits.
@@ -171,7 +171,7 @@ protected theorem lintegral_preimage (t : ℝ) (f : AddCircle T → ℝ≥0∞)
rfl
#align add_circle.lintegral_preimage AddCircle.lintegral_preimage
-variable {E : Type _} [NormedAddCommGroup E] [NormedSpace ℝ E] [CompleteSpace E]
+variable {E : Type*} [NormedAddCommGroup E] [NormedSpace ℝ E] [CompleteSpace E]
/-- The integral of an almost-everywhere strongly measurable function over `AddCircle T` is equal
to the integral over an interval (t, t + T] in `ℝ` of its lift to `ℝ`. -/
@@ -232,7 +232,7 @@ protected theorem lintegral_preimage (t : ℝ) (f : UnitAddCircle → ℝ≥0∞
AddCircle.lintegral_preimage 1 t f
#align unit_add_circle.lintegral_preimage UnitAddCircle.lintegral_preimage
-variable {E : Type _} [NormedAddCommGroup E] [NormedSpace ℝ E] [CompleteSpace E]
+variable {E : Type*} [NormedAddCommGroup E] [NormedSpace ℝ E] [CompleteSpace E]
/-- The integral of an almost-everywhere strongly measurable function over `UnitAddCircle` is
equal to the integral over an interval (t, t + 1] in `ℝ` of its lift to `ℝ`. -/
@@ -250,7 +250,7 @@ protected theorem intervalIntegral_preimage (t : ℝ) (f : UnitAddCircle → E)
end UnitAddCircle
-variable {E : Type _} [NormedAddCommGroup E] [NormedSpace ℝ E] [CompleteSpace E]
+variable {E : Type*} [NormedAddCommGroup E] [NormedSpace ℝ E] [CompleteSpace E]
namespace Function
@@ -2,11 +2,6 @@
Copyright (c) 2021 Yury Kudryashov. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Yury Kudryashov, Alex Kontorovich, Heather Macbeth
-
-! This file was ported from Lean 3 source module measure_theory.integral.periodic
-! leanprover-community/mathlib commit 9f55d0d4363ae59948c33864cbc52e0b12e0e8ce
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathlib.MeasureTheory.Measure.Lebesgue.EqHaar
import Mathlib.MeasureTheory.Measure.Haar.Quotient
@@ -14,6 +9,8 @@ import Mathlib.MeasureTheory.Constructions.Polish
import Mathlib.MeasureTheory.Integral.IntervalIntegral
import Mathlib.Topology.Algebra.Order.Floor
+#align_import measure_theory.integral.periodic from "leanprover-community/mathlib"@"9f55d0d4363ae59948c33864cbc52e0b12e0e8ce"
+
/-!
# Integrals of periodic functions
This is supposed to mean "an additive Haar measure", not adding something to Haar, so it should be one word and not two.
@@ -118,7 +118,7 @@ theorem volume_closedBall {x : AddCircle T} (ε : ℝ) :
conv_rhs => rw [← if_ctx_congr (Iff.rfl : ε < T / 2 ↔ ε < T / 2) h₁ fun _ => rfl, ← hT']
apply coe_real_preimage_closedBall_inter_eq
simpa only [hT', Real.closedBall_eq_Icc, zero_add, zero_sub] using Ioc_subset_Icc_self
- rw [add_haar_closedBall_center]
+ rw [addHaar_closedBall_center]
simp only [restrict_apply' measurableSet_Ioc, (by linarith : -(T / 2) + T = T / 2), h₂, ←
(AddCircle.measurePreserving_mk T (-(T / 2))).measure_preimage measurableSet_closedBall]
by_cases hε : ε < T / 2
@@ -195,7 +195,7 @@ protected theorem integral_preimage (t : ℝ) (f : AddCircle T → E) :
/-- The integral of an almost-everywhere strongly measurable function over `AddCircle T` is equal
to the integral over an interval (t, t + T] in `ℝ` of its lift to `ℝ`. -/
protected theorem intervalIntegral_preimage (t : ℝ) (f : AddCircle T → E) :
- (∫ a in t..t + T, f a) = ∫ b : AddCircle T, f b := by
+ ∫ a in t..t + T, f a = ∫ b : AddCircle T, f b := by
rw [integral_of_le, AddCircle.integral_preimage T t f]
linarith [hT.out]
#align add_circle.interval_integral_preimage AddCircle.intervalIntegral_preimage
@@ -247,7 +247,7 @@ protected theorem integral_preimage (t : ℝ) (f : UnitAddCircle → E) :
/-- The integral of an almost-everywhere strongly measurable function over `UnitAddCircle` is
equal to the integral over an interval (t, t + 1] in `ℝ` of its lift to `ℝ`. -/
protected theorem intervalIntegral_preimage (t : ℝ) (f : UnitAddCircle → E) :
- (∫ a in t..t + 1, f a) = ∫ b : UnitAddCircle, f b :=
+ ∫ a in t..t + 1, f a = ∫ b : UnitAddCircle, f b :=
AddCircle.intervalIntegral_preimage 1 t f
#align unit_add_circle.interval_integral_preimage UnitAddCircle.intervalIntegral_preimage
@@ -263,7 +263,7 @@ variable {f : ℝ → E} {T : ℝ}
/-- An auxiliary lemma for a more general `Function.Periodic.intervalIntegral_add_eq`. -/
theorem intervalIntegral_add_eq_of_pos (hf : Periodic f T) (hT : 0 < T) (t s : ℝ) :
- (∫ x in t..t + T, f x) = ∫ x in s..s + T, f x := by
+ ∫ x in t..t + T, f x = ∫ x in s..s + T, f x := by
simp only [integral_of_le, hT.le, le_add_iff_nonneg_right]
haveI : VAddInvariantMeasure (AddSubgroup.zmultiples T) ℝ volume :=
⟨fun c s _ => measure_preimage_add _ _ _⟩
@@ -274,7 +274,7 @@ theorem intervalIntegral_add_eq_of_pos (hf : Periodic f T) (hT : 0 < T) (t s :
/-- If `f` is a periodic function with period `T`, then its integral over `[t, t + T]` does not
depend on `t`. -/
theorem intervalIntegral_add_eq (hf : Periodic f T) (t s : ℝ) :
- (∫ x in t..t + T, f x) = ∫ x in s..s + T, f x := by
+ ∫ x in t..t + T, f x = ∫ x in s..s + T, f x := by
rcases lt_trichotomy (0 : ℝ) T with (hT | rfl | hT)
· exact hf.intervalIntegral_add_eq_of_pos hT t s
· simp
@@ -287,7 +287,7 @@ theorem intervalIntegral_add_eq (hf : Periodic f T) (t s : ℝ) :
is the sum of its integrals over the intervals `[t, s]` and `[t, t + T]`. -/
theorem intervalIntegral_add_eq_add (hf : Periodic f T) (t s : ℝ)
(h_int : ∀ t₁ t₂, IntervalIntegrable f MeasureSpace.volume t₁ t₂) :
- (∫ x in t..s + T, f x) = (∫ x in t..s, f x) + ∫ x in t..t + T, f x := by
+ ∫ x in t..s + T, f x = (∫ x in t..s, f x) + ∫ x in t..t + T, f x := by
rw [hf.intervalIntegral_add_eq t s, integral_add_adjacent_intervals (h_int t s) (h_int s _)]
#align function.periodic.interval_integral_add_eq_add Function.Periodic.intervalIntegral_add_eq_add
@@ -295,7 +295,7 @@ theorem intervalIntegral_add_eq_add (hf : Periodic f T) (t s : ℝ)
integral over `[t, t + n • T]` is `n` times its integral over `[t, t + T]`. -/
theorem intervalIntegral_add_zsmul_eq (hf : Periodic f T) (n : ℤ) (t : ℝ)
(h_int : ∀ t₁ t₂, IntervalIntegrable f MeasureSpace.volume t₁ t₂) :
- (∫ x in t..t + n • T, f x) = n • ∫ x in t..t + T, f x := by
+ ∫ x in t..t + n • T, f x = n • ∫ x in t..t + T, f x := by
-- Reduce to the case `b = 0`
suffices (∫ x in (0)..(n • T), f x) = n • ∫ x in (0)..T, f x by
simp only [hf.intervalIntegral_add_eq t 0, (hf.zsmul n).intervalIntegral_add_eq t 0, zero_add,
@@ -134,7 +134,7 @@ instance : IsUnifLocDoublingMeasure (volume : Measure (AddCircle T)) := by
rw [mul_min_of_nonneg _ _ (zero_le_two : (0 : ℝ) ≤ 2)]
exact min_le_min (by linarith [hT.out]) (le_refl _)
-/-- The isomorphism `add_circle T ≃ Ioc a (a + T)` whose inverse is the natural quotient map,
+/-- The isomorphism `AddCircle T ≃ Ioc a (a + T)` whose inverse is the natural quotient map,
as an equivalence of measurable spaces. -/
noncomputable def measurableEquivIoc (a : ℝ) : AddCircle T ≃ᵐ Ioc a (a + T) where
toEquiv := equivIoc T a
The unported dependencies are
algebra.order.module
init.core
linear_algebra.free_module.finite.rank
algebra.order.monoid.cancel.defs
algebra.abs
algebra.group_power.lemmas
init.data.list.basic
linear_algebra.free_module.rank
algebra.order.monoid.cancel.basic
init.data.list.default
topology.subset_properties
init.logic
The following 1 dependencies have changed in mathlib3 since they were ported, which may complicate porting this file