Skip to content

Commit edcdc3e

Browse files
committed
feat(UpperHalfPlane): weaken assumptions of multiple atImInfty lemmas (#16015)
In this PR, I weaken some assumptions so that they can be applied more widely (more specifically, to my use case :) ) I also renamed some lemmas because they sounded weird.
1 parent 09242aa commit edcdc3e

File tree

5 files changed

+21
-20
lines changed

5 files changed

+21
-20
lines changed

Mathlib/Analysis/Asymptotics/Asymptotics.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1149,7 +1149,7 @@ theorem isLittleO_const_iff_isLittleO_one {c : F''} (hc : c ≠ 0) :
11491149
fun h => h.trans_isBigO <| isBigO_const_const _ hc _⟩
11501150

11511151
@[simp]
1152-
theorem isLittleO_one_iff : f' =o[l] (fun _x => 1 : α → F) ↔ Tendsto f' l (𝓝 0) := by
1152+
theorem isLittleO_one_iff {f : α → E'''} : f =o[l] (fun _x => 1 : α → F) ↔ Tendsto f l (𝓝 0) := by
11531153
simp only [isLittleO_iff, norm_one, mul_one, Metric.nhds_basis_closedBall.tendsto_right_iff,
11541154
Metric.mem_closedBall, dist_zero_right]
11551155

Mathlib/Analysis/Complex/UpperHalfPlane/FunctionsBoundedAtInfty.lean

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -53,19 +53,22 @@ def zeroAtImInftySubmodule (α : Type*) [NormedField α] : Submodule α (ℍ →
5353
def boundedAtImInftySubalgebra (α : Type*) [NormedField α] : Subalgebra α (ℍ → α) :=
5454
boundedFilterSubalgebra _ atImInfty
5555

56-
nonrec theorem IsBoundedAtImInfty.mul {f g : ℍ → ℂ} (hf : IsBoundedAtImInfty f)
57-
(hg : IsBoundedAtImInfty g) : IsBoundedAtImInfty (f * g) := by
58-
simpa only [Pi.one_apply, mul_one, norm_eq_abs] using hf.mul hg
59-
60-
theorem bounded_mem (f : ℍ → ℂ) :
61-
IsBoundedAtImInfty f ↔ ∃ M A : ℝ, ∀ z : ℍ, A ≤ im z → abs (f z) ≤ M := by
56+
theorem isBoundedAtImInfty_iff {α : Type*} [Norm α] {f : ℍ → α} :
57+
IsBoundedAtImInfty f ↔ ∃ M A : ℝ, ∀ z : ℍ, A ≤ im z → ‖f z‖ ≤ M := by
6258
simp [IsBoundedAtImInfty, BoundedAtFilter, Asymptotics.isBigO_iff, Filter.Eventually,
6359
atImInfty_mem]
6460

65-
theorem zero_at_im_infty (f : ℍ → ℂ) :
66-
IsZeroAtImInfty f ↔ ∀ ε : ℝ, 0 < ε → ∃ A : ℝ, ∀ z : ℍ, A ≤ im z → abs (f z) ≤ ε :=
67-
(atImInfty_basis.tendsto_iff Metric.nhds_basis_closedBall).trans <| by
68-
simp only [true_and, mem_closedBall_zero_iff]; rfl
61+
@[deprecated (since := "2024-08-27")] alias _root_.bounded_mem := isBoundedAtImInfty_iff
62+
63+
theorem isZeroAtImInfty_iff {α : Type*} [SeminormedAddGroup α] {f : ℍ → α} :
64+
IsZeroAtImInfty f ↔ ∀ ε : ℝ, 0 < ε → ∃ A : ℝ, ∀ z : ℍ, A ≤ im z → ‖f z‖ ≤ ε :=
65+
(atImInfty_basis.tendsto_iff Metric.nhds_basis_closedBall).trans <| by simp
66+
67+
@[deprecated (since := "2024-08-27")] alias _root_.zero_at_im_infty := isZeroAtImInfty_iff
68+
69+
theorem IsZeroAtImInfty.isBoundedAtImInfty {α : Type*} [SeminormedAddGroup α] {f : ℍ → α}
70+
(hf : IsZeroAtImInfty f) : IsBoundedAtImInfty f :=
71+
hf.boundedAtFilter
6972

7073
lemma tendsto_comap_im_ofComplex :
7174
Tendsto ofComplex (comap Complex.im atTop) atImInfty := by

Mathlib/NumberTheory/ModularForms/Basic.lean

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -227,10 +227,7 @@ def mul {k_1 k_2 : ℤ} {Γ : Subgroup SL(2, ℤ)} (f : ModularForm Γ k_1) (g :
227227
toSlashInvariantForm := f.1.mul g.1
228228
holo' := f.holo'.mul g.holo'
229229
bdd_at_infty' A := by
230-
-- Porting note: was `by simpa using ...`
231-
-- `mul_slash_SL2` is no longer a `simp` and `simpa only [mul_slash_SL2] using ...` failed
232-
rw [SlashInvariantForm.coe_mul, mul_slash_SL2]
233-
exact (f.bdd_at_infty' A).mul (g.bdd_at_infty' A)
230+
simpa only [coe_mul, mul_slash_SL2] using (f.bdd_at_infty' A).mul (g.bdd_at_infty' A)
234231

235232
@[simp]
236233
theorem mul_coe {k_1 k_2 : ℤ} {Γ : Subgroup SL(2, ℤ)} (f : ModularForm Γ k_1)

Mathlib/NumberTheory/ModularForms/EisensteinSeries/IsBoundedAtImInfty.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ lemma abs_le_tsum_abs (N : ℕ) (a : Fin 2 → ZMod N) (k : ℤ) (hk : 3 ≤ k)
5252
/-- Eisenstein series are bounded at infinity. -/
5353
theorem isBoundedAtImInfty_eisensteinSeries_SIF {N : ℕ+} (a : Fin 2 → ZMod N) {k : ℤ} (hk : 3 ≤ k)
5454
(A : SL(2, ℤ)) : IsBoundedAtImInfty ((eisensteinSeries_SIF a k).toFun ∣[k] A) := by
55-
simp_rw [UpperHalfPlane.bounded_mem, eisensteinSeries_SIF] at *
55+
simp_rw [UpperHalfPlane.isBoundedAtImInfty_iff, eisensteinSeries_SIF] at *
5656
refine ⟨∑'(x : Fin 2 → ℤ), r ⟨⟨N, 2⟩, Nat.ofNat_pos⟩ ^ (-k) * ‖x‖ ^ (-k), 2, ?_⟩
5757
intro z hz
5858
obtain ⟨n, hn⟩ := (ModularGroup_T_zpow_mem_verticalStrip z N.2)

Mathlib/Order/Filter/ZeroAndBoundedAtFilter.lean

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -71,15 +71,16 @@ if `f =O[l] 1`. -/
7171
def BoundedAtFilter [Norm β] (l : Filter α) (f : α → β) : Prop :=
7272
Asymptotics.IsBigO l f (1 : α → ℝ)
7373

74-
theorem ZeroAtFilter.boundedAtFilter [NormedAddCommGroup β] {l : Filter α} {f : α → β}
75-
(hf : ZeroAtFilter l f) : BoundedAtFilter l f := by
76-
rw [ZeroAtFilter, ← Asymptotics.isLittleO_const_iff (one_ne_zero' ℝ)] at hf
77-
exact hf.isBigO
74+
theorem ZeroAtFilter.boundedAtFilter [SeminormedAddGroup β] {l : Filter α} {f : α → β}
75+
(hf : ZeroAtFilter l f) : BoundedAtFilter l f :=
76+
((Asymptotics.isLittleO_one_iff _).mpr hf).isBigO
7877

7978
theorem const_boundedAtFilter [Norm β] (l : Filter α) (c : β) :
8079
BoundedAtFilter l (Function.const α c : α → β) :=
8180
Asymptotics.isBigO_const_const c one_ne_zero l
8281

82+
-- TODO(https://github.com/leanprover-community/mathlib4/issues/19288): Remove all Comm in the next
83+
-- three lemmas. This would require modifying the corresponding general asymptotics lemma.
8384
nonrec theorem BoundedAtFilter.add [SeminormedAddCommGroup β] {l : Filter α} {f g : α → β}
8485
(hf : BoundedAtFilter l f) (hg : BoundedAtFilter l g) : BoundedAtFilter l (f + g) := by
8586
simpa using hf.add hg

0 commit comments

Comments
 (0)