Skip to content

Commit 3734333

Browse files
committed
feat(Topology): generalize tendsto_inv_iff from ℝ≥0∞ to ContinuousInv + InvolutiveInv (leanprover-community#33920)
This PR implements the [TODO](https://github.com/leanprover-community/mathlib4/blob/b2f24e70b375e42e5a60251a2f43baa20ca668f1/Mathlib/Topology/Instances/ENNReal/Lemmas.lean#L468C1-L471C70) in `Topology.Instances.ENNReal.Lemmas` by moving the lemma to a more general setting. - Add a general lemma `tendsto_inv_iff` in `Topology.Algebra.Group.Basic` (with `@[simp]`), whose proof is the same as the previous `ℝ≥0∞` proof, just stated for an arbitrary `G` with `[InvolutiveInv G]` and `[ContinuousInv G]`. - Mark it `@[to_additive (attr := simp)]`, so the additive analogue is generated automatically. - Deprecate `ENNReal.tendsto_inv_iff` in `Topology.Instances.ENNReal.Lemmas`. No mathematical content changes: this is a relocation/deprecation of the existing theorem plus the additive version. Co-authored-by: Simon <Citronhat@gmail.com>
1 parent 26299a5 commit 3734333

4 files changed

Lines changed: 11 additions & 9 deletions

File tree

Mathlib/MeasureTheory/Covering/Differentiation.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -487,7 +487,7 @@ theorem measure_limRatioMeas_top : μ {x | v.limRatioMeas hρ x = ∞} = 0 := by
487487
not_false_iff]
488488
have B : Tendsto (fun q : ℝ≥0 => (q : ℝ≥0∞)⁻¹ * ρ s) atTop (𝓝 (∞⁻¹ * ρ s)) := by
489489
apply ENNReal.Tendsto.mul_const _ (Or.inr ρs)
490-
exact ENNReal.tendsto_inv_iff.2 (ENNReal.tendsto_coe_nhds_top.2 tendsto_id)
490+
exact tendsto_inv_iff.2 (ENNReal.tendsto_coe_nhds_top.2 tendsto_id)
491491
simp only [zero_mul, ENNReal.inv_top] at B
492492
apply ge_of_tendsto B
493493
exact eventually_atTop.21, A⟩

Mathlib/MeasureTheory/Integral/Lebesgue/Markov.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ theorem ae_eq_of_ae_le_of_lintegral_le {f g : α → ℝ≥0∞} (hfg : f ≤ᵐ
120120
suffices Tendsto (fun n : ℕ => f x + (n : ℝ≥0∞)⁻¹) atTop (𝓝 (f x)) from
121121
ge_of_tendsto' this fun i => (hlt i).le
122122
simpa only [inv_top, add_zero] using
123-
tendsto_const_nhds.add (ENNReal.tendsto_inv_iff.2 ENNReal.tendsto_nat_nhds_top)
123+
tendsto_const_nhds.add (tendsto_inv_iff.2 ENNReal.tendsto_nat_nhds_top)
124124

125125
theorem lintegral_strict_mono_of_ae_le_of_frequently_ae_lt {f g : α → ℝ≥0∞} (hg : AEMeasurable g μ)
126126
(hfi : ∫⁻ x, f x ∂μ ≠ ∞) (h_le : f ≤ᵐ[μ] g) (h : ∃ᵐ x ∂μ, f x ≠ g x) :

Mathlib/Topology/Algebra/Group/Basic.lean

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -252,6 +252,11 @@ section ContinuousInvolutiveInv
252252

253253
variable [TopologicalSpace G] [InvolutiveInv G] [ContinuousInv G] {s : Set G}
254254

255+
@[to_additive (attr := simp)]
256+
theorem tendsto_inv_iff {l : Filter α} {m : α → G} {a : G} :
257+
Tendsto (fun x => (m x)⁻¹) l (𝓝 a⁻¹) ↔ Tendsto m l (𝓝 a) :=
258+
fun h => by simpa only [inv_inv] using h.inv, Tendsto.inv⟩
259+
255260
@[to_additive]
256261
theorem IsCompact.inv (hs : IsCompact s) : IsCompact s⁻¹ := by
257262
rw [← image_inv_eq_inv]

Mathlib/Topology/Instances/ENNReal/Lemmas.lean

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -465,19 +465,16 @@ protected theorem continuous_zpow : ∀ n : ℤ, Continuous (· ^ n : ℝ≥0∞
465465
| (n : ℕ) => mod_cast ENNReal.continuous_pow n
466466
| .negSucc n => by simpa using (ENNReal.continuous_pow _).inv
467467

468-
@[simp] -- TODO: generalize to `[InvolutiveInv _] [ContinuousInv _]`
469-
protected theorem tendsto_inv_iff {f : Filter α} {m : α → ℝ≥0∞} {a : ℝ≥0∞} :
470-
Tendsto (fun x => (m x)⁻¹) f (𝓝 a⁻¹) ↔ Tendsto m f (𝓝 a) :=
471-
fun h => by simpa only [inv_inv] using Tendsto.inv h, Tendsto.inv⟩
468+
@[deprecated (since := "2026-01-15")] protected alias tendsto_inv_iff := tendsto_inv_iff
472469

473470
protected theorem Tendsto.div {f : Filter α} {ma : α → ℝ≥0∞} {mb : α → ℝ≥0∞} {a b : ℝ≥0∞}
474471
(hma : Tendsto ma f (𝓝 a)) (ha : a ≠ 0 ∨ b ≠ 0) (hmb : Tendsto mb f (𝓝 b))
475472
(hb : b ≠ ∞ ∨ a ≠ ∞) : Tendsto (fun a => ma a / mb a) f (𝓝 (a / b)) := by
476-
apply Tendsto.mul hma _ (ENNReal.tendsto_inv_iff.2 hmb) _ <;> simp [ha, hb]
473+
apply Tendsto.mul hma _ (tendsto_inv_iff.2 hmb) _ <;> simp [ha, hb]
477474

478475
protected theorem Tendsto.const_div {f : Filter α} {m : α → ℝ≥0∞} {a b : ℝ≥0∞}
479476
(hm : Tendsto m f (𝓝 b)) (hb : b ≠ ∞ ∨ a ≠ ∞) : Tendsto (fun b => a / m b) f (𝓝 (a / b)) := by
480-
apply Tendsto.const_mul (ENNReal.tendsto_inv_iff.2 hm)
477+
apply Tendsto.const_mul (tendsto_inv_iff.2 hm)
481478
simp [hb]
482479

483480
protected theorem Tendsto.div_const {f : Filter α} {m : α → ℝ≥0∞} {a b : ℝ≥0∞}
@@ -486,7 +483,7 @@ protected theorem Tendsto.div_const {f : Filter α} {m : α → ℝ≥0∞} {a b
486483
simp [ha]
487484

488485
protected theorem tendsto_inv_nat_nhds_zero : Tendsto (fun n : ℕ => (n : ℝ≥0∞)⁻¹) atTop (𝓝 0) :=
489-
ENNReal.inv_top ▸ ENNReal.tendsto_inv_iff.2 tendsto_nat_nhds_top
486+
ENNReal.inv_top ▸ tendsto_inv_iff.2 tendsto_nat_nhds_top
490487

491488
protected theorem tendsto_coe_sub {b : ℝ≥0∞} :
492489
Tendsto (fun b : ℝ≥0∞ => ↑r - b) (𝓝 b) (𝓝 (↑r - b)) :=

0 commit comments

Comments
 (0)