Commit 2848a7a
committed
feat(Order/Filter/Pointwise):
This lemma is required when I prove that $z \mapsto \sin^{-1} z^{-1}$ is not meromorphic at $0$:
```lean4
@[simp]
lemma Filter.frequently_inv {α : Type*} [Inv α] {f : Filter α} {p : α → Prop} :
(∃ᶠ a in f⁻¹, p a) ↔ (∃ᶠ a in f, p a⁻¹) :=
frequently_map
example : ¬(∀ᶠ z in 𝓝[≠] (0 : ℂ), sin⁻¹ z⁻¹ = 0) ↔ (∃ᶠ z in cobounded ℂ, sin z ≠ 0) := by
simp [← inv_cobounded₀]
```
So I added the simp lemmas of `(∀ᶠ|∃ᶠ) x in op f, p x` for unary operations `op` (`-f`, `f⁻¹` & `a • f`).
While I was at it, I also added the simp lemmas of `∃ᶠ x in pure a, p x` & `∃ᶠ x in (0|1), p x`, which previously existed only for the `∀ᶠ` versions.
Binary operation versions will be added if necessary.
<details>
<summary>Appendix: Full proof of that $z \mapsto \sin^{-1} z^{-1}$ is not meromorphic at $0$</summary>
```lean4
module
import Mathlib.Analysis.Meromorphic.Basic
import Mathlib.Analysis.SpecialFunctions.Trigonometric.Complex
import Mathlib.Analysis.SpecialFunctions.Trigonometric.Deriv
import Mathlib.Analysis.SpecificLimits.RCLike
open Complex Filter Bornology
open scoped Real Topology Pointwise
@[simp]
lemma Filter.frequently_inv {α : Type*} [Inv α] {f : Filter α} {p : α → Prop} :
(∃ᶠ a in f⁻¹, p a) ↔ (∃ᶠ a in f, p a⁻¹) :=
frequently_map
example : ¬MeromorphicAt (fun z => sin⁻¹ z⁻¹) 0 := by
apply mt MeromorphicAt.eventually_eq_zero_or_eventually_ne_zero
conv => equals (∃ᶠ z in cobounded ℂ, sin z ≠ 0) ∧ (∃ᶠ z in cobounded ℂ, sin z = 0) =>
simp [← inv_cobounded₀]
constructor
case left =>
have ht : Tendsto (fun x : ℝ ↦ ↑x * I) (cobounded ℝ) (cobounded ℂ) := by
have ht₁ : Tendsto ((↑) : ℝ → ℂ) (cobounded ℝ) (cobounded ℂ) :=
RCLike.tendsto_ofReal_cobounded_cobounded ℂ
have ht₂ : Tendsto (fun z : ℂ ↦ z * I) (cobounded ℂ) (cobounded ℂ) :=
tendsto_mul_right_cobounded (by simp)
exact ht₂.comp ht₁
refine ht.frequently_map _ (fun x ↦ mt ?_) (eventually_ne_cobounded 0).frequently
rw [sin_eq_zero_iff]
rintro ⟨n, hn⟩
simpa using congr_arg im hn
case right =>
suffices ht : Tendsto (fun n : ℤ ↦ (↑n * ↑π : ℂ)) atTop (cobounded ℂ) by
apply ht.frequently; simp [sin_int_mul_pi, atTop_neBot]
have ht₁ : Tendsto ((↑) : ℤ → ℝ) atTop (cobounded ℝ) := tendsto_intCast_atTop_cobounded
have ht₂ : Tendsto ((↑) : ℝ → ℂ) (cobounded ℝ) (cobounded ℂ) :=
RCLike.tendsto_ofReal_cobounded_cobounded ℂ
have ht₃ : Tendsto (fun z : ℂ ↦ z * ↑π) (cobounded ℂ) (cobounded ℂ) :=
tendsto_mul_right_cobounded (by simp)
exact ht₃.comp <| ht₂.comp ht₁
```
</details>
Co-authored-by: Komyyy <pol_tta@outlook.jp>((∀ᶠ|∃ᶠ) x in op f, p x) ↔ ((∀ᶠ|∃ᶠ) x in f, p (op x)) (leanprover-community#35312)1 parent ed88622 commit 2848a7a
2 files changed
+24
-0
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
145 | 145 | | |
146 | 146 | | |
147 | 147 | | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
148 | 152 | | |
149 | 153 | | |
150 | 154 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
129 | 129 | | |
130 | 130 | | |
131 | 131 | | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
132 | 136 | | |
133 | 137 | | |
134 | 138 | | |
| |||
205 | 209 | | |
206 | 210 | | |
207 | 211 | | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
208 | 220 | | |
209 | 221 | | |
210 | 222 | | |
| |||
1009 | 1021 | | |
1010 | 1022 | | |
1011 | 1023 | | |
| 1024 | + | |
| 1025 | + | |
| 1026 | + | |
| 1027 | + | |
| 1028 | + | |
| 1029 | + | |
| 1030 | + | |
| 1031 | + | |
1012 | 1032 | | |
1013 | 1033 | | |
1014 | 1034 | | |
| |||
0 commit comments