Skip to content

Commit 11acf7c

Browse files
committed
chore(Analysis/SpecificLimits/Basic): generalize lemmas (#28475)
1 parent e02dfd9 commit 11acf7c

File tree

13 files changed

+100
-84
lines changed

13 files changed

+100
-84
lines changed

Counterexamples/DiscreteTopologyNonDiscreteUniformity.lean

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,7 @@ Copyright (c) 2024 Filippo A. E. Nuccio. All rights reserved.
33
Released under Apache 2.0 license as described in the file LICENSE.
44
Authors: Filippo A. E. Nuccio
55
-/
6-
76
import Mathlib.Analysis.SpecificLimits.Basic
8-
import Mathlib.Order.Interval.Set.Basic
9-
import Mathlib.Topology.MetricSpace.Pseudo.Defs
10-
import Mathlib.Topology.MetricSpace.Cauchy
11-
import Mathlib.Topology.UniformSpace.Cauchy
127

138
/-!
149
# Discrete uniformities and discrete topology
@@ -83,11 +78,10 @@ open Set Function Filter Metric
8378

8479
/- We remove the "usual" instances of (discrete) topological space and of (discrete) uniform space
8580
from `ℕ`. -/
86-
attribute [-instance] instTopologicalSpaceNat instUniformSpaceNat
81+
attribute [-instance] instTopologicalSpaceNat instUniformSpaceNat Nat.instDist
8782

8883
section Metric
8984

90-
9185
noncomputable local instance : PseudoMetricSpace ℕ where
9286
dist := fun n m ↦ |2 ^ (- n : ℤ) - 2 ^ (- m : ℤ)|
9387
dist_self := by simp only [zpow_neg, zpow_natCast, sub_self, abs_zero, implies_true]

Mathlib/Analysis/CStarAlgebra/Spectrum.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ theorem IsSelfAdjoint.spectralRadius_eq_nnnorm {a : A} (ha : IsSelfAdjoint a) :
117117
refine tendsto_nhds_unique ?_ hconst
118118
convert
119119
(spectrum.pow_nnnorm_pow_one_div_tendsto_nhds_spectralRadius (a : A)).comp
120-
(Nat.tendsto_pow_atTop_atTop_of_one_lt one_lt_two) using 1
120+
(tendsto_pow_atTop_atTop_of_one_lt one_lt_two) using 1
121121
refine funext fun n => ?_
122122
rw [Function.comp_apply, ha.nnnorm_pow_two_pow, ENNReal.coe_pow, ← rpow_natCast, ← rpow_mul]
123123
simp

Mathlib/Analysis/Normed/Algebra/Exponential.lean

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import Mathlib.Analysis.Analytic.ChangeOrigin
88
import Mathlib.Analysis.Complex.Basic
99
import Mathlib.Data.Nat.Choose.Cast
1010
import Mathlib.Analysis.Analytic.OfScalars
11-
import Mathlib.Analysis.SpecificLimits.RCLike
1211

1312
/-!
1413
# Exponential in a Banach algebra
@@ -389,7 +388,7 @@ theorem expSeries_radius_eq_top : (expSeries 𝕂 𝔸).radius = ∞ := by
389388
inv_div_inv, norm_mul, div_self this, norm_one, one_mul]
390389
apply norm_zero (E := 𝕂) ▸ Filter.Tendsto.norm
391390
apply (Filter.tendsto_add_atTop_iff_nat (f := fun n => (n : 𝕂)⁻¹) 1).mpr
392-
exact RCLike.tendsto_inverse_atTop_nhds_zero_nat 𝕂
391+
exact tendsto_inv_atTop_nhds_zero_nat
393392
· simp [this]
394393

395394
theorem expSeries_radius_pos : 0 < (expSeries 𝕂 𝔸).radius := by

