Skip to content

Commit 82387bc

Browse files
committed
more
1 parent 7e9d8da commit 82387bc

File tree

2 files changed

+35
-3
lines changed

2 files changed

+35
-3
lines changed

Mathlib/Algebra/Ring/Periodic.lean

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ Note that any `c`-antiperiodic function will necessarily also be `2 • c`-perio
2424
2525
period, periodic, periodicity, antiperiodic
2626
-/
27-
27+
pcommut
2828
assert_not_exists Field
2929

3030
variable {α β γ : Type*} {f g : α → β} {c c₁ c₂ x : α}

Mathlib/GroupTheory/Commutator/Finite.lean

+34-2
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,21 @@ Released under Apache 2.0 license as described in the file LICENSE.
44
Authors: Jordan Brown, Thomas Browning, Patrick Lutz
55
-/
66
import Mathlib.Algebra.Group.Subgroup.Finite
7+
import Mathlib.Algebra.Group.Subgroup.ZPowers.Lemmas
78
import Mathlib.GroupTheory.Commutator.Basic
8-
import Mathlib.GroupTheory.Finiteness
9+
import Mathlib.GroupTheory.GroupAction.Quotient
910
import Mathlib.GroupTheory.Index
1011

1112
/-!
13+
# Extra lemmas about commutators
14+
1215
The commutator of a finite direct product is contained in the direct product of the commutators.
1316
-/
1417

18+
open QuotientGroup
1519

1620
namespace Subgroup
21+
variable {G : Type*} [Group G]
1722

1823
/-- The commutator of a finite direct product is contained in the direct product of the commutators.
1924
-/
@@ -34,7 +39,34 @@ theorem commutator_pi_pi_of_finite {η : Type*} [Finite η] {Gs : η → Type*}
3439
simpa using hx
3540
· simp [h, one_mem]
3641

37-
variable (G : Type*) [Group G] [Group.FG G] [Finite (commutatorSet G)]
42+
/-- Cosets of the centralizer of an element embed into the set of commutators. -/
43+
noncomputable def quotientCentralizerEmbedding (g : G) :
44+
G ⧸ centralizer (zpowers (g : G)) ↪ commutatorSet G :=
45+
((MulAction.orbitEquivQuotientStabilizer (ConjAct G) g).trans
46+
(quotientEquivOfEq (ConjAct.stabilizer_eq_centralizer g))).symm.toEmbedding.trans
47+
fun x =>
48+
⟨x * g⁻¹,
49+
let ⟨_, x, rfl⟩ := x
50+
⟨x, g, rfl⟩⟩,
51+
fun _ _ => Subtype.ext ∘ mul_right_cancel ∘ Subtype.ext_iff.mp⟩
52+
53+
theorem quotientCentralizerEmbedding_apply (g : G) (x : G) :
54+
quotientCentralizerEmbedding g x = ⟨⁅x, g⁆, x, g, rfl⟩ :=
55+
rfl
56+
57+
/-- If `G` is generated by `S`, then the quotient by the center embeds into `S`-indexed sequences
58+
of commutators. -/
59+
noncomputable def quotientCenterEmbedding {S : Set G} (hS : closure S = ⊤) :
60+
G ⧸ center G ↪ S → commutatorSet G :=
61+
(quotientEquivOfEq (center_eq_infi' S hS)).toEmbedding.trans
62+
((quotientiInfEmbedding _).trans
63+
(Function.Embedding.piCongrRight fun g => quotientCentralizerEmbedding (g : G)))
64+
65+
theorem quotientCenterEmbedding_apply {S : Set G} (hS : closure S = ⊤) (g : G) (s : S) :
66+
quotientCenterEmbedding hS g s = ⟨⁅g, s⁆, g, s, rfl⟩ :=
67+
rfl
68+
69+
variable [Group.FG G] [Finite (commutatorSet G)]
3870

3971
instance finiteIndex_center : FiniteIndex (center G) := by
4072
obtain ⟨S, -, hS⟩ := Group.rank_spec G

0 commit comments

Comments
 (0)