Skip to content
This repository was archived by the owner on Jul 24, 2024. It is now read-only.

Commit f178c0e

Browse files
committed
refactor(topology/instances/add_circle): redefine equiv_add_circle (#17881)
Use `quotient_add_group.congr`. Also define `add_aut.mul_left` and `add_aut.mul_right`.
1 parent f1d5b46 commit f178c0e

3 files changed

Lines changed: 42 additions & 11 deletions

File tree

src/algebra/ring/add_aut.lean

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
/-
2+
Copyright (c) 2022 Yury Kudryashov. All rights reserved.
3+
Released under Apache 2.0 license as described in the file LICENSE.
4+
Authors: Yury Kudryashov
5+
-/
6+
import group_theory.group_action.group
7+
import algebra.module.basic
8+
9+
/-!
10+
# Multiplication on the left/right as additive automorphisms
11+
12+
In this file we define `add_aut.mul_left` and `add_aut.mul_right`.
13+
14+
See also `add_monoid_hom.mul_left`, `add_monoid_hom.mul_right`, `add_monoid.End.mul_left`, and
15+
`add_monoid.End.mul_right` for multiplication by `R` as an endomorphism instead of multiplication by
16+
`Rˣ` as an automorphism.
17+
-/
18+
19+
namespace add_aut
20+
variables {R : Type*} [semiring R]
21+
22+
/-- Left multiplication by a unit of a semiring as an additive automorphism. -/
23+
@[simps { simp_rhs := tt }]
24+
def mul_left : Rˣ →* add_aut R := distrib_mul_action.to_add_aut _ _
25+
26+
/-- Right multiplication by a unit of a semiring as an additive automorphism. -/
27+
def mul_right (u : Rˣ) : add_aut R :=
28+
distrib_mul_action.to_add_aut Rᵐᵒᵖˣ R (units.op_equiv.symm $ mul_opposite.op u)
29+
30+
@[simp] lemma mul_right_apply (u : Rˣ) (x : R) : mul_right u x = x * u := rfl
31+
@[simp] lemma mul_right_symm_apply (u : Rˣ) (x : R) : (mul_right u).symm x = x * ↑u⁻¹ := rfl
32+
33+
end add_aut
34+

src/group_theory/subgroup/basic.lean

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2683,6 +2683,10 @@ end ring
26832683

26842684
end add_subgroup
26852685

2686+
@[simp, to_additive map_zmultiples] lemma monoid_hom.map_zpowers (f : G →* N) (x : G) :
2687+
(subgroup.zpowers x).map f = subgroup.zpowers (f x) :=
2688+
by rw [subgroup.zpowers_eq_closure, subgroup.zpowers_eq_closure, f.map_closure, set.image_singleton]
2689+
26862690
lemma int.mem_zmultiples_iff {a b : ℤ} :
26872691
b ∈ add_subgroup.zmultiples a ↔ a ∣ b :=
26882692
exists_congr (λ k, by rw [mul_comm, eq_comm, ← smul_eq_mul])

src/topology/instances/add_circle.lean

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ Copyright (c) 2022 Oliver Nash. All rights reserved.
33
Released under Apache 2.0 license as described in the file LICENSE.
44
Authors: Oliver Nash
55
-/
6+
import algebra.ring.add_aut
67
import group_theory.divisible
78
import group_theory.order_of_element
89
import ring_theory.int.basic
@@ -110,19 +111,11 @@ end linear_ordered_add_comm_group
110111
section linear_ordered_field
111112
variables [linear_ordered_field 𝕜] [topological_space 𝕜] [order_topology 𝕜] (p q : 𝕜)
112113

113-
/-- An auxiliary definition used only for constructing `add_circle.equiv_add_circle`. -/
114-
private def equiv_add_circle_aux (hp : p ≠ 0) : add_circle p →+ add_circle q :=
115-
quotient_add_group.lift _
116-
((quotient_add_group.mk' (zmultiples q)).comp $ add_monoid_hom.mul_right (p⁻¹ * q))
117-
(λ x h, by obtain ⟨z, rfl⟩ := mem_zmultiples_iff.1 h; simp [hp, mul_assoc (z : 𝕜), ← mul_assoc p])
118-
119114
/-- The rescaling equivalence between additive circles with different periods. -/
120115
def equiv_add_circle (hp : p ≠ 0) (hq : q ≠ 0) : add_circle p ≃+ add_circle q :=
121-
{ to_fun := equiv_add_circle_aux p q hp,
122-
inv_fun := equiv_add_circle_aux q p hq,
123-
left_inv := by { rintros ⟨x⟩, show quotient_add_group.mk _ = _, congr, field_simp [hp, hq], },
124-
right_inv := by { rintros ⟨x⟩, show quotient_add_group.mk _ = _, congr, field_simp [hp, hq], },
125-
.. equiv_add_circle_aux p q hp }
116+
quotient_add_group.congr _ _ (add_aut.mul_right $ (units.mk0 p hp)⁻¹ * units.mk0 q hq) $
117+
by rw [add_monoid_hom.map_zmultiples, add_monoid_hom.coe_coe, add_aut.mul_right_apply,
118+
units.coe_mul, units.coe_mk0, units.coe_inv, units.coe_mk0, mul_inv_cancel_left₀ hp]
126119

127120
@[simp] lemma equiv_add_circle_apply_mk (hp : p ≠ 0) (hq : q ≠ 0) (x : 𝕜) :
128121
equiv_add_circle p q hp hq (x : 𝕜) = (x * (p⁻¹ * q) : 𝕜) :=

0 commit comments

Comments
 (0)