Mathlib/Analysis/PSeries.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ theorem le_tsum_schlomilch (hf : ∀ ⦃m n⦄, 0 < m → m ≤ n → f n ≤ f
148148

149149
theorem le_tsum_condensed (hf : ∀ ⦃m n⦄, 0 < m → m ≤ n → f n ≤ f m) :
150150
∑' k, f k ≤ f 0 + ∑' k : ℕ, 2 ^ k * f (2 ^ k) := by
151-
rw [ENNReal.tsum_eq_iSup_nat' (Nat.tendsto_pow_atTop_atTop_of_one_lt _root_.one_lt_two)]
151+
rw [ENNReal.tsum_eq_iSup_nat' (tendsto_pow_atTop_atTop_of_one_lt _root_.one_lt_two)]
152152
refine iSup_le fun n => (Finset.le_sum_condensed hf n).trans ?_
153153
simp only [nsmul_eq_mul, Nat.cast_pow, Nat.cast_two]
154154
grw [ENNReal.sum_le_tsum]

Mathlib/Analysis/Real/Hyperreal.lean

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@ theorem gt_of_tendsto_zero_of_neg {f : ℕ → ℝ} (hf : Tendsto f atTop (𝓝
185185
rw [← neg_neg r, coe_neg]; exact neg_lt_of_tendsto_zero_of_pos hf (neg_pos.mpr hr)
186186

187187
theorem epsilon_lt_pos (x : ℝ) : 0 < x → ε < x :=
188-
lt_of_tendsto_zero_of_pos tendsto_inverse_atTop_nhds_zero_nat
188+
lt_of_tendsto_zero_of_pos tendsto_inv_atTop_nhds_zero_nat
189189

190190
/-- Standard part predicate -/
191191
def IsSt (x : ℝ*) (r : ℝ) :=
@@ -581,7 +581,7 @@ theorem infinitesimal_of_tendsto_zero {f : ℕ → ℝ} (h : Tendsto f atTop (
581581
isSt_of_tendsto h
582582

583583
theorem infinitesimal_epsilon : Infinitesimal ε :=
584-
infinitesimal_of_tendsto_zero tendsto_inverse_atTop_nhds_zero_nat
584+
infinitesimal_of_tendsto_zero tendsto_inv_atTop_nhds_zero_nat
585585

586586
theorem not_real_of_infinitesimal_ne_zero (x : ℝ*) : Infinitesimal x → x ≠ 0 → ∀ r : ℝ, x ≠ r :=
587587
fun hi hx r hr =>

Mathlib/Analysis/SpecialFunctions/Complex/LogBounds.lean

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ Authors: Michael Stoll
66
import Mathlib.Analysis.Complex.Convex
77
import Mathlib.Analysis.SpecialFunctions.Integrals.Basic
88
import Mathlib.Analysis.Calculus.Deriv.Shift
9+
import Mathlib.Analysis.SpecificLimits.RCLike
910

1011
/-!
1112
# Estimates for the complex logarithm

Mathlib/Analysis/SpecialFunctions/OrdinaryHypergeometric.lean

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
44
Authors: Edward Watine
55
-/
66
import Mathlib.Analysis.Analytic.OfScalars
7-
import Mathlib.Analysis.SpecificLimits.RCLike
7+
import Mathlib.Analysis.RCLike.Basic
88

99
/-!
1010
# Ordinary hypergeometric function in a Banach algebra
@@ -204,6 +204,6 @@ theorem ordinaryHypergeometricSeries_radius_eq_one
204204
(c + k) / (a + k) * ((1 + k) / (b + k)) := by field
205205
simp_rw [this]
206206
apply (mul_one (1 : 𝕂)) ▸ Filter.Tendsto.mul <;>
207-
convert RCLike.tendsto_add_mul_div_add_mul_atTop_nhds _ _ (1 : 𝕂) one_ne_zero <;> simp
207+
convert tendsto_add_mul_div_add_mul_atTop_nhds _ _ (1 : 𝕂) one_ne_zero <;> simp
208208

209209
end RCLike

Mathlib/Analysis/SpecificLimits/Basic.lean

Lines changed: 81 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import Mathlib.Order.Iterate
1010
import Mathlib.Topology.Algebra.Algebra
1111
import Mathlib.Topology.Algebra.InfiniteSum.Real
1212
import Mathlib.Topology.Instances.EReal.Lemmas
13+
import Mathlib.Topology.Instances.Rat
1314

1415
/-!
1516
# A collection of specific limit computations
@@ -27,24 +28,32 @@ open Set Function Filter Finset Metric Topology Nat uniformity NNReal ENNReal
2728

2829
variable {α : Type*} {β : Type*} {ι : Type*}
2930

30-
theorem tendsto_inverse_atTop_nhds_zero_nat : Tendsto (fun n : ℕ ↦ (n : )⁻¹) atTop (𝓝 0) :=
31+
theorem NNRat.tendsto_inv_atTop_nhds_zero_nat : Tendsto (fun n : ℕ ↦ (n : ℚ≥0)⁻¹) atTop (𝓝 0) :=
3132
tendsto_inv_atTop_zero.comp tendsto_natCast_atTop_atTop
3233

33-
theorem tendsto_const_div_atTop_nhds_zero_nat (C : ℝ) :
34-
Tendsto (fun n : ℕ ↦ C / n) atTop (𝓝 0) := by
35-
simpa only [mul_zero] using tendsto_const_nhds.mul tendsto_inverse_atTop_nhds_zero_nat
36-
37-
theorem tendsto_one_div_atTop_nhds_zero_nat : Tendsto (fun n : ℕ ↦ 1 / (n : ℝ)) atTop (𝓝 0) :=
38-
tendsto_const_div_atTop_nhds_zero_nat 1
34+
theorem NNRat.tendsto_algebraMap_inv_atTop_nhds_zero_nat (𝕜 : Type*) [Semiring 𝕜]
35+
[Algebra ℚ≥0 𝕜] [TopologicalSpace 𝕜] [ContinuousSMul ℚ≥0 𝕜] :
36+
Tendsto (algebraMap ℚ≥0 𝕜 ∘ fun n : ℕ ↦ (n : ℚ≥0)⁻¹) atTop (𝓝 0) := by
37+
convert (continuous_algebraMap ℚ≥0 𝕜).continuousAt.tendsto.comp
38+
tendsto_inv_atTop_nhds_zero_nat
39+
rw [map_zero]
3940

40-
theorem NNReal.tendsto_inverse_atTop_nhds_zero_nat :
41-
Tendsto (fun n : ℕ ↦ (n : ℝ≥0)⁻¹) atTop (𝓝 0) := by
42-
rw [← NNReal.tendsto_coe]
43-
exact _root_.tendsto_inverse_atTop_nhds_zero_nat
41+
theorem tendsto_inv_atTop_nhds_zero_nat {𝕜 : Type*} [DivisionSemiring 𝕜] [CharZero 𝕜]
42+
[TopologicalSpace 𝕜] [ContinuousSMul ℚ≥0 𝕜] :
43+
Tendsto (fun n : ℕ ↦ (n : 𝕜)⁻¹) atTop (𝓝 0) := by
44+
convert NNRat.tendsto_algebraMap_inv_atTop_nhds_zero_nat 𝕜
45+
simp
4446

45-
theorem NNReal.tendsto_const_div_atTop_nhds_zero_nat (C : ℝ≥0) :
47+
theorem tendsto_const_div_atTop_nhds_zero_nat {𝕜 : Type*} [DivisionSemiring 𝕜] [CharZero 𝕜]
48+
[TopologicalSpace 𝕜] [ContinuousSMul ℚ≥0 𝕜] [ContinuousMul 𝕜] (C : 𝕜) :
4649
Tendsto (fun n : ℕ ↦ C / n) atTop (𝓝 0) := by
47-
simpa using tendsto_const_nhds.mul NNReal.tendsto_inverse_atTop_nhds_zero_nat
50+
simpa only [mul_zero, div_eq_mul_inv] using
51+
(tendsto_const_nhds (x := C)).mul tendsto_inv_atTop_nhds_zero_nat
52+
53+
theorem tendsto_one_div_atTop_nhds_zero_nat {𝕜 : Type*} [DivisionSemiring 𝕜] [CharZero 𝕜]
54+
[TopologicalSpace 𝕜] [ContinuousSMul ℚ≥0 𝕜] :
55+
Tendsto (fun n : ℕ ↦ 1 / (n : 𝕜)) atTop (𝓝 0) := by
56+
simp [tendsto_inv_atTop_nhds_zero_nat]
4857

4958
theorem EReal.tendsto_const_div_atTop_nhds_zero_nat {C : EReal} (h : C ≠ ⊥) (h' : C ≠ ⊤) :
5059
Tendsto (fun n : ℕ ↦ C / n) atTop (𝓝 0) := by
@@ -54,30 +63,23 @@ theorem EReal.tendsto_const_div_atTop_nhds_zero_nat {C : EReal} (h : C ≠ ⊥)
5463
rw [this, ← coe_zero, tendsto_coe]
5564
exact _root_.tendsto_const_div_atTop_nhds_zero_nat C.toReal
5665

57-
theorem tendsto_one_div_add_atTop_nhds_zero_nat :
58-
Tendsto (fun n : ℕ ↦ 1 / ((n : ℝ) + 1)) atTop (𝓝 0) :=
59-
suffices Tendsto (fun n : ℕ ↦ 1 / (↑(n + 1) : ℝ)) atTop (𝓝 0) by simpa
60-
(tendsto_add_atTop_iff_nat 1).2 (_root_.tendsto_const_div_atTop_nhds_zero_nat 1)
61-
62-
theorem NNReal.tendsto_algebraMap_inverse_atTop_nhds_zero_nat (𝕜 : Type*) [Semiring 𝕜]
63-
[Algebra ℝ≥0 𝕜] [TopologicalSpace 𝕜] [ContinuousSMul ℝ≥0 𝕜] :
64-
Tendsto (algebraMap ℝ≥0 𝕜 ∘ fun n : ℕ ↦ (n : ℝ≥0)⁻¹) atTop (𝓝 0) := by
65-
convert (continuous_algebraMap ℝ≥0 𝕜).continuousAt.tendsto.comp
66-
tendsto_inverse_atTop_nhds_zero_nat
66+
theorem tendsto_one_div_add_atTop_nhds_zero_nat {𝕜 : Type*} [DivisionSemiring 𝕜] [CharZero 𝕜]
67+
[TopologicalSpace 𝕜] [ContinuousSMul ℚ≥0 𝕜] :
68+
Tendsto (fun n : ℕ ↦ 1 / ((n : 𝕜) + 1)) atTop (𝓝 0) :=
69+
suffices Tendsto (fun n : ℕ ↦ 1 / (↑(n + 1) : 𝕜)) atTop (𝓝 0) by simpa
70+
(tendsto_add_atTop_iff_nat 1).2 tendsto_one_div_atTop_nhds_zero_nat
71+
72+
theorem tendsto_algebraMap_inv_atTop_nhds_zero_nat {𝕜 : Type*} (A : Type*)
73+
[Semifield 𝕜] [CharZero 𝕜] [TopologicalSpace 𝕜] [ContinuousSMul ℚ≥0 𝕜]
74+
[Semiring A] [Algebra 𝕜 A] [TopologicalSpace A] [ContinuousSMul 𝕜 A] :
75+
Tendsto (algebraMap 𝕜 A ∘ fun n : ℕ ↦ (n : 𝕜)⁻¹) atTop (𝓝 0) := by
76+
convert (continuous_algebraMap 𝕜 A).continuousAt.tendsto.comp tendsto_inv_atTop_nhds_zero_nat
6777
rw [map_zero]
6878

69-
theorem tendsto_algebraMap_inverse_atTop_nhds_zero_nat (𝕜 : Type*) [Semiring 𝕜] [Algebra ℝ 𝕜]
70-
[TopologicalSpace 𝕜] [ContinuousSMul ℝ 𝕜] :
71-
Tendsto (algebraMap ℝ 𝕜 ∘ fun n : ℕ ↦ (n : ℝ)⁻¹) atTop (𝓝 0) :=
72-
NNReal.tendsto_algebraMap_inverse_atTop_nhds_zero_nat 𝕜
73-
7479
/-- The limit of `n / (n + x)` is 1, for any constant `x` (valid in `ℝ` or any topological division
75-
algebra over `ℝ`, e.g., `ℂ`).
76-
77-
TODO: introduce a typeclass saying that `1 / n` tends to 0 at top, making it possible to get this
78-
statement simultaneously on `ℚ`, `ℝ` and `ℂ`. -/
79-
theorem tendsto_natCast_div_add_atTop {𝕜 : Type*} [DivisionRing 𝕜] [TopologicalSpace 𝕜]
80-
[CharZero 𝕜] [Algebra ℝ 𝕜] [ContinuousSMul ℝ 𝕜] [IsTopologicalDivisionRing 𝕜] (x : 𝕜) :
80+
algebra over `ℚ≥0`, e.g., `ℂ`). -/
81+
theorem tendsto_natCast_div_add_atTop {𝕜 : Type*} [DivisionSemiring 𝕜] [TopologicalSpace 𝕜]
82+
[CharZero 𝕜] [ContinuousSMul ℚ≥0 𝕜] [IsTopologicalSemiring 𝕜] [ContinuousInv₀ 𝕜] (x : 𝕜) :
8183
Tendsto (fun n : ℕ ↦ (n : 𝕜) / (n + x)) atTop (𝓝 1) := by
8284
convert Tendsto.congr' ((eventually_ne_atTop 0).mp (Eventually.of_forall fun n hn ↦ _)) _
8385
· exact fun n : ℕ ↦ 1 / (1 + x / n)
@@ -88,12 +90,28 @@ theorem tendsto_natCast_div_add_atTop {𝕜 : Type*} [DivisionRing 𝕜] [Topolo
8890
refine tendsto_const_nhds.div (tendsto_const_nhds.add ?_) (by simp)
8991
simp_rw [div_eq_mul_inv]
9092
refine tendsto_const_nhds.mul ?_
91-
have := ((continuous_algebraMap 𝕜).tendsto _).comp tendsto_inverse_atTop_nhds_zero_nat
93+
have := ((continuous_algebraMap ℚ≥0 𝕜).tendsto _).comp tendsto_inv_atTop_nhds_zero_nat
9294
rw [map_zero, Filter.tendsto_atTop'] at this
9395
refine Iff.mpr tendsto_atTop' ?_
9496
intros
9597
simp_all only [comp_apply, map_inv₀, map_natCast]
9698

99+
theorem tendsto_add_mul_div_add_mul_atTop_nhds {𝕜 : Type*} [Semifield 𝕜] [CharZero 𝕜]
100+
[TopologicalSpace 𝕜] [ContinuousSMul ℚ≥0 𝕜] [IsTopologicalSemiring 𝕜] [ContinuousInv₀ 𝕜]
101+
(a b c : 𝕜) {d : 𝕜} (hd : d ≠ 0) :
102+
Tendsto (fun k : ℕ ↦ (a + c * k) / (b + d * k)) atTop (𝓝 (c / d)) := by
103+
apply Filter.Tendsto.congr'
104+
case f₁ => exact fun k ↦ (a * (↑k)⁻¹ + c) / (b * (↑k)⁻¹ + d)
105+
· refine (eventually_ne_atTop 0).mp (Eventually.of_forall ?_)
106+
intro h hx
107+
dsimp
108+
field (discharger := norm_cast)
109+
· apply Filter.Tendsto.div _ _ hd
110+
all_goals
111+
apply zero_add (_ : 𝕜) ▸ Filter.Tendsto.add_const _ _
112+
apply mul_zero (_ : 𝕜) ▸ Filter.Tendsto.const_mul _ _
113+
exact tendsto_inv_atTop_nhds_zero_nat
114+
97115
/-- For any positive `m : ℕ`, `((n % m : ℕ) : ℝ) / (n : ℝ)` tends to `0` as `n` tends to `∞`. -/
98116
theorem tendsto_mod_div_atTop_nhds_zero_nat {m : ℕ} (hm : 0 < m) :
99117
Tendsto (fun n : ℕ => ((n % m : ℕ) : ℝ) / (n : ℝ)) atTop (𝓝 0) := by
@@ -117,7 +135,7 @@ theorem Filter.EventuallyEq.div_mul_cancel {α G : Type*} [GroupWithZero G] {f g
117135

118136
/-- If `g` tends to `∞`, then eventually for all `x` we have `(f x / g x) * g x = f x`. -/
119137
theorem Filter.EventuallyEq.div_mul_cancel_atTop {α K : Type*}
120-
[Semifield K] [LinearOrder K] [IsStrictOrderedRing K]
138+
[DivisionSemiring K] [LinearOrder K] [IsStrictOrderedRing K]
121139
{f g : α → K} {l : Filter α} (hg : Tendsto g l atTop) :
122140
(fun x ↦ f x / g x * g x) =ᶠ[l] fun x ↦ f x :=
123141
div_mul_cancel <| hg.mono_right <| le_principal_iff.mpr <|
@@ -163,16 +181,14 @@ theorem tendsto_add_one_pow_atTop_atTop_of_pos
163181
not_bddAbove_iff.2 fun _ ↦ Set.exists_range_iff.2 <| add_one_pow_unbounded_of_pos _ h
164182

165183
theorem tendsto_pow_atTop_atTop_of_one_lt
166-
[Ring α] [LinearOrder α] [IsStrictOrderedRing α] [Archimedean α] {r : α}
167-
(h : 1 < r) : Tendsto (fun n : ℕ ↦ r ^ n) atTop atTop :=
168-
sub_add_cancel r 1 ▸ tendsto_add_one_pow_atTop_atTop_of_pos (sub_pos.2 h)
169-
170-
theorem Nat.tendsto_pow_atTop_atTop_of_one_lt {m : ℕ} (h : 1 < m) :
171-
Tendsto (fun n : ℕ ↦ m ^ n) atTop atTop :=
172-
tsub_add_cancel_of_le (le_of_lt h) ▸ tendsto_add_one_pow_atTop_atTop_of_pos (tsub_pos_of_lt h)
184+
[Semiring α] [LinearOrder α] [IsStrictOrderedRing α] [ExistsAddOfLE α] [Archimedean α] {r : α}
185+
(h : 1 < r) : Tendsto (fun n : ℕ ↦ r ^ n) atTop atTop := by
186+
obtain ⟨r, r0, rfl⟩ := exists_pos_add_of_lt' h
187+
rw [add_comm]
188+
exact tendsto_add_one_pow_atTop_atTop_of_pos r0
173189

174190
theorem tendsto_pow_atTop_nhds_zero_of_lt_one {𝕜 : Type*}
175-
[Field 𝕜] [LinearOrder 𝕜] [IsStrictOrderedRing 𝕜] [Archimedean 𝕜]
191+
[Semifield 𝕜] [LinearOrder 𝕜] [IsStrictOrderedRing 𝕜] [ExistsAddOfLE 𝕜] [Archimedean 𝕜]
176192
[TopologicalSpace 𝕜] [OrderTopology 𝕜] {r : 𝕜} (h₁ : 0 ≤ r) (h₂ : r < 1) :
177193
Tendsto (fun n : ℕ ↦ r ^ n) atTop (𝓝 0) :=
178194
h₁.eq_or_lt.elim
@@ -201,7 +217,7 @@ theorem tendsto_pow_atTop_nhds_zero_of_lt_one {𝕜 : Type*}
201217
· simpa only [← abs_pow] using (tendsto_pow_atTop_nhds_zero_of_lt_one (abs_nonneg r)) h
202218

203219
theorem tendsto_pow_atTop_nhdsWithin_zero_of_lt_one {𝕜 : Type*}
204-
[Field 𝕜] [LinearOrder 𝕜] [IsStrictOrderedRing 𝕜]
220+
[Semifield 𝕜] [LinearOrder 𝕜] [IsStrictOrderedRing 𝕜] [ExistsAddOfLE 𝕜]
205221
[Archimedean 𝕜] [TopologicalSpace 𝕜] [OrderTopology 𝕜] {r : 𝕜} (h₁ : 0 < r) (h₂ : r < 1) :
206222
Tendsto (fun n : ℕ ↦ r ^ n) atTop (𝓝[>] 0) :=
207223
tendsto_inf.2
@@ -743,3 +759,23 @@ lemma Nat.tendsto_div_const_atTop {n : ℕ} (hn : n ≠ 0) : Tendsto (· / n) at
743759
rw [Tendsto, map_div_atTop_eq_nat n hn.bot_lt]
744760

745761
end
762+
763+
@[deprecated (since := "2025-10-27")]
764+
alias tendsto_inverse_atTop_nhds_zero_nat := tendsto_inv_atTop_nhds_zero_nat
765+
766+
@[deprecated (since := "2025-10-27")]
767+
alias NNReal.tendsto_inverse_atTop_nhds_zero_nat := tendsto_inv_atTop_nhds_zero_nat
768+
769+
@[deprecated (since := "2025-10-27")]
770+
alias NNReal.tendsto_const_div_atTop_nhds_zero_nat := tendsto_const_div_atTop_nhds_zero_nat
771+
772+
@[deprecated (since := "2025-10-27")]
773+
alias NNReal.tendsto_algebraMap_inverse_atTop_nhds_zero_nat :=
774+
tendsto_algebraMap_inv_atTop_nhds_zero_nat
775+
776+
@[deprecated (since := "2025-10-27")]
777+
alias tendsto_algebraMap_inverse_atTop_nhds_zero_nat :=
778+
tendsto_algebraMap_inv_atTop_nhds_zero_nat
779+
780+
@[deprecated (since := "2025-10-27")]
781+
protected alias Nat.tendsto_pow_atTop_atTop_of_one_lt := tendsto_pow_atTop_atTop_of_one_lt

Mathlib/Analysis/SpecificLimits/RCLike.lean

Lines changed: 6 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,6 @@ namespace RCLike
1818

1919
variable (𝕜 : Type*) [RCLike 𝕜]
2020

21-
theorem tendsto_inverse_atTop_nhds_zero_nat :
22-
Tendsto (fun n : ℕ => (n : 𝕜)⁻¹) atTop (𝓝 0) := by
23-
convert tendsto_algebraMap_inverse_atTop_nhds_zero_nat 𝕜
24-
simp
25-
2621
theorem tendsto_ofReal_cobounded_cobounded :
2722
Tendsto ofReal (Bornology.cobounded ℝ) (Bornology.cobounded 𝕜) :=
2823
tendsto_norm_atTop_iff_cobounded.mp (mod_cast tendsto_norm_cobounded_atTop)
@@ -35,19 +30,10 @@ theorem tendsto_ofReal_atBot_cobounded :
3530
Tendsto ofReal atBot (Bornology.cobounded 𝕜) :=
3631
tendsto_norm_atTop_iff_cobounded.mp (mod_cast tendsto_abs_atBot_atTop)
3732

38-
variable {𝕜}
39-
40-
theorem tendsto_add_mul_div_add_mul_atTop_nhds (a b c : 𝕜) {d : 𝕜} (hd : d ≠ 0) :
41-
Tendsto (fun k : ℕ ↦ (a + c * k) / (b + d * k)) atTop (𝓝 (c / d)) := by
42-
apply Filter.Tendsto.congr'
43-
case f₁ => exact fun k ↦ (a * (↑k)⁻¹ + c) / (b * (↑k)⁻¹ + d)
44-
· refine (eventually_ne_atTop 0).mp (Eventually.of_forall ?_)
45-
intro h hx
46-
field (discharger := norm_cast)
47-
· apply Filter.Tendsto.div _ _ hd
48-
all_goals
49-
apply zero_add (_ : 𝕜) ▸ Filter.Tendsto.add_const _ _
50-
apply mul_zero (_ : 𝕜) ▸ Filter.Tendsto.const_mul _ _
51-
exact tendsto_inverse_atTop_nhds_zero_nat 𝕜
52-
5333
end RCLike
34+
35+
@[deprecated (since := "2025-10-27")]
36+
alias RCLike.tendsto_inverse_atTop_nhds_zero_nat := tendsto_inv_atTop_nhds_zero_nat
37+
38+
@[deprecated (since := "2025-10-27")]
39+
alias RCLike.tendsto_add_mul_div_add_mul_atTop_nhds := tendsto_add_mul_div_add_mul_atTop_nhds

Mathlib/Dynamics/Circle/RotationNumber/TranslationNumber.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -563,7 +563,7 @@ theorem translationNumber_eq_of_tendsto₀ {τ' : ℝ}
563563
(h : Tendsto (fun n : ℕ => f^[n] 0 / n) atTop (𝓝 τ')) : τ f = τ' :=
564564
f.translationNumber_eq_of_tendsto_aux <| by
565565
simpa [Function.comp_def, transnumAuxSeq_def, coe_pow] using
566-
h.comp (Nat.tendsto_pow_atTop_atTop_of_one_lt one_lt_two)
566+
h.comp (tendsto_pow_atTop_atTop_of_one_lt one_lt_two)
567567

568568
theorem translationNumber_eq_of_tendsto₀' {τ' : ℝ}
569569
(h : Tendsto (fun n : ℕ => f^[n + 1] 0 / (n + 1)) atTop (𝓝 τ')) : τ f = τ' :=

0 commit comments

Comments
 (0)