Skip to content

Commit 29507cc

Browse files
committed
chore(GroupTheory/Subgroup/Centralizer): replace centralizer (zpowers s) with centralizer {s} (#30768)
This PR fixes some lingering technical debt from two years ago: leanprover-community/mathlib3#18965 Co-authored-by: tb65536 <thomas.l.browning@gmail.com>
1 parent f924b1d commit 29507cc

File tree

10 files changed

+33
-34
lines changed

10 files changed

+33
-34
lines changed

Mathlib/Algebra/Group/Subgroup/Pointwise.lean

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ module
88
public import Mathlib.Algebra.Group.Action.End
99
public import Mathlib.Algebra.Group.Pointwise.Set.Lattice
1010
public import Mathlib.Algebra.Group.Subgroup.MulOppositeLemmas
11+
public import Mathlib.Algebra.Group.Subgroup.ZPowers.Basic
1112
public import Mathlib.Algebra.Group.Submonoid.Pointwise
1213
public import Mathlib.GroupTheory.GroupAction.ConjAct
1314

Mathlib/Algebra/Group/Subgroup/ZPowers/Lemmas.lean

Lines changed: 1 addition & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@ Authors: Chris Hughes
55
-/
66
module
77

8+
public import Mathlib.Algebra.Group.Subgroup.Ker
89
public import Mathlib.Algebra.Group.Subgroup.ZPowers.Basic
910
public import Mathlib.Data.Countable.Basic
1011
public import Mathlib.Data.Int.Cast.Lemmas
11-
public import Mathlib.GroupTheory.Subgroup.Centralizer
1212

1313
/-!
1414
# Subgroups generated by an element
@@ -59,28 +59,3 @@ end AddSubgroup
5959
(Int.castAddHom A).range = AddSubgroup.zmultiples 1 := by
6060
ext a
6161
simp_rw [AddMonoidHom.mem_range, Int.coe_castAddHom, AddSubgroup.mem_zmultiples_iff, zsmul_one]
62-
63-
namespace Subgroup
64-
65-
variable {s : Set G} {g : G}
66-
67-
@[to_additive]
68-
theorem centralizer_closure (S : Set G) :
69-
centralizer (closure S : Set G) = ⨅ g ∈ S, centralizer (zpowers g : Set G) :=
70-
le_antisymm
71-
(le_iInf fun _ => le_iInf fun hg => centralizer_le <| zpowers_le.2 <| subset_closure hg) <|
72-
le_centralizer_iff.1 <|
73-
(closure_le _).2 fun g =>
74-
SetLike.mem_coe.2 ∘ zpowers_le.1 ∘ le_centralizer_iff.1 ∘ iInf_le_of_le g ∘ iInf_le _
75-
76-
@[to_additive]
77-
theorem center_eq_iInf (S : Set G) (hS : closure S = ⊤) :
78-
center G = ⨅ g ∈ S, centralizer (zpowers g) := by
79-
rw [← centralizer_univ, ← coe_top, ← hS, centralizer_closure]
80-
81-
@[to_additive]
82-
theorem center_eq_infi' (S : Set G) (hS : closure S = ⊤) :
83-
center G = ⨅ g : S, centralizer (zpowers (g : G)) := by
84-
rw [center_eq_iInf S hS, ← iInf_subtype'']
85-
86-
end Subgroup

Mathlib/GroupTheory/Finiteness.lean

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ module
77

88
public import Mathlib.Algebra.Group.Pointwise.Set.Finite
99
public import Mathlib.Algebra.Group.Subgroup.Pointwise
10+
import Mathlib.Algebra.Group.Subgroup.ZPowers.Basic
1011
public import Mathlib.Algebra.Group.Submonoid.BigOperators
1112
public import Mathlib.GroupTheory.FreeGroup.Basic
1213
public import Mathlib.GroupTheory.QuotientGroup.Defs

Mathlib/GroupTheory/GroupAction/ConjAct.lean

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ Authors: Chris Hughes
55
-/
66
module
77

8-
public import Mathlib.Algebra.Group.Subgroup.ZPowers.Basic
98
public import Mathlib.Data.Fintype.Card
109
public import Mathlib.GroupTheory.GroupAction.Defs
1110
public import Mathlib.GroupTheory.Subgroup.Centralizer
@@ -207,9 +206,9 @@ theorem orbit_eq_carrier_conjClasses (g : G) :
207206
rw [ConjClasses.mem_carrier_iff_mk_eq, ConjClasses.mk_eq_mk_iff_isConj, mem_orbit_conjAct]
208207

209208
theorem stabilizer_eq_centralizer (g : G) :
210-
stabilizer (ConjAct G) g = centralizer (zpowers (toConjAct g) : Set (ConjAct G)) :=
211-
le_antisymm (le_centralizer_iff.mp (zpowers_le.mpr fun _ => mul_inv_eq_iff_eq_mul.mp)) fun _ h =>
212-
mul_inv_eq_of_eq_mul (h g (mem_zpowers g)).symm
209+
stabilizer (ConjAct G) g = centralizer {toConjAct g} :=
210+
le_antisymm (fun _ hg _ h ↦ h ▸ eq_mul_inv_iff_mul_eq.mp hg.symm) fun _ h =>
211+
mul_inv_eq_of_eq_mul (h g rfl).symm
213212

214213
theorem _root_.Subgroup.centralizer_eq_comap_stabilizer (g : G) :
215214
Subgroup.centralizer {g} = Subgroup.comap ConjAct.toConjAct.toMonoidHom

Mathlib/GroupTheory/GroupAction/Quotient.lean

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,14 @@ Authors: Chris Hughes, Thomas Browning
66
module
77

88
public import Mathlib.Algebra.Group.Subgroup.Actions
9-
public import Mathlib.Algebra.Group.Subgroup.ZPowers.Lemmas
109
public import Mathlib.Data.Fintype.BigOperators
1110
public import Mathlib.Dynamics.PeriodicPts.Defs
1211
public import Mathlib.GroupTheory.Commutator.Basic
1312
public import Mathlib.GroupTheory.Coset.Basic
1413
public import Mathlib.GroupTheory.GroupAction.Basic
1514
public import Mathlib.GroupTheory.GroupAction.ConjAct
1615
public import Mathlib.GroupTheory.GroupAction.Hom
16+
public import Mathlib.GroupTheory.Subgroup.Centralizer
1717

1818
/-!
1919
# Properties of group actions involving quotient groups
@@ -435,7 +435,7 @@ open QuotientGroup
435435

436436
/-- Cosets of the centralizer of an element embed into the set of commutators. -/
437437
noncomputable def quotientCentralizerEmbedding (g : G) :
438-
G ⧸ centralizer (zpowers (g : G)) ↪ commutatorSet G :=
438+
G ⧸ centralizer {g} ↪ commutatorSet G :=
439439
((MulAction.orbitEquivQuotientStabilizer (ConjAct G) g).trans
440440
(quotientEquivOfEq (ConjAct.stabilizer_eq_centralizer g))).symm.toEmbedding.trans
441441
fun x =>
@@ -452,7 +452,7 @@ theorem quotientCentralizerEmbedding_apply (g : G) (x : G) :
452452
of commutators. -/
453453
noncomputable def quotientCenterEmbedding {S : Set G} (hS : closure S = ⊤) :
454454
G ⧸ center G ↪ S → commutatorSet G :=
455-
(quotientEquivOfEq (center_eq_infi' S hS)).toEmbedding.trans
455+
(quotientEquivOfEq (center_eq_infi' hS)).toEmbedding.trans
456456
((quotientiInfEmbedding _).trans
457457
(Function.Embedding.piCongrRight fun g => quotientCentralizerEmbedding (g : G)))
458458

Mathlib/GroupTheory/Index.lean

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ Authors: Thomas Browning
66
module
77

88
public import Mathlib.Algebra.BigOperators.GroupWithZero.Finset
9+
public import Mathlib.Algebra.Group.Subgroup.ZPowers.Basic
910
public import Mathlib.Algebra.GroupWithZero.Subgroup
1011
public import Mathlib.Data.Finite.Card
1112
public import Mathlib.Data.Finite.Prod

Mathlib/GroupTheory/Subgroup/Centralizer.lean

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,26 @@ lemma closure_le_centralizer_centralizer (s : Set G) :
102102
closure s ≤ centralizer (centralizer s) :=
103103
closure_le _ |>.mpr Set.subset_centralizer_centralizer
104104

105+
@[to_additive]
106+
theorem centralizer_closure (s : Set G) : centralizer (closure s) = centralizer s :=
107+
le_antisymm (centralizer_le subset_closure)
108+
(le_centralizer_iff.mp (closure_le_centralizer_centralizer s))
109+
110+
@[to_additive]
111+
theorem centralizer_eq_iInf (s : Set G) : centralizer s = ⨅ g ∈ s, centralizer {g} :=
112+
le_antisymm (le_iInf₂ fun g hg ↦ centralizer_le (Set.singleton_subset_iff.mpr hg)) fun x hx ↦ by
113+
simpa only [mem_iInf, mem_centralizer_singleton_iff, eq_comm (a := x * _)] using hx
114+
115+
@[to_additive]
116+
theorem center_eq_iInf {s : Set G} (hs : closure s = ⊤) :
117+
center G = ⨅ g ∈ s, centralizer {g} := by
118+
rw [← centralizer_univ, ← coe_top, ← hs, centralizer_closure, centralizer_eq_iInf]
119+
120+
@[to_additive]
121+
theorem center_eq_infi' {s : Set G} (hs : closure s = ⊤) :
122+
center G = ⨅ g : s, centralizer {(g : G)} := by
123+
rw [center_eq_iInf hs, ← iInf_subtype'']
124+
105125
/-- If all the elements of a set `s` commute, then `closure s` is a commutative group. -/
106126
@[to_additive
107127
/-- If all the elements of a set `s` commute, then `closure s` is an additive commutative group. -/]

Mathlib/RingTheory/Ideal/Operations.lean

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ module
88
public import Mathlib.Algebra.Algebra.Operations
99
public import Mathlib.Algebra.Module.BigOperators
1010
public import Mathlib.Data.Fintype.Lattice
11+
public import Mathlib.Algebra.Group.Subgroup.ZPowers.Basic
1112
public import Mathlib.RingTheory.Coprime.Lemmas
1213
public import Mathlib.RingTheory.Ideal.Basic
1314
public import Mathlib.RingTheory.Nilpotent.Defs

Mathlib/Topology/Algebra/Group/SubmonoidClosure.lean

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ Authors: Yury Kudryashov
55
-/
66
module
77

8+
public import Mathlib.Algebra.Group.Subgroup.ZPowers.Basic
89
public import Mathlib.Order.Filter.AtTopBot.Group
910
public import Mathlib.Topology.Algebra.Group.Basic
1011

Mathlib/Topology/Instances/AddCircle/Defs.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -403,7 +403,7 @@ instance : DivisibleBy (AddCircle p) ℤ where
403403

404404
omit [IsStrictOrderedRing 𝕜] in
405405
@[simp] lemma coe_fract (x : 𝕜) : (↑(Int.fract x) : AddCircle (1 : 𝕜)) = x := by
406-
simp [← Int.self_sub_floor]
406+
simp [← Int.self_sub_floor, mem_zmultiples_iff]
407407

408408
end FloorRing
409409

0 commit comments

Comments
 (0)