Skip to content

Commit eb17e51

Browse files
committed
chore: remove unnecessary NeBot assumptions (#16847)
I analysed all the use of NeBot assumptions (that a filter needs to be non-empty). I found 10 lemmas where this assumption was unnecessary, and removed it (with some modification of the proofs when necessary). When possible, I simplified the proofs which use those lemmas. Unrelated: I cleaned up some lemmas I encountered which had universal quantifiers/chains of implications in their conclusions, using additional assumptions instead.
1 parent 2f37c5d commit eb17e51

File tree

8 files changed

+88
-64
lines changed

8 files changed

+88
-64
lines changed

Mathlib/Analysis/Calculus/SmoothSeries.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ theorem hasFDerivAt_tsum_of_isPreconnected (hu : Summable u) (hs : IsOpen s)
7777
apply Summable.hasSum
7878
exact summable_of_summable_hasFDerivAt_of_isPreconnected hu hs h's hf hf' hx₀ hf0 hy
7979
refine hasFDerivAt_of_tendstoUniformlyOn hs (tendstoUniformlyOn_tsum hu hf')
80-
(fun t y hy => ?_) A _ hx
80+
(fun t y hy => ?_) A hx
8181
exact HasFDerivAt.sum fun n _ => hf n y hy
8282

8383
/-- Consider a series of functions `∑' n, f n x` on a preconnected open set. If the series converges

Mathlib/Analysis/Calculus/UniformLimitsDeriv.lean

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -262,9 +262,6 @@ theorem difference_quotients_converge_uniformly
262262
TendstoUniformlyOnFilter (fun n : ι => fun y : E => (‖y - x‖⁻¹ : 𝕜) • (f n y - f n x))
263263
(fun y : E => (‖y - x‖⁻¹ : 𝕜) • (g y - g x)) l (𝓝 x) := by
264264
let A : NormedSpace ℝ E := NormedSpace.restrictScalars ℝ 𝕜 _
265-
rcases eq_or_ne l ⊥ with (hl | hl)
266-
· simp only [hl, TendstoUniformlyOnFilter, bot_prod, eventually_bot, imp_true_iff]
267-
haveI : NeBot l := ⟨hl⟩
268265
refine
269266
UniformCauchySeqOnFilter.tendstoUniformlyOnFilter_of_tendsto ?_
270267
((hfg.and (eventually_const.mpr hfg.self_of_nhds)).mono fun y hy =>
@@ -419,20 +416,19 @@ _uniformly_ to their limit on an open set containing `x`. -/
419416
theorem hasFDerivAt_of_tendstoUniformlyOn [NeBot l] {s : Set E} (hs : IsOpen s)
420417
(hf' : TendstoUniformlyOn f' g' l s)
421418
(hf : ∀ n : ι, ∀ x : E, x ∈ s → HasFDerivAt (f n) (f' n x) x)
422-
(hfg : ∀ x : E, x ∈ s → Tendsto (fun n => f n x) l (𝓝 (g x))) :
423-
∀ x : E, x ∈ s → HasFDerivAt g (g' x) x := fun _ =>
424-
hasFDerivAt_of_tendstoLocallyUniformlyOn hs hf'.tendstoLocallyUniformlyOn hf hfg
419+
(hfg : ∀ x : E, x ∈ s → Tendsto (fun n => f n x) l (𝓝 (g x))) (hx : x ∈ s) :
420+
HasFDerivAt g (g' x) x :=
421+
hasFDerivAt_of_tendstoLocallyUniformlyOn hs hf'.tendstoLocallyUniformlyOn hf hfg hx
425422

426423
/-- `(d/dx) lim_{n → ∞} f n x = lim_{n → ∞} f' n x` when the `f' n` converge
427424
_uniformly_ to their limit. -/
428425
theorem hasFDerivAt_of_tendstoUniformly [NeBot l] (hf' : TendstoUniformly f' g' l)
429426
(hf : ∀ n : ι, ∀ x : E, HasFDerivAt (f n) (f' n x) x)
430-
(hfg : ∀ x : E, Tendsto (fun n => f n x) l (𝓝 (g x))) : ∀ x : E, HasFDerivAt g (g' x) x := by
431-
intro x
427+
(hfg : ∀ x : E, Tendsto (fun n => f n x) l (𝓝 (g x))) (x : E) : HasFDerivAt g (g' x) x := by
432428
have hf : ∀ n : ι, ∀ x : E, x ∈ Set.univ → HasFDerivAt (f n) (f' n x) x := by simp [hf]
433429
have hfg : ∀ x : E, x ∈ Set.univ → Tendsto (fun n => f n x) l (𝓝 (g x)) := by simp [hfg]
434430
have hf' : TendstoUniformlyOn f' g' l Set.univ := by rwa [tendstoUniformlyOn_univ]
435-
exact hasFDerivAt_of_tendstoUniformlyOn isOpen_univ hf' hf hfg x (Set.mem_univ x)
431+
exact hasFDerivAt_of_tendstoUniformlyOn isOpen_univ hf' hf hfg (Set.mem_univ x)
436432

437433
end LimitsOfDerivatives
438434

@@ -541,18 +537,17 @@ theorem hasDerivAt_of_tendsto_locally_uniformly_on' [NeBot l] {s : Set 𝕜} (hs
541537
theorem hasDerivAt_of_tendstoUniformlyOn [NeBot l] {s : Set 𝕜} (hs : IsOpen s)
542538
(hf' : TendstoUniformlyOn f' g' l s)
543539
(hf : ∀ᶠ n in l, ∀ x : 𝕜, x ∈ s → HasDerivAt (f n) (f' n x) x)
544-
(hfg : ∀ x : 𝕜, x ∈ s → Tendsto (fun n => f n x) l (𝓝 (g x))) :
545-
∀ x : 𝕜, x ∈ s → HasDerivAt g (g' x) x := fun _ =>
546-
hasDerivAt_of_tendstoLocallyUniformlyOn hs hf'.tendstoLocallyUniformlyOn hf hfg
540+
(hfg : ∀ x : 𝕜, x ∈ s → Tendsto (fun n => f n x) l (𝓝 (g x))) (hx : x ∈ s) :
541+
HasDerivAt g (g' x) x :=
542+
hasDerivAt_of_tendstoLocallyUniformlyOn hs hf'.tendstoLocallyUniformlyOn hf hfg hx
547543

548544
theorem hasDerivAt_of_tendstoUniformly [NeBot l] (hf' : TendstoUniformly f' g' l)
549545
(hf : ∀ᶠ n in l, ∀ x : 𝕜, HasDerivAt (f n) (f' n x) x)
550-
(hfg : ∀ x : 𝕜, Tendsto (fun n => f n x) l (𝓝 (g x))) : ∀ x : 𝕜, HasDerivAt g (g' x) x := by
551-
intro x
546+
(hfg : ∀ x : 𝕜, Tendsto (fun n => f n x) l (𝓝 (g x))) (x : 𝕜) : HasDerivAt g (g' x) x := by
552547
have hf : ∀ᶠ n in l, ∀ x : 𝕜, x ∈ Set.univ → HasDerivAt (f n) (f' n x) x := by
553548
filter_upwards [hf] with n h x _ using h x
554549
have hfg : ∀ x : 𝕜, x ∈ Set.univ → Tendsto (fun n => f n x) l (𝓝 (g x)) := by simp [hfg]
555550
have hf' : TendstoUniformlyOn f' g' l Set.univ := by rwa [tendstoUniformlyOn_univ]
556-
exact hasDerivAt_of_tendstoUniformlyOn isOpen_univ hf' hf hfg x (Set.mem_univ x)
551+
exact hasDerivAt_of_tendstoUniformlyOn isOpen_univ hf' hf hfg (Set.mem_univ x)
557552

558553
end deriv

Mathlib/MeasureTheory/Integral/Indicator.lean

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,21 +39,25 @@ variable {ι : Type*} (L : Filter ι) [IsCountablyGenerated L] {As : ι → Set
3939
/-- If the indicators of measurable sets `Aᵢ` tend pointwise to the indicator of a set `A`
4040
and we eventually have `Aᵢ ⊆ B` for some set `B` of finite measure, then the measures of `Aᵢ`
4141
tend to the measure of `A`. -/
42-
lemma tendsto_measure_of_tendsto_indicator [NeBot L] {μ : Measure α}
42+
lemma tendsto_measure_of_tendsto_indicator {μ : Measure α}
4343
(As_mble : ∀ i, MeasurableSet (As i)) {B : Set α} (B_mble : MeasurableSet B)
4444
(B_finmeas : μ B ≠ ∞) (As_le_B : ∀ᶠ i in L, As i ⊆ B)
4545
(h_lim : ∀ x, ∀ᶠ i in L, x ∈ As i ↔ x ∈ A) :
4646
Tendsto (fun i ↦ μ (As i)) L (𝓝 (μ A)) := by
47+
rcases L.eq_or_neBot with rfl | _
48+
· exact tendsto_bot
4749
apply tendsto_measure_of_ae_tendsto_indicator L ?_ As_mble B_mble B_finmeas As_le_B
4850
(ae_of_all μ h_lim)
4951
exact measurableSet_of_tendsto_indicator L As_mble h_lim
5052

5153
/-- If `μ` is a finite measure and the indicators of measurable sets `Aᵢ` tend pointwise to
5254
the indicator of a set `A`, then the measures `μ Aᵢ` tend to the measure `μ A`. -/
53-
lemma tendsto_measure_of_tendsto_indicator_of_isFiniteMeasure [NeBot L]
55+
lemma tendsto_measure_of_tendsto_indicator_of_isFiniteMeasure
5456
(μ : Measure α) [IsFiniteMeasure μ] (As_mble : ∀ i, MeasurableSet (As i))
5557
(h_lim : ∀ x, ∀ᶠ i in L, x ∈ As i ↔ x ∈ A) :
5658
Tendsto (fun i ↦ μ (As i)) L (𝓝 (μ A)) := by
59+
rcases L.eq_or_neBot with rfl | _
60+
· exact tendsto_bot
5761
apply tendsto_measure_of_ae_tendsto_indicator_of_isFiniteMeasure L ?_ As_mble (ae_of_all μ h_lim)
5862
exact measurableSet_of_tendsto_indicator L As_mble h_lim
5963

Mathlib/MeasureTheory/Measure/Portmanteau.lean

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -399,13 +399,14 @@ Assuming that for all Borel sets E whose boundary ∂E carries no probability ma
399399
candidate limit probability measure μ we have convergence of the measures μsᵢ(E) to μ(E),
400400
then for all closed sets F we have the limsup condition limsup μsᵢ(F) ≤ μ(F). -/
401401
lemma limsup_measure_closed_le_of_forall_tendsto_measure
402-
{Ω ι : Type*} {L : Filter ι} [NeBot L]
403-
[MeasurableSpace Ω] [PseudoEMetricSpace Ω] [OpensMeasurableSpace Ω]
402+
{Ω ι : Type*} {L : Filter ι} [MeasurableSpace Ω] [PseudoEMetricSpace Ω] [OpensMeasurableSpace Ω]
404403
{μ : Measure Ω} [IsFiniteMeasure μ] {μs : ι → Measure Ω}
405404
(h : ∀ {E : Set Ω}, MeasurableSet E → μ (frontier E) = 0
406405
Tendsto (fun i ↦ μs i E) L (𝓝 (μ E)))
407406
(F : Set Ω) (F_closed : IsClosed F) :
408407
L.limsup (fun i ↦ μs i F) ≤ μ F := by
408+
rcases L.eq_or_neBot with rfl | _
409+
· simp only [limsup_bot, bot_eq_zero', zero_le]
409410
have ex := exists_null_frontiers_thickening μ F
410411
let rs := Classical.choose ex
411412
have rs_lim : Tendsto rs atTop (𝓝 0) := (Classical.choose_spec ex).1
@@ -435,7 +436,7 @@ Assuming that for all Borel sets E whose boundary ∂E carries no probability ma
435436
candidate limit probability measure μ we have convergence of the measures μsᵢ(E) to μ(E),
436437
then for all open sets G we have the limsup condition μ(G) ≤ liminf μsᵢ(G). -/
437438
lemma le_liminf_measure_open_of_forall_tendsto_measure
438-
{Ω ι : Type*} {L : Filter ι} [NeBot L]
439+
{Ω ι : Type*} {L : Filter ι}
439440
[MeasurableSpace Ω] [PseudoEMetricSpace Ω] [OpensMeasurableSpace Ω]
440441
{μ : Measure Ω} [IsProbabilityMeasure μ] {μs : ι → Measure Ω} [∀ i, IsProbabilityMeasure (μs i)]
441442
(h : ∀ {E}, MeasurableSet E → μ (frontier E) = 0 → Tendsto (fun i ↦ μs i E) L (𝓝 (μ E)))

Mathlib/Topology/Algebra/Order/LiminfLimsup.lean

Lines changed: 37 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -167,8 +167,8 @@ theorem limsSup_nhds (a : α) : limsSup (𝓝 a) = a :=
167167
| Or.inl ⟨c, hac, hcb⟩ => ⟨c, ge_mem_nhds hac, hcb⟩
168168
| Or.inr ⟨_, h⟩ => ⟨a, (𝓝 a).sets_of_superset (gt_mem_nhds hba) h, hba⟩
169169

170-
theorem limsInf_nhds : ∀ a : α, limsInf (𝓝 a) = a :=
171-
limsSup_nhds (α := αᵒᵈ)
170+
theorem limsInf_nhds (a : α) : limsInf (𝓝 a) = a :=
171+
limsSup_nhds (α := αᵒᵈ) a
172172

173173
/-- If a filter is converging, its limsup coincides with its limit. -/
174174
theorem limsInf_eq_of_le_nhds {f : Filter α} {a : α} [NeBot f] (h : f ≤ 𝓝 a) : f.limsInf = a :=
@@ -184,8 +184,8 @@ theorem limsInf_eq_of_le_nhds {f : Filter α} {a : α} [NeBot f] (h : f ≤ 𝓝
184184
_ ≤ f.limsInf := limsInf_le_limsInf_of_le h (isBounded_ge_nhds a) hb_le.isCobounded_flip)
185185

186186
/-- If a filter is converging, its liminf coincides with its limit. -/
187-
theorem limsSup_eq_of_le_nhds : ∀ {f : Filter α} {a : α} [NeBot f], f ≤ 𝓝 a f.limsSup = a :=
188-
limsInf_eq_of_le_nhds (α := αᵒᵈ)
187+
theorem limsSup_eq_of_le_nhds {f : Filter α} {a : α} [NeBot f] (h : f ≤ 𝓝 a) : f.limsSup = a :=
188+
limsInf_eq_of_le_nhds (α := αᵒᵈ) h
189189

190190
/-- If a function has a limit, then its limsup coincides with its limit. -/
191191
theorem Filter.Tendsto.limsup_eq {f : Filter β} {u : β → α} {a : α} [NeBot f]
@@ -209,12 +209,9 @@ and is greater than or equal to the `limsup` of `f`, then `f` tends to `a` along
209209
theorem tendsto_of_le_liminf_of_limsup_le {f : Filter β} {u : β → α} {a : α} (hinf : a ≤ liminf u f)
210210
(hsup : limsup u f ≤ a) (h : f.IsBoundedUnder (· ≤ ·) u := by isBoundedDefault)
211211
(h' : f.IsBoundedUnder (· ≥ ·) u := by isBoundedDefault) : Tendsto u f (𝓝 a) := by
212-
classical
213-
by_cases hf : f = ⊥
214-
· rw [hf]
215-
exact tendsto_bot
216-
· haveI : NeBot f := ⟨hf⟩
217-
exact tendsto_of_liminf_eq_limsup (le_antisymm (le_trans (liminf_le_limsup h h') hsup) hinf)
212+
rcases f.eq_or_neBot with rfl | _
213+
· exact tendsto_bot
214+
· exact tendsto_of_liminf_eq_limsup (le_antisymm (le_trans (liminf_le_limsup h h') hsup) hinf)
218215
(le_antisymm hsup (le_trans hinf (liminf_le_limsup h h'))) h h'
219216

220217
/-- Assume that, for any `a < b`, a sequence can not be infinitely many times below `a` and
@@ -559,20 +556,41 @@ lemma liminf_add_const (F : Filter ι) [NeBot F] [Add R] [ContinuousAdd R]
559556
(fun _ _ h ↦ add_le_add_right h c) (continuous_add_right c).continuousAt cobdd bdd_below).symm
560557

561558
/-- `limsup (c - xᵢ) = c - liminf xᵢ`. -/
562-
lemma limsup_const_sub (F : Filter ι) [NeBot F] [AddCommSemigroup R] [Sub R] [ContinuousSub R]
563-
[OrderedSub R] [CovariantClass R R (fun x y ↦ x + y) fun x y ↦ x ≤ y] (f : ι → R) (c : R)
559+
lemma limsup_const_sub (F : Filter ι) [AddCommSemigroup R] [Sub R] [ContinuousSub R] [OrderedSub R]
560+
[CovariantClass R R (fun x y ↦ x + y) fun x y ↦ x ≤ y] (f : ι → R) (c : R)
564561
(cobdd : F.IsCoboundedUnder (· ≥ ·) f) (bdd_below : F.IsBoundedUnder (· ≥ ·) f) :
565-
Filter.limsup (fun i ↦ c - f i) F = c - Filter.liminf f F :=
566-
(Antitone.map_limsInf_of_continuousAt (F := F.map f) (f := fun (x : R) ↦ c - x)
562+
Filter.limsup (fun i ↦ c - f i) F = c - Filter.liminf f F := by
563+
rcases F.eq_or_neBot with rfl | _
564+
· simp only [liminf, limsInf, limsup, limsSup, map_bot, eventually_bot, Set.setOf_true]
565+
simp only [IsCoboundedUnder, IsCobounded, map_bot, eventually_bot, true_implies] at cobdd
566+
rcases cobdd with ⟨x, hx⟩
567+
refine (csInf_le ?_ (Set.mem_univ _)).antisymm
568+
(tsub_le_iff_tsub_le.1 (le_csSup ?_ (Set.mem_univ _)))
569+
· refine ⟨x - x, mem_lowerBounds.2 fun y ↦ ?_⟩
570+
simp only [Set.mem_univ, true_implies]
571+
exact tsub_le_iff_tsub_le.1 (hx (x - y))
572+
· refine ⟨x, mem_upperBounds.2 fun y ↦ ?_⟩
573+
simp only [Set.mem_univ, hx y, implies_true]
574+
· exact (Antitone.map_limsInf_of_continuousAt (F := F.map f) (f := fun (x : R) ↦ c - x)
567575
(fun _ _ h ↦ tsub_le_tsub_left h c) (continuous_sub_left c).continuousAt cobdd bdd_below).symm
568576

569577
/-- `limsup (xᵢ - c) = (limsup xᵢ) - c`. -/
570-
lemma limsup_sub_const (F : Filter ι) [NeBot F] [AddCommSemigroup R] [Sub R] [ContinuousSub R]
571-
[OrderedSub R] (f : ι → R) (c : R)
578+
lemma limsup_sub_const (F : Filter ι) [AddCommSemigroup R] [Sub R] [ContinuousSub R] [OrderedSub R]
579+
(f : ι → R) (c : R)
572580
(bdd_above : F.IsBoundedUnder (· ≤ ·) f) (cobdd : F.IsCoboundedUnder (· ≤ ·) f) :
573-
Filter.limsup (fun i ↦ f i - c) F = Filter.limsup f F - c :=
574-
(Monotone.map_limsSup_of_continuousAt (F := F.map f) (f := fun (x : R) ↦ x - c)
575-
(fun _ _ h ↦ tsub_le_tsub_right h c) (continuous_sub_right c).continuousAt bdd_above cobdd).symm
581+
Filter.limsup (fun i ↦ f i - c) F = Filter.limsup f F - c := by
582+
rcases F.eq_or_neBot with rfl | _
583+
· have {a : R} : sInf Set.univ ≤ a := by
584+
apply csInf_le _ (Set.mem_univ a)
585+
simp only [IsCoboundedUnder, IsCobounded, map_bot, eventually_bot, true_implies] at cobdd
586+
rcases cobdd with ⟨x, hx⟩
587+
refine ⟨x, mem_lowerBounds.2 fun y ↦ ?_⟩
588+
simp only [Set.mem_univ, hx y, implies_true]
589+
simp only [limsup, limsSup, map_bot, eventually_bot, Set.setOf_true]
590+
exact this.antisymm (tsub_le_iff_right.2 this)
591+
· apply (Monotone.map_limsSup_of_continuousAt (F := F.map f) (f := fun (x : R) ↦ x - c) _ _).symm
592+
· exact fun _ _ h ↦ tsub_le_tsub_right h c
593+
· exact (continuous_sub_right c).continuousAt
576594

577595
/-- `liminf (c - xᵢ) = c - limsup xᵢ`. -/
578596
lemma liminf_const_sub (F : Filter ι) [NeBot F] [AddCommSemigroup R] [Sub R] [ContinuousSub R]

Mathlib/Topology/Instances/ENNReal.lean

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1460,24 +1460,26 @@ section LimsupLiminf
14601460

14611461
variable {ι : Type*}
14621462

1463-
lemma limsup_sub_const (F : Filter ι) [NeBot F] (f : ι → ℝ≥0∞) (c : ℝ≥0∞) :
1464-
Filter.limsup (fun i ↦ f i - c) F = Filter.limsup f F - c :=
1465-
(Monotone.map_limsSup_of_continuousAt (F := F.map f) (f := fun (x : ℝ≥0∞) ↦ x - c)
1463+
lemma limsup_sub_const (F : Filter ι) (f : ι → ℝ≥0∞) (c : ℝ≥0∞) :
1464+
Filter.limsup (fun i ↦ f i - c) F = Filter.limsup f F - c := by
1465+
rcases F.eq_or_neBot with rfl | _
1466+
· simp only [limsup_bot, bot_eq_zero', zero_le, tsub_eq_zero_of_le]
1467+
· exact (Monotone.map_limsSup_of_continuousAt (F := F.map f) (f := fun (x : ℝ≥0∞) ↦ x - c)
14661468
(fun _ _ h ↦ tsub_le_tsub_right h c) (continuous_sub_right c).continuousAt).symm
14671469

14681470
lemma liminf_sub_const (F : Filter ι) [NeBot F] (f : ι → ℝ≥0∞) (c : ℝ≥0∞) :
14691471
Filter.liminf (fun i ↦ f i - c) F = Filter.liminf f F - c :=
14701472
(Monotone.map_limsInf_of_continuousAt (F := F.map f) (f := fun (x : ℝ≥0∞) ↦ x - c)
14711473
(fun _ _ h ↦ tsub_le_tsub_right h c) (continuous_sub_right c).continuousAt).symm
14721474

1473-
lemma limsup_const_sub (F : Filter ι) [NeBot F] (f : ι → ℝ≥0∞)
1474-
{c : ℝ≥0∞} (c_ne_top : c ≠ ∞) :
1475-
Filter.limsup (fun i ↦ c - f i) F = c - Filter.liminf f F :=
1476-
(Antitone.map_limsInf_of_continuousAt (F := F.map f) (f := fun (x : ℝ≥0∞) ↦ c - x)
1475+
lemma limsup_const_sub (F : Filter ι) (f : ι → ℝ≥0∞) {c : ℝ≥0∞} (c_ne_top : c ≠ ∞) :
1476+
Filter.limsup (fun i ↦ c - f i) F = c - Filter.liminf f F := by
1477+
rcases F.eq_or_neBot with rfl | _
1478+
· simp only [limsup_bot, bot_eq_zero', liminf_bot, le_top, tsub_eq_zero_of_le]
1479+
· exact (Antitone.map_limsInf_of_continuousAt (F := F.map f) (f := fun (x : ℝ≥0∞) ↦ c - x)
14771480
(fun _ _ h ↦ tsub_le_tsub_left h c) (continuous_sub_left c_ne_top).continuousAt).symm
14781481

1479-
lemma liminf_const_sub (F : Filter ι) [NeBot F] (f : ι → ℝ≥0∞)
1480-
{c : ℝ≥0∞} (c_ne_top : c ≠ ∞) :
1482+
lemma liminf_const_sub (F : Filter ι) [NeBot F] (f : ι → ℝ≥0∞) {c : ℝ≥0∞} (c_ne_top : c ≠ ∞) :
14811483
Filter.liminf (fun i ↦ c - f i) F = c - Filter.limsup f F :=
14821484
(Antitone.map_limsSup_of_continuousAt (F := F.map f) (f := fun (x : ℝ≥0∞) ↦ c - x)
14831485
(fun _ _ h ↦ tsub_le_tsub_left h c) (continuous_sub_left c_ne_top).continuousAt).symm

Mathlib/Topology/Order/IsLUB.lean

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,9 @@ theorem IsLUB.nhdsWithin_neBot {a : α} {s : Set α} (ha : IsLUB s a) (hs : s.No
5353
NeBot (𝓝[s] a) :=
5454
mem_closure_iff_nhdsWithin_neBot.1 (ha.mem_closure hs)
5555

56-
theorem IsGLB.nhdsWithin_neBot : ∀ {a : α} {s : Set α}, IsGLB s a → s.Nonempty → NeBot (𝓝[s] a) :=
57-
IsLUB.nhdsWithin_neBot (α := αᵒᵈ)
56+
theorem IsGLB.nhdsWithin_neBot {a : α} {s : Set α} (ha : IsGLB s a) (hs : s.Nonempty) :
57+
NeBot (𝓝[s] a) :=
58+
IsLUB.nhdsWithin_neBot (α := αᵒᵈ) ha hs
5859

5960
theorem isLUB_of_mem_nhds {s : Set α} {a : α} {f : Filter α} (hsa : a ∈ upperBounds s) (hsf : s ∈ f)
6061
[NeBot (f ⊓ 𝓝 a)] : IsLUB s a :=
@@ -70,9 +71,10 @@ theorem isLUB_of_mem_closure {s : Set α} {a : α} (hsa : a ∈ upperBounds s) (
7071
rw [mem_closure_iff_clusterPt, ClusterPt, inf_comm] at hsf
7172
exact isLUB_of_mem_nhds hsa (mem_principal_self s)
7273

73-
theorem isGLB_of_mem_nhds :
74-
∀ {s : Set α} {a : α} {f : Filter α}, a ∈ lowerBounds s → s ∈ f → NeBot (f ⊓ 𝓝 a) → IsGLB s a :=
75-
isLUB_of_mem_nhds (α := αᵒᵈ)
74+
theorem isGLB_of_mem_nhds {s : Set α} {a : α} {f : Filter α} (hsa : a ∈ lowerBounds s) (hsf : s ∈ f)
75+
[NeBot (f ⊓ 𝓝 a)] :
76+
IsGLB s a :=
77+
isLUB_of_mem_nhds (α := αᵒᵈ) hsa hsf
7678

7779
theorem isGLB_of_mem_closure {s : Set α} {a : α} (hsa : a ∈ lowerBounds s) (hsf : a ∈ closure s) :
7880
IsGLB s a :=
@@ -114,20 +116,20 @@ theorem IsLUB.mem_lowerBounds_of_tendsto [Preorder γ] [TopologicalSpace γ] [Or
114116
(hb : Tendsto f (𝓝[s] a) (𝓝 b)) : b ∈ lowerBounds (f '' s) :=
115117
IsLUB.mem_upperBounds_of_tendsto (γ := γᵒᵈ) hf ha hb
116118

117-
theorem IsLUB.isGLB_of_tendsto [Preorder γ] [TopologicalSpace γ] [OrderClosedTopology γ] :
118-
∀ {f : α → γ} {s : Set α} {a : α} {b : γ},
119-
AntitoneOn f s → IsLUB s a → s.Nonempty → Tendsto f (𝓝[s] a) (𝓝 b) IsGLB (f '' s) b :=
120-
IsLUB.isLUB_of_tendsto (γ := γᵒᵈ)
119+
theorem IsLUB.isGLB_of_tendsto [Preorder γ] [TopologicalSpace γ] [OrderClosedTopology γ] {f : α → γ}
120+
{s : Set α} {a : α} {b : γ} (hf : AntitoneOn f s) (ha : IsLUB s a) (hs : s.Nonempty)
121+
(hb : Tendsto f (𝓝[s] a) (𝓝 b)) : IsGLB (f '' s) b :=
122+
IsLUB.isLUB_of_tendsto (γ := γᵒᵈ) hf ha hs hb
121123

122124
theorem IsGLB.mem_upperBounds_of_tendsto [Preorder γ] [TopologicalSpace γ] [OrderClosedTopology γ]
123125
{f : α → γ} {s : Set α} {a : α} {b : γ} (hf : AntitoneOn f s) (ha : IsGLB s a)
124126
(hb : Tendsto f (𝓝[s] a) (𝓝 b)) : b ∈ upperBounds (f '' s) :=
125127
IsGLB.mem_lowerBounds_of_tendsto (γ := γᵒᵈ) hf ha hb
126128

127-
theorem IsGLB.isLUB_of_tendsto [Preorder γ] [TopologicalSpace γ] [OrderClosedTopology γ] :
128-
∀ {f : α → γ} {s : Set α} {a : α} {b : γ},
129-
AntitoneOn f s → IsGLB s a → s.Nonempty → Tendsto f (𝓝[s] a) (𝓝 b) IsLUB (f '' s) b :=
130-
IsGLB.isGLB_of_tendsto (γ := γᵒᵈ)
129+
theorem IsGLB.isLUB_of_tendsto [Preorder γ] [TopologicalSpace γ] [OrderClosedTopology γ] {f : α → γ}
130+
{s : Set α} {a : α} {b : γ} (hf : AntitoneOn f s) (ha : IsGLB s a) (hs : s.Nonempty)
131+
(hb : Tendsto f (𝓝[s] a) (𝓝 b)) : IsLUB (f '' s) b :=
132+
IsGLB.isGLB_of_tendsto (γ := γᵒᵈ) hf ha hs hb
131133

132134
theorem IsLUB.mem_of_isClosed {a : α} {s : Set α} (ha : IsLUB s a) (hs : s.Nonempty)
133135
(sc : IsClosed s) : a ∈ s :=

0 commit comments

Comments
 (0)