Skip to content

Commit 601fa81

Browse files
committed
refactor the file
1 parent 8667015 commit 601fa81

3 files changed

Lines changed: 136 additions & 138 deletions

File tree

Mathlib/Data/EReal/Basic.lean

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -337,6 +337,10 @@ protected theorem coe_pos {x : ℝ} : (0 : EReal) < x ↔ 0 < x :=
337337
protected theorem coe_neg' {x : ℝ} : (x : EReal) < 0 ↔ x < 0 :=
338338
EReal.coe_lt_coe_iff
339339

340+
@[simp, norm_cast]
341+
theorem coe_max (x y : ℝ) : (↑(max x y) : EReal) = max ↑x ↑y :=
342+
rfl
343+
340344
lemma toReal_eq_zero_iff {x : EReal} : x.toReal = 0 ↔ x = 0 ∨ x = ⊤ ∨ x = ⊥ := by
341345
cases x <;> norm_num
342346

Mathlib/Dynamics/BirkhoffSum/Maximal.lean

Lines changed: 124 additions & 138 deletions
Original file line numberDiff line numberDiff line change
@@ -12,98 +12,88 @@ import Mathlib.Algebra.Order.Ring.Star
1212
import Mathlib.Analysis.InnerProductSpace.Basic
1313
import Mathlib.Analysis.RCLike.Lemmas
1414
import Mathlib.Data.Real.StarOrdered
15-
import Mathlib.Dynamics.BirkhoffSum.Average
15+
public import Mathlib.Dynamics.BirkhoffSum.Average
1616

1717
/-!
1818
# Maximal ergodic theorem.
1919
20-
We define the set `birkhoffAverageSupSet f g a` of points `x` where the supremum of
21-
`birkhoffAverage ℝ f g n x` for varying `n` is greater than `a`. Then, we show its
22-
measure multiplied by `a` is bounded above by the integral of `g` on this set. In particular,
23-
for a positive `g`, this integral is bounded above by the `L1` norm of `g`, so for `g`
24-
taking values in a `NormedAddCommGroup`, we get an inequality involving the norm.
20+
We prove the maximal ergodic theorem for a measure-preserving map `f` and an integrable function
21+
`g`. The maximal ergodic operator `birkhoffAverageSup f g x` is defined as the supremum of the
22+
Birkhoff averages of `g` over all `n`. Moreover, we show some results about the auxiliary definition
23+
`birkhoffMax f g n`, defined as the maximum of the Birkhoff sums ranging between `0` and `n`.
2524
2625
## Main results
2726
28-
* `meas_birkhoffAverageSupSet_smul_const_le_integral`: the measure of `birkhoffAverageSupSet f g a`
29-
multiplied by `a` is bounded above by the integral of `g` on the same set.
30-
* `meas_birkhoffAverageSupSet_smul_const_le_norm`: the measure of `birkhoffAverageSupSet f ‖g‖ a`
31-
multiplied by `a` is bounded above by the `L1` norm of `g`.
27+
* `distribution_birkhoffAverageSup_le_integral`: the cumulative distribution function of
28+
`birkhoffAverageSup` at `a` is less than or equal to the integral of `g` on the set where
29+
`a < birkhoffAverageSup f g x`.
30+
* `iSup_distribution_birkhoffAverageSup_le_norm`: the operator `birkhoffAverageSup` satisfies a
31+
weak-type inequality.
3232
-/
3333

34-
variable {α : Type*} {f : α → α}
35-
3634
open MeasureTheory Measure MeasurableSpace Filter Topology
3735

38-
section BirkhoffMax
36+
variable {α M : Type*} {f : α → α} {g : α → M} {n : ℕ} {x : α}
37+
38+
@[expose]
39+
public section BirkhoffMax
3940

4041
/-- The maximum of `birkhoffSum f g i` for `i` ranging from `0` to `n`. -/
41-
def birkhoffMax (f : α → α) (g : α → ℝ) : ℕ →o (α → ℝ) :=
42+
def birkhoffMax [AddCommMonoid M] [SemilatticeSup M]
43+
(f : α → α) (g : α → M) : ℕ →o (α → M) :=
4244
partialSups (birkhoffSum f g)
4345

44-
lemma birkhoffMax_nonneg {g n} :
45-
0 ≤ birkhoffMax f g n := by
46-
apply (le_partialSups_of_le _ n.zero_le).trans'
47-
rfl
48-
49-
lemma birkhoffMax_succ {g n} :
50-
birkhoffMax f g (n + 1) = 0 ⊔ (g + birkhoffMax f g n ∘ f) := by
51-
have : birkhoffSum f g ∘ Nat.succ = fun k ↦ g + birkhoffSum f g k ∘ f := by
52-
funext
53-
exact birkhoffSum_succ' ..
54-
erw [partialSups_succ', this, partialSups_const_add, birkhoffSum_zero']
55-
funext
56-
simp [birkhoffMax, partialSups]
57-
58-
lemma birkhoffMax_succ' {g n x} (hpos : 0 < birkhoffMax f g (n + 1) x) :
46+
lemma birkhoffMax_nonneg [AddCommMonoid M] [SemilatticeSup M] : 0 ≤ birkhoffMax f g n x :=
47+
(birkhoffMax ..).mono n.zero_le x
48+
49+
variable [AddCommGroup M]
50+
51+
variable [SemilatticeSup M] [IsOrderedAddMonoid M] in
52+
lemma birkhoffMax_succ :
53+
birkhoffMax f g (n + 1) x = 0 ⊔ (g x + birkhoffMax f g n (f x)) := by
54+
have : birkhoffSum f g ∘ (· + 1) = (g + birkhoffSum f g · ∘ f) :=
55+
funext₂ <| fun k x ↦ birkhoffSum_succ' ..
56+
rw [birkhoffMax, partialSups_add_one', this, partialSups_const_add]
57+
simp [partialSups]
58+
59+
variable [LinearOrder M] [IsOrderedAddMonoid M]
60+
61+
lemma birkhoffMax_succ' (hpos : 0 < birkhoffMax f g (n + 1) x) :
5962
birkhoffMax f g (n + 1) x = g x + birkhoffMax f g n (f x) := by
60-
erw [birkhoffMax_succ, lt_sup_iff] at hpos
61-
cases hpos with
62-
| inl h => absurd h; exact lt_irrefl 0
63-
| inr h =>
64-
erw [birkhoffMax_succ, Pi.sup_apply, sup_of_le_right h.le]
65-
rfl
66-
67-
lemma birkhoffMax_comp_le_succ {g n} :
68-
birkhoffMax f g n ≤ birkhoffMax f g (n + 1) := by
69-
gcongr
70-
exact n.le_succ
71-
72-
lemma birkhoffMax_le_birkhoffMax {g n x} (hpos : 0 < birkhoffMax f g n x) :
63+
rw [birkhoffMax_succ, birkhoffMax, lt_sup_iff] at hpos
64+
rcases hpos with h | h
65+
· grind
66+
· rw [birkhoffMax_succ, birkhoffMax, sup_of_le_right h.le]
67+
68+
lemma birkhoffMax_le_self_add_comp (hpos : 0 < birkhoffMax f g n x) :
7369
birkhoffMax f g n x ≤ g x + birkhoffMax f g n (f x) := by
74-
match n with
75-
| 0 => absurd hpos; exact lt_irrefl 0
76-
| n + 1 =>
77-
apply le_of_eq_of_le (birkhoffMax_succ' hpos)
70+
rcases n with _ | n
71+
· simp [birkhoffMax] at *
72+
· apply le_of_eq_of_le (birkhoffMax_succ' hpos)
7873
apply add_le_add_right
79-
exact birkhoffMax_comp_le_succ (f x)
74+
apply birkhoffMax f g |>.mono (by omega)
8075

81-
lemma birkhoffMax_pos_of_mem_support {g n x}
82-
(hx : x ∈ (birkhoffMax f g n).support) : 0 < birkhoffMax f g n x := by
83-
apply lt_or_gt_of_ne at hx
84-
cases hx with
85-
| inl h =>
86-
absurd h; exact (birkhoffMax_nonneg x).not_gt
87-
| inr h => exact h
76+
end BirkhoffMax
77+
78+
variable {g : α → ℝ}
8879

8980
-- TODO: move elsewhere
9081
@[fun_prop]
91-
lemma birkhoffSum_measurable [MeasurableSpace α] {f : α → α} (hf : Measurable f) {g : α → ℝ}
92-
(hg : Measurable g) {n} : Measurable (birkhoffSum f g n) := by
82+
public lemma birkhoffSum_measurable [MeasurableSpace α] (hf : Measurable f) (hg : Measurable g) :
83+
Measurable (birkhoffSum f g n) := by
9384
apply Finset.measurable_sum
9485
measurability
9586

96-
-- TODO: move elsewhere
9787
@[fun_prop]
98-
lemma birkhoffMax_measurable [MeasurableSpace α] (hf : Measurable f) {g : α → ℝ}
99-
(hg : Measurable g) {n} : Measurable (birkhoffMax f g n) := by
88+
public lemma birkhoffMax_measurable [MeasurableSpace α] (hf : Measurable f) (hg : Measurable g) :
89+
Measurable (birkhoffMax f g n) := by
10090
unfold birkhoffMax
10191
induction n <;> measurability
10292

10393
section MeasurePreserving
10494

105-
variable {f : α → α} [MeasurableSpace α] (μ : Measure α := by volume_tac) {g : α → ℝ} {n}
106-
(hf : MeasurePreserving f μ μ) (hg : Integrable g μ)
95+
variable [MeasurableSpace α] (μ : Measure α := by volume_tac) (hf : MeasurePreserving f μ μ)
96+
(hg : Integrable g μ)
10797

10898
include hf
10999

@@ -112,9 +102,8 @@ include hf
112102
lemma birkhoffSum_aestronglyMeasurable (hg : AEStronglyMeasurable g μ) :
113103
AEStronglyMeasurable (birkhoffSum f g n) μ := by
114104
apply Finset.aestronglyMeasurable_fun_sum
115-
exact fun i _ => hg.comp_measurePreserving (hf.iterate i)
105+
exact fun i _ hg.comp_measurePreserving (hf.iterate i)
116106

117-
-- todo: move elsewhere
118107
@[fun_prop]
119108
lemma birkhoffMax_aestronglyMeasurable (hg : AEStronglyMeasurable g μ) :
120109
AEStronglyMeasurable (birkhoffMax f g n) μ := by
@@ -127,7 +116,6 @@ include hg
127116
lemma birkhoffSum_integrable : Integrable (birkhoffSum f g n) μ :=
128117
integrable_finsetSum _ fun _ _ ↦ (hf.iterate _).integrable_comp_of_integrable hg
129118

130-
-- todo: move elsewhere
131119
lemma birkhoffMax_integrable : Integrable (birkhoffMax f g n) μ := by
132120
unfold birkhoffMax
133121
induction n with
@@ -145,17 +133,19 @@ lemma birkhoffMax_integral_le :
145133
· exact .add hg.restrict this.restrict
146134
· exact AEStronglyMeasurable.nullMeasurableSet_support (by measurability)
147135
· intro x hx
148-
exact birkhoffMax_le_birkhoffMax (birkhoffMax_pos_of_mem_support hx)
136+
rw [Function.mem_support] at hx
137+
apply birkhoffMax_le_self_add_comp
138+
exact birkhoffMax_nonneg |>.lt_of_ne hx.symm
149139
· exact this.restrict
150140

151-
lemma setIntegral_nonneg_on_birkhoffMax_support :
141+
lemma setIntegral_birkhoffMax_support_nonneg :
152142
0 ≤ ∫ x in (birkhoffMax f g n).support, g x ∂μ := by
153143
have hg₁ : AEStronglyMeasurable (birkhoffMax f g n) μ := by measurability
154144
have hg₂ : Integrable (birkhoffMax f g n) μ := birkhoffMax_integrable μ hf hg
155145
have hg₃ : Integrable (birkhoffMax f g n ∘ f) μ := hf.integrable_comp_of_integrable hg₂
156146
calc
157147
0 ≤ ∫ x in (birkhoffMax f g n).supportᶜ, birkhoffMax f g n (f x) ∂μ := by
158-
exact integral_nonneg (fun x => birkhoffMax_nonneg (f x))
148+
exact integral_nonneg (fun x birkhoffMax_nonneg)
159149
_ = ∫ x, birkhoffMax f g n (f x) ∂μ -
160150
∫ x in (birkhoffMax f g n).support, birkhoffMax f g n (f x) ∂μ := by
161151
exact setIntegral_compl₀ hg₁.nullMeasurableSet_support hg₃
@@ -168,58 +158,56 @@ lemma setIntegral_nonneg_on_birkhoffMax_support :
168158

169159
end MeasurePreserving
170160

171-
end BirkhoffMax
161+
noncomputable section BirkhoffSup
162+
163+
def birkhoffSumSup (f : α → α) (g : α → ℝ) (x : α) : EReal :=
164+
⨆ n, ↑(birkhoffSum f g n x)
165+
166+
lemma birkhoffSumSup_eq_iSup_birkhoffMax :
167+
birkhoffSumSup f g x = ⨆ n, ↑(birkhoffMax f g n x) := by
168+
simp [birkhoffMax, Pi.partialSups_apply, ←map_partialSups' EReal.coe_max, birkhoffSumSup]
172169

173-
def birkhoffSupSet (f : α → α) (g : α → ℝ) : Set α :=
174-
{x | ∃ n : ℕ, 0 < birkhoffSum f g n x}
175-
176-
lemma birkhoffSupSet_eq_iSup_birkhoffMax_support {f : α → α} {g : α → ℝ} :
177-
birkhoffSupSet f g = ⋃ n : ℕ, (birkhoffMax f g n).support := by
178-
ext x
179-
simp only [birkhoffSupSet, Set.mem_setOf_eq, Set.mem_iUnion, Function.mem_support]
180-
constructor
181-
· refine fun ⟨n, hn⟩ => ⟨n, ?_⟩
182-
apply ne_of_gt (hn.trans_le _)
183-
exact le_partialSups (birkhoffSum f g) _ _
184-
· rintro ⟨n, hn⟩
185-
apply lt_or_gt_of_ne at hn
186-
cases hn with
187-
| inl h => absurd h; exact not_lt_of_ge (birkhoffMax_nonneg x)
188-
| inr h =>
189-
rw [birkhoffMax, Pi.partialSups_apply] at h
190-
rcases exists_partialSups_eq (birkhoffSum f g · x) n with ⟨m, _, hm₂⟩
191-
exact ⟨m, hm₂ ▸ h⟩
192-
193-
/-- The set of `x` for which `birkhoffAverage ℝ f g n x` greater than some `a`
194-
for at least one value of `n`. -/
195-
public def birkhoffAverageSupSet (f : α → α) (g : α → ℝ) (a : ℝ) : Set α :=
196-
{x | ∃ n : ℕ, a < birkhoffAverage ℝ f g n x}
197-
198-
theorem birkhoffAverage_iff_birkhoffSum {f : α → α} {x n g} {a : ℝ} (hn : 0 < n) :
170+
@[expose]
171+
public def birkhoffAverageSup (f : α → α) (g : α → ℝ) (x : α) : EReal :=
172+
⨆ n, ↑(birkhoffAverage ℝ f g n x)
173+
174+
end BirkhoffSup
175+
176+
lemma setOf_birkhoffSumSup_pos_eq_iUnion_birkhoffMax_support :
177+
{x | 0 < birkhoffSumSup f g x} = ⋃ n : ℕ, (birkhoffMax f g n).support := by
178+
simp_rw [birkhoffSumSup_eq_iSup_birkhoffMax, lt_iSup_iff, Set.setOf_exists, EReal.coe_pos,
179+
birkhoffMax_nonneg.lt_iff_ne, Function.support, ne_comm]
180+
181+
theorem lt_birkhoffAverage_iff_lt_birkhoffSum {a : ℝ} (hn : 0 < n) :
199182
a < birkhoffAverage ℝ f g n x ↔ 0 < birkhoffSum f (g - fun _ ↦ a) n x := by
200183
nth_rw 2 [←smul_lt_smul_iff_of_pos_left (a := (↑n : ℝ)⁻¹) (by positivity)]
201184
rw [smul_zero, ←birkhoffAverage, birkhoffAverage_sub]
202185
simp only [Pi.sub_apply, sub_pos]
203186
nth_rw 2 [birkhoffAverage_of_comp_eq _ rfl (by positivity)]
204187

205-
theorem birkhoffAverageSupSet_eq_birkhoffSupSet {f : α → α} {g a} (ha : 0 < a) :
206-
birkhoffAverageSupSet f g a = birkhoffSupSet f (g - fun _ ↦ a) := by
207-
unfold birkhoffAverageSupSet birkhoffSupSet
208-
have {n x} : a < birkhoffAverage ℝ f g n x ↔ 0 < birkhoffSum f (g - fun _ ↦ a) n x := by
209-
rcases n
210-
· refine ⟨fun h => ?_, fun h => ?_⟩
211-
· exfalso
212-
rw [birkhoffAverage_zero] at h;
213-
exact lt_asymm ha h
214-
· exfalso
215-
rw [birkhoffSum_zero] at h
216-
exact lt_irrefl 0 h
217-
· exact birkhoffAverage_iff_birkhoffSum (by positivity)
218-
simp_rw [this]
188+
theorem lt_birkhoffAverageSup_iff_lt_birkhoffSumSup {a : ℝ} (ha : 0 < a) :
189+
a < birkhoffAverageSup f g x ↔ 0 < birkhoffSumSup f (g - fun _ ↦ a) x := by
190+
refine ⟨fun h ↦ ?_, fun h ↦ ?_⟩
191+
· have ⟨n, hn⟩ := lt_iSup_iff.mp h
192+
apply lt_iSup_iff.mpr (.intro n _)
193+
norm_cast at *
194+
rwa [←lt_birkhoffAverage_iff_lt_birkhoffSum]
195+
by_contra!
196+
apply Nat.eq_zero_of_le_zero at this
197+
simp only [this, birkhoffAverage_zero'] at hn
198+
exact lt_asymm hn ha
199+
· have ⟨n, hn⟩ := lt_iSup_iff.mp h
200+
apply lt_iSup_iff.mpr (.intro n _)
201+
norm_cast at *
202+
rwa [lt_birkhoffAverage_iff_lt_birkhoffSum]
203+
by_contra!
204+
apply Nat.eq_zero_of_le_zero at this
205+
simp only [this, birkhoffSum_zero'] at hn
206+
exact lt_irrefl 0 hn
219207

220208
section MeasurePreserving
221209

222-
variable {f : α → α} [MeasurableSpace α] (μ : Measure α := by volume_tac) {n}
210+
variable {f : α → α} [MeasurableSpace α] (μ : Measure α := by volume_tac)
223211
(hf : MeasurePreserving f μ μ)
224212

225213
include hf
@@ -230,42 +218,40 @@ variable {g : α → ℝ} (hg : Integrable g μ)
230218

231219
include hg
232220

233-
lemma tendsto_setIntegral_on_birkhoffMax_support_birkhoffSupSet :
221+
lemma tendsto_setIntegral_birkhoffMax_support :
234222
Tendsto (fun n ↦ ∫ x in (birkhoffMax f g n).support, g x ∂μ) atTop
235-
(𝓝 <| ∫ x in birkhoffSupSet f g, g x ∂ μ) := by
236-
rw [birkhoffSupSet_eq_iSup_birkhoffMax_support]
223+
(𝓝 <| ∫ x in {x | 0 < birkhoffSumSup f g x}, g x ∂ μ) := by
224+
rw [setOf_birkhoffSumSup_pos_eq_iUnion_birkhoffMax_support]
237225
apply tendsto_setIntegral_of_monotone₀ _ _ hg.integrableOn
238226
· intros
239227
exact AEStronglyMeasurable.nullMeasurableSet_support (by measurability)
240228
· intro i j hij x
241-
have : 0 ≤ birkhoffMax f g i x := birkhoffMax_nonneg x
242-
have := (birkhoffMax f g).mono hij x
243-
grind [Function.mem_support]
244-
theorem setIntegral_nonneg_on_birkhoffSupSet :
245-
0 ≤ ∫ x in birkhoffSupSet f g, g x ∂μ := by
246-
apply ge_of_tendsto' (tendsto_setIntegral_on_birkhoffMax_support_birkhoffSupSet μ hf hg)
229+
grind [birkhoffMax_nonneg, (birkhoffMax f g).mono hij x, Function.mem_support]
230+
231+
theorem setIntegral_birkhoffSumSup_nonneg :
232+
0 ≤ ∫ x in {x | 0 < birkhoffSumSup f g x}, g x ∂μ := by
233+
apply ge_of_tendsto' (tendsto_setIntegral_birkhoffMax_support μ hf hg)
247234
intro n
248-
exact setIntegral_nonneg_on_birkhoffMax_support μ hf hg
235+
exact setIntegral_birkhoffMax_support_nonneg μ hf hg
249236

250237
variable [IsFiniteMeasure μ]
251238

252-
/-- The measure of the set where the supremum of the Birkhoff averages of `g` is greater than `a`,
253-
multiplied by `a`, is bounded above by the integral of `g` on this set. -/
254-
public theorem meas_birkhoffAverageSupSet_smul_const_le_integral (a : ℝ) (ha : 0 < a) :
255-
a * μ.real (birkhoffAverageSupSet f g a) ≤ ∫ x in birkhoffAverageSupSet f g a, g x ∂μ := by
239+
/-- The cumulative distribution function of `birkhoffAverageSup` at `a` is less than or equal to the
240+
integral of `g` on the set where `a < birkhoffAverageSup f g x`. -/
241+
public theorem distribution_birkhoffAverageSup_le_integral (a : ℝ) (ha : 0 < a) :
242+
a * μ.real {x | a < birkhoffAverageSup f g x}
243+
≤ ∫ x in {x | a < birkhoffAverageSup f g x}, g x ∂μ := by
256244
have p₁ := Integrable.sub hg (integrable_const a)
257245
calc
258-
_ = ∫ x in birkhoffSupSet f (g - fun _ ↦ a), a ∂μ := by
259-
simp [birkhoffAverageSupSet_eq_birkhoffSupSet ha]
246+
_ = ∫ x in {x | 0 < birkhoffSumSup f (g - fun _ ↦ a) x}, a ∂μ := by
247+
simp [lt_birkhoffAverageSup_iff_lt_birkhoffSumSup ha]
260248
ring
261-
_ ≤ ∫ x in birkhoffSupSet f (g - fun _ ↦ a), a ∂μ +
262-
∫ x in birkhoffSupSet f (g - fun _ ↦ a), g x - a ∂μ := by
263-
exact le_add_of_nonneg_right (setIntegral_nonneg_on_birkhoffSupSet μ hf p₁)
264-
_ = ∫ x in birkhoffAverageSupSet f g a, g x ∂μ := by
265-
rw [← integral_add, birkhoffAverageSupSet_eq_birkhoffSupSet ha]
266-
· rcongr
267-
ring
268-
· exact (integrable_const a).restrict
249+
_ ≤ ∫ x in {x | 0 < birkhoffSumSup f (g - fun _ ↦ a) x}, a ∂μ +
250+
∫ x in {x | 0 < birkhoffSumSup f (g - fun _ ↦ a) x}, g x - a ∂μ := by
251+
exact le_add_of_nonneg_right (setIntegral_birkhoffSumSup_nonneg μ hf p₁)
252+
_ = ∫ x in {x | a < birkhoffAverageSup f g x}, g x ∂μ := by
253+
rw [←integral_add (integrable_const a).restrict]
254+
· simp [lt_birkhoffAverageSup_iff_lt_birkhoffSumSup ha]
269255
· exact p₁.restrict
270256

271257
end Real
@@ -276,16 +262,16 @@ variable {E : Type*} [NormedAddCommGroup E] {g : α → E} (hg : Integrable g μ
276262

277263
include hg
278264

279-
/-- Maximal ergodic theorem: the maximal ergodic operator satisfies a weak-type inequality. -/
280-
public theorem meas_birkhoffAverageSupSet_smul_const_le_norm :
281-
⨆ a, a * μ.real (birkhoffAverageSupSet f (fun x ↦ ‖g x‖) a) ≤ ∫ x, ‖g x‖ ∂μ := by
265+
/-- Maximal ergodic theorem: the operator `birkhoffAverageSup` satisfies a weak-type inequality. -/
266+
public theorem iSup_distribution_birkhoffAverageSup_le_norm :
267+
⨆ a : ℝ, a * μ.real {x | a < birkhoffAverageSup f (‖g ·‖) x} ≤ ∫ x, ‖g x‖ ∂μ := by
282268
refine ciSup_le fun a ↦ ?_
283269
by_cases! ha : 0 < a; swap
284270
· apply mul_nonpos_of_nonpos_of_nonneg ha measureReal_nonneg |>.trans
285271
exact integral_nonneg (fun _ ↦ norm_nonneg _)
286272
calc
287-
_ ≤ ∫ x in birkhoffAverageSupSet f (fun x ↦ ‖g x‖) a, ‖g x‖ ∂μ := by
288-
exact meas_birkhoffAverageSupSet_smul_const_le_integral μ hf hg.norm a ha
273+
_ ≤ ∫ x in {x | a < birkhoffAverageSup f (‖g ·‖) x}, ‖g x‖ ∂μ := by
274+
exact distribution_birkhoffAverageSup_le_integral μ hf hg.norm a ha
289275
_ ≤ ∫ x, ‖g x‖ ∂μ := by
290276
exact setIntegral_le_integral hg.norm (ae_of_all _ (norm_nonneg <| g ·))
291277

0 commit comments

Comments
 (0)