Zulip Chat Archive
Stream: new members
Topic: Simple(?) questions on group conjugations
Steven Herbert (Feb 21 2025 at 12:01):
I am struggling with three simple questions on group conjugations.
have h2f : j * g * j⁻¹ ∈ conjugatesOf g := by
(j, g are both in the same group) this is the definitive property of being a conjugate, but I'm a little stumped when poring through the documentation- I have
hjh : ∀ (g_1 : G), g_1 * g = g * g_1
with goal⊢ conjugatesOf g = {g}
again feels like its pretty much true by definition, but I cannot seem to unpick how to close it. - Finally, I have
hg : g ∈ conjugatesOf g
with goal⊢ ∃ a, g ∈ a.carrier
. Basically I need to convert between the definition of conjugates and carrier, which is confusing me a little.
Any help much appreciated!
Kevin Buzzard (Feb 21 2025 at 12:12):
Can you rewrite your question as a #mwe in triple backticks with self-contained code (all imports etc) so that people are just one click away from being able to help you solve your problems, rather than several people all having to write the boilerplate themselves? You can then re-ask the questions as explicit sorry
s in the code.
Steven Herbert (Feb 21 2025 at 12:33):
import Mathlib
open Finset
open Classical
namespace ConjClasses
variable (G : Type) [Group G] (g h j : G)
variable [Fintype G]
--Q1
example : j * g * j⁻¹ ∈ conjugatesOf g := by sorry
--Q2
example (h1 : ∀ (g_1 : G), g_1 * g = g * g_1) : conjugatesOf g = {g} := by sorry
--Q3 (see below)
example [Fintype G] [Group G] : Fintype.card G = ∑ C : ConjClasses G, Fintype.card C.carrier := by
have h : (Finset.univ : Finset G) =
(Finset.univ : Finset (ConjClasses G)).biUnion (fun C ↦ C.carrier.toFinset) := by
ext g
simp only [Finset.mem_univ, Finset.mem_biUnion, Set.mem_toFinset, true_and, true_iff]
have hg'' : g ∈ conjugatesOf g := by exact mem_conjugatesOf_self
--its the goal at this point here that I'm struggling with
sorry
sorry -- don't worry about this sorry
Aaron Liu (Feb 21 2025 at 12:44):
import Mathlib
open Finset
open Classical
namespace ConjClasses
variable (G : Type) [Group G] (g h j : G)
-- variable [Fintype G]
--Q1
example : j * g * j⁻¹ ∈ conjugatesOf g := by
have h : IsConj g (j * g * j⁻¹) := by simp
rw [isConj_iff_conjugatesOf_eq.mp h]
apply mem_conjugatesOf_self
--Q2
example (h1 : ∀ (g_1 : G), g_1 * g = g * g_1) : conjugatesOf g = {g} := by
have h : g ∈ Set.center G := Semigroup.mem_center_iff.mpr h1
apply Set.eq_singleton_iff_unique_mem.mpr
constructor
· apply mem_conjugatesOf_self
· intro x hx
exact (hx.eq_of_left_mem_center h).symm
--Q3 (see below)
example [Fintype G] : Fintype.card G = ∑ C : ConjClasses G, Fintype.card C.carrier := by
have h : (Finset.univ : Finset G) =
(Finset.univ : Finset (ConjClasses G)).biUnion (fun C ↦ C.carrier.toFinset) := by
ext g
simp only [Finset.mem_univ, Finset.mem_biUnion, Set.mem_toFinset, true_and, true_iff]
have hg'' : g ∈ conjugatesOf g := by exact mem_conjugatesOf_self
--its the goal at this point here that I'm struggling with
use ConjClasses.mk g
exact hg''
sorry -- don't worry about this sorry
Steven Herbert (Feb 21 2025 at 13:43):
That's terrific, thanks so much
Kevin Buzzard (Feb 21 2025 at 14:14):
@Steven Herbert for Q1 I'm a little surprised that mathlib has this definition conjugatesOf
but not a lemma mem_conjugatesOf
. You should PR it to mathlib! Using it, Q1 is easy:
import Mathlib
namespace ConjClasses
lemma mem_conjugatesOf {M : Type*} [Monoid M] (a b : M) : b ∈ conjugatesOf a ↔ IsConj a b := by
-- this is the definition of `conjugatesOf`
rfl
variable (G : Type) [Group G] (g j : G)
--Q1
example : j * g * j⁻¹ ∈ conjugatesOf g := by
-- missing API
rw [mem_conjugatesOf]
-- but this is there
rw [isConj_iff]
-- ⊢ ∃ c, c * g * c⁻¹ = j * g * j⁻¹
-- and now it's easy
use j
-- done
Last updated: May 02 2025 at 03:31 UTC