Skip to content

Commit ade87df

Browse files
pitmonticonejs2357ldiederingpre-commit-ci-lite[bot]
committed
feat(Topology/Instances/AddCircle): add Ioc analogues of lift and equiv lemmas (#37570)
Add AddCircle lemmas: - `liftIoc_eq_liftIco_of_ne`: the Ioc and Ico lifts agree away from the basepoint - `coe_eq_coe_iff_of_mem_Ioc`: Ioc analogue of `coe_eq_coe_iff_of_mem_Ico` - `eq_coe_Ioc`: Ioc analogue of `eq_coe_Ico` - `coe_equivIoc`: Ioc analogue of `coe_equivIco` - `equivIoc_coe_of_mem`: if `y ∈ Ioc a (a + p)`, then `equivIoc p a y = y` Upstreamed from the [Carleson](https://github.com/fpvandoorn/carleson) project. Co-authored-by: James Sundstrom <James.Sundstrom@gmail.com> Co-authored-by: Leo Diedering <129694072+ldiedering@users.noreply.github.com> Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
1 parent 8d2c70b commit ade87df

File tree

1 file changed

+42
-1
lines changed
  • Mathlib/Topology/Instances/AddCircle

1 file changed

+42
-1
lines changed

Mathlib/Topology/Instances/AddCircle/Defs.lean

Lines changed: 42 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -328,6 +328,26 @@ theorem equivIco_coe_eq {x : 𝕜} (hx : x ∈ Ico a (a + p)) : (equivIco p a) x
328328
theorem equivIoc_coe_eq {x : 𝕜} (hx : x ∈ Ioc a (a + p)) : (equivIoc p a) x = ⟨x, hx⟩ := by
329329
rw [Equiv.apply_eq_iff_eq_symm_apply, equivIoc, QuotientAddGroup.equivIocMod_symm_apply]
330330

331+
@[simp]
332+
lemma coe_equivIco {y : AddCircle p} :
333+
(equivIco p a y : AddCircle p) = y :=
334+
(equivIco p a).left_inv y
335+
336+
@[simp]
337+
lemma coe_equivIoc {y : AddCircle p} :
338+
(equivIoc p a y : AddCircle p) = y :=
339+
(equivIoc p a).left_inv y
340+
341+
lemma equivIco_coe_of_mem {y : 𝕜} (hy : y ∈ Ico a (a + p)) :
342+
equivIco p a y = y := by
343+
have : equivIco p a y = ⟨y, hy⟩ := (equivIco p a).right_inv ⟨y, hy⟩
344+
simp [this]
345+
346+
lemma equivIoc_coe_of_mem {y : 𝕜} (hy : y ∈ Ioc a (a + p)) :
347+
equivIoc p a y = y := by
348+
have : equivIoc p a y = ⟨y, hy⟩ := (equivIoc p a).right_inv ⟨y, hy⟩
349+
simp [this]
350+
331351
theorem coe_eq_coe_iff_of_mem_Ico {x y : 𝕜} (hx : x ∈ Ico a (a + p)) (hy : y ∈ Ico a (a + p)) :
332352
(x : AddCircle p) = y ↔ x = y := by
333353
refine ⟨fun h => ?_, by tauto⟩
@@ -336,6 +356,15 @@ theorem coe_eq_coe_iff_of_mem_Ico {x y : 𝕜} (hx : x ∈ Ico a (a + p)) (hy :
336356
rw [← (equivIco p a).right_inv ⟨x, hx⟩, ← (equivIco p a).right_inv ⟨y, hy⟩]
337357
exact h
338358

359+
/-- Ioc version of `coe_eq_coe_iff_of_mem_Ico`. -/
360+
lemma coe_eq_coe_iff_of_mem_Ioc {x y : 𝕜} (hx : x ∈ Ioc a (a + p)) (hy : y ∈ Ioc a (a + p)) :
361+
(x : AddCircle p) = y ↔ x = y := by
362+
refine ⟨fun h => ?_, by tauto⟩
363+
suffices (⟨x, hx⟩ : Ioc a (a + p)) = ⟨y, hy⟩ by exact Subtype.mk.inj this
364+
apply_fun equivIoc p a at h
365+
rw [← (equivIoc p a).right_inv ⟨x, hx⟩, ← (equivIoc p a).right_inv ⟨y, hy⟩]
366+
exact h
367+
339368
theorem liftIco_coe_apply {f : 𝕜 → B} {x : 𝕜} (hx : x ∈ Ico a (a + p)) :
340369
liftIco p a f ↑x = f x := by
341370
simp [liftIco, equivIco_coe_eq hx]
@@ -344,17 +373,29 @@ theorem liftIoc_coe_apply {f : 𝕜 → B} {x : 𝕜} (hx : x ∈ Ioc a (a + p))
344373
liftIoc p a f ↑x = f x := by
345374
simp [liftIoc, equivIoc_coe_eq hx]
346375

376+
theorem liftIoc_eq_liftIco_of_ne {f : 𝕜 → B} {x : AddCircle p}
377+
(x_ne_a : x ≠ a) : liftIoc p a f x = liftIco p a f x := by
378+
have x_eq_b : x = ↑(equivIco p a x) := coe_equivIco.symm
379+
rw [x_eq_b, liftIco_coe_apply (equivIco p a x).coe_prop]
380+
exact liftIoc_coe_apply (by grind)
381+
347382
lemma liftIco_comp_apply {α β : Type*} {f : 𝕜 → α} {g : α → β} {a : 𝕜} {x : AddCircle p} :
348383
liftIco p a (g ∘ f) x = g (liftIco p a f x) := rfl
349384

350385
lemma liftIoc_comp_apply {α β : Type*} {f : 𝕜 → α} {g : α → β} {a : 𝕜} {x : AddCircle p} :
351386
liftIoc p a (g ∘ f) x = g (liftIoc p a f x) := rfl
352387

353-
lemma eq_coe_Ico (a : AddCircle p) : ∃ b, b ∈ Ico 0 p ↑b = a := by
388+
lemma eq_coe_Ico (a : AddCircle p) : ∃ b ∈ Ico 0 p, ↑b = a := by
354389
let b := QuotientAddGroup.equivIcoMod hp.out 0 a
355390
exact ⟨b.1, by simpa only [zero_add] using b.2,
356391
(QuotientAddGroup.equivIcoMod hp.out 0).symm_apply_apply a⟩
357392

393+
/-- `Ioc` version of `eq_coe_Ico`. -/
394+
lemma eq_coe_Ioc (a : AddCircle p) : ∃ b ∈ Ioc 0 p, ↑b = a := by
395+
let b := QuotientAddGroup.equivIocMod hp.out 0 a
396+
exact ⟨b.1, by simpa only [zero_add] using b.2,
397+
(QuotientAddGroup.equivIocMod hp.out 0).symm_apply_apply a⟩
398+
358399
lemma coe_eq_zero_iff_of_mem_Ico (ha : a ∈ Ico 0 p) :
359400
(a : AddCircle p) = 0 ↔ a = 0 := by
360401
have h0 : 0 ∈ Ico 0 (0 + p) := by simpa [zero_add, left_mem_Ico] using hp.out

0 commit comments

Comments
 (0)