/-
Copyright 2026 The Formal Conjectures Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-/
import FormalConjecturesUtilThe $S_3$-conjecture (conjugacy classes of distinct sizes)
References:
W. Zhou, I. Gorshkov, On ${2,3,5}$-groups with conjugacy classes of distinct sizes, arXiv:2606.22244 (2026).
F. M. Markel, Groups with many conjugate elements, J. Algebra 26 (1973), 69–74. (Origin of the $S_3$-conjecture.)
R. Knörr, W. Lempken, B. Thielcke, The $S_3$-conjecture for solvable groups, Israel J. Math. 91 (1995), 61–76.
J. Zhang, Finite groups with many conjugate elements, J. Algebra 170 (1994), 608–624.
Z. Arad, M. Muzychuk, A. Oliver, On groups with conjugacy classes of distinct sizes, J. Algebra 280 (2004), 537–576.
A finite group in which distinct conjugacy classes have distinct cardinalities is called an anti-homogeneous group (or ah-group). The symmetric group $S_3$ is an ah-group: its three conjugacy classes have sizes $1$, $2$, and $3$. Markel's $S_3$-conjecture (1973) asserts that, up to isomorphism, $S_3$ is the only nontrivial finite ah-group. The conjecture has been proved for all solvable groups (independently by Zhang and by Knörr–Lempken–Thielcke), but the general non-solvable case remains open.
namespace ConjugacyClassSizesopen ConjClasses
The cardinality of the conjugacy class c.
noncomputable def conjClassCard {G : Type*} [Monoid G] (c : ConjClasses G) : ℕ :=
Nat.card c.carrier
A finite group G satisfies HasDistinctConjClassSizes if the map assigning to each conjugacy class the
cardinality of its carrier is injective, i.e. distinct conjugacy classes have distinct sizes.
Such a group is called an anti-homogeneous group (or ah-group).
def HasDistinctConjClassSizes (G : Type*) [Group G] [Fintype G] : Prop :=
Function.Injective (conjClassCard (G := G))Equivalently, two conjugacy classes with the same cardinality must coincide.
@[category API, AMS 20]
theorem hasDistinctConjClassSizes_iff {G : Type*} [Group G] [Fintype G] :
HasDistinctConjClassSizes G ↔
∀ (a b : ConjClasses G), conjClassCard a = conjClassCard b → a = b := G:Type u_1inst✝¹:Group Ginst✝:Fintype G⊢ HasDistinctConjClassSizes G ↔ ∀ (a b : ConjClasses G), conjClassCard a = conjClassCard b → a = b
All goals completed! 🐙The trivial group is anti-homogeneous, since it has a single conjugacy class.
G:Type u_1inst✝²:Group Ginst✝¹:Fintype Ginst✝:Subsingleton Ghsub:Subsingleton (ConjClasses G)⊢ ∀ (a b : ConjClasses G), conjClassCard a = conjClassCard b → a = b
intros a b _ G:Type u_1inst✝²:Group Ginst✝¹:Fintype Ginst✝:Subsingleton Ghsub:Subsingleton (ConjClasses G)a:ConjClasses Gb:ConjClasses Ga✝:conjClassCard a = conjClassCard b⊢ a = b
exact Subsingleton.elim a b All goals completed! 🐙An anti-homogeneous group has trivial center, since each central element is in its own conjugacy class.
@[category test, AMS 20]
theorem trivial_center_of_hasDistinctConjClassSizes {G : Type*} [Group G] [Fintype G]
(h : HasDistinctConjClassSizes G) : Subgroup.center G = ⊥ := by G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes G⊢ Subgroup.center G = ⊥
-- A central element `w` is conjugate only to itself, so its conjugacy class is `{w}`.
have hcard : ∀ w : G, w ∈ Subgroup.center G → conjClassCard (ConjClasses.mk w) = 1 := by
intro w hw G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Gw:Ghw:w ∈ Subgroup.center G⊢ conjClassCard (ConjClasses.mk w) = 1 G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Ghcard:∀ w ∈ Subgroup.center G, conjClassCard (ConjClasses.mk w) = 1⊢ Subgroup.center G = ⊥
have hset : ConjClasses.carrier (ConjClasses.mk w) = {w} := by G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes G⊢ Subgroup.center G = ⊥ G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Gw:Ghw:w ∈ Subgroup.center Ghset:(ConjClasses.mk w).carrier = {w}⊢ conjClassCard (ConjClasses.mk w) = 1 G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Ghcard:∀ w ∈ Subgroup.center G, conjClassCard (ConjClasses.mk w) = 1⊢ Subgroup.center G = ⊥
ext a G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Gw:Ghw:w ∈ Subgroup.center Ga:G⊢ a ∈ (ConjClasses.mk w).carrier ↔ a ∈ {w} G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Gw:Ghw:w ∈ Subgroup.center Ghset:(ConjClasses.mk w).carrier = {w}⊢ conjClassCard (ConjClasses.mk w) = 1 G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Ghcard:∀ w ∈ Subgroup.center G, conjClassCard (ConjClasses.mk w) = 1⊢ Subgroup.center G = ⊥
rw [ConjClasses.mem_carrier_iff_mk_eq, G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Gw:Ghw:w ∈ Subgroup.center Ga:G⊢ ConjClasses.mk a = ConjClasses.mk w ↔ a ∈ {w} G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Gw:Ghw:w ∈ Subgroup.center Ga:G⊢ IsConj a w ↔ a = w G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Gw:Ghw:w ∈ Subgroup.center Ghset:(ConjClasses.mk w).carrier = {w}⊢ conjClassCard (ConjClasses.mk w) = 1 G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Ghcard:∀ w ∈ Subgroup.center G, conjClassCard (ConjClasses.mk w) = 1⊢ Subgroup.center G = ⊥ ConjClasses.mk_eq_mk_iff_isConj, G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Gw:Ghw:w ∈ Subgroup.center Ga:G⊢ IsConj a w ↔ a ∈ {w} G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Gw:Ghw:w ∈ Subgroup.center Ga:G⊢ IsConj a w ↔ a = w G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Gw:Ghw:w ∈ Subgroup.center Ghset:(ConjClasses.mk w).carrier = {w}⊢ conjClassCard (ConjClasses.mk w) = 1 G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Ghcard:∀ w ∈ Subgroup.center G, conjClassCard (ConjClasses.mk w) = 1⊢ Subgroup.center G = ⊥
Set.mem_singleton_iff G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Gw:Ghw:w ∈ Subgroup.center Ga:G⊢ IsConj a w ↔ a = w G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Gw:Ghw:w ∈ Subgroup.center Ga:G⊢ IsConj a w ↔ a = w G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Gw:Ghw:w ∈ Subgroup.center Ghset:(ConjClasses.mk w).carrier = {w}⊢ conjClassCard (ConjClasses.mk w) = 1 G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Ghcard:∀ w ∈ Subgroup.center G, conjClassCard (ConjClasses.mk w) = 1⊢ Subgroup.center G = ⊥] G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Gw:Ghw:w ∈ Subgroup.center Ga:G⊢ IsConj a w ↔ a = w G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Gw:Ghw:w ∈ Subgroup.center Ghset:(ConjClasses.mk w).carrier = {w}⊢ conjClassCard (ConjClasses.mk w) = 1 G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Ghcard:∀ w ∈ Subgroup.center G, conjClassCard (ConjClasses.mk w) = 1⊢ Subgroup.center G = ⊥
constructor mp G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Gw:Ghw:w ∈ Subgroup.center Ga:G⊢ IsConj a w → a = wmpr G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Gw:Ghw:w ∈ Subgroup.center Ga:G⊢ a = w → IsConj a w G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Gw:Ghw:w ∈ Subgroup.center Ghset:(ConjClasses.mk w).carrier = {w}⊢ conjClassCard (ConjClasses.mk w) = 1 G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Ghcard:∀ w ∈ Subgroup.center G, conjClassCard (ConjClasses.mk w) = 1⊢ Subgroup.center G = ⊥
· mp G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Gw:Ghw:w ∈ Subgroup.center Ga:G⊢ IsConj a w → a = w G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Gw:Ghw:w ∈ Subgroup.center Ghset:(ConjClasses.mk w).carrier = {w}⊢ conjClassCard (ConjClasses.mk w) = 1 G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Ghcard:∀ w ∈ Subgroup.center G, conjClassCard (ConjClasses.mk w) = 1⊢ Subgroup.center G = ⊥ rintro ⟨c, hc⟩ mp G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Gw:Ghw:w ∈ Subgroup.center Ga:Gc:Gˣhc:SemiconjBy (↑c) a w⊢ a = w G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Gw:Ghw:w ∈ Subgroup.center Ghset:(ConjClasses.mk w).carrier = {w}⊢ conjClassCard (ConjClasses.mk w) = 1 G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Ghcard:∀ w ∈ Subgroup.center G, conjClassCard (ConjClasses.mk w) = 1⊢ Subgroup.center G = ⊥
rw [SemiconjBy mp G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Gw:Ghw:w ∈ Subgroup.center Ga:Gc:Gˣhc:↑c * a = w * ↑c⊢ a = w mp G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Gw:Ghw:w ∈ Subgroup.center Ga:Gc:Gˣhc:↑c * a = w * ↑c⊢ a = w G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Gw:Ghw:w ∈ Subgroup.center Ghset:(ConjClasses.mk w).carrier = {w}⊢ conjClassCard (ConjClasses.mk w) = 1 G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Ghcard:∀ w ∈ Subgroup.center G, conjClassCard (ConjClasses.mk w) = 1⊢ Subgroup.center G = ⊥] at hcmp G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Gw:Ghw:w ∈ Subgroup.center Ga:Gc:Gˣhc:↑c * a = w * ↑c⊢ a = w G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Gw:Ghw:w ∈ Subgroup.center Ghset:(ConjClasses.mk w).carrier = {w}⊢ conjClassCard (ConjClasses.mk w) = 1 G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Ghcard:∀ w ∈ Subgroup.center G, conjClassCard (ConjClasses.mk w) = 1⊢ Subgroup.center G = ⊥
have : c * a = c * w := by G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes G⊢ Subgroup.center G = ⊥ mp G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Gw:Ghw:w ∈ Subgroup.center Ga:Gc:Gˣhc:↑c * a = w * ↑cthis:↑c * a = ↑c * w⊢ a = w G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Gw:Ghw:w ∈ Subgroup.center Ghset:(ConjClasses.mk w).carrier = {w}⊢ conjClassCard (ConjClasses.mk w) = 1 G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Ghcard:∀ w ∈ Subgroup.center G, conjClassCard (ConjClasses.mk w) = 1⊢ Subgroup.center G = ⊥ rw [hc G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Gw:Ghw:w ∈ Subgroup.center Ga:Gc:Gˣhc:↑c * a = w * ↑c⊢ w * ↑c = ↑c * w G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Gw:Ghw:w ∈ Subgroup.center Ga:Gc:Gˣhc:↑c * a = w * ↑c⊢ w * ↑c = ↑c * wmp G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Gw:Ghw:w ∈ Subgroup.center Ga:Gc:Gˣhc:↑c * a = w * ↑cthis:↑c * a = ↑c * w⊢ a = w G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Gw:Ghw:w ∈ Subgroup.center Ghset:(ConjClasses.mk w).carrier = {w}⊢ conjClassCard (ConjClasses.mk w) = 1 G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Ghcard:∀ w ∈ Subgroup.center G, conjClassCard (ConjClasses.mk w) = 1⊢ Subgroup.center G = ⊥] G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Gw:Ghw:w ∈ Subgroup.center Ga:Gc:Gˣhc:↑c * a = w * ↑c⊢ w * ↑c = ↑c * wmp G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Gw:Ghw:w ∈ Subgroup.center Ga:Gc:Gˣhc:↑c * a = w * ↑cthis:↑c * a = ↑c * w⊢ a = w G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Gw:Ghw:w ∈ Subgroup.center Ghset:(ConjClasses.mk w).carrier = {w}⊢ conjClassCard (ConjClasses.mk w) = 1 G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Ghcard:∀ w ∈ Subgroup.center G, conjClassCard (ConjClasses.mk w) = 1⊢ Subgroup.center G = ⊥; exact (Subgroup.mem_center_iff.mp hw c).symmmp G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Gw:Ghw:w ∈ Subgroup.center Ga:Gc:Gˣhc:↑c * a = w * ↑cthis:↑c * a = ↑c * w⊢ a = w G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Gw:Ghw:w ∈ Subgroup.center Ghset:(ConjClasses.mk w).carrier = {w}⊢ conjClassCard (ConjClasses.mk w) = 1 G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Ghcard:∀ w ∈ Subgroup.center G, conjClassCard (ConjClasses.mk w) = 1⊢ Subgroup.center G = ⊥mp G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Gw:Ghw:w ∈ Subgroup.center Ga:Gc:Gˣhc:↑c * a = w * ↑cthis:↑c * a = ↑c * w⊢ a = w G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Gw:Ghw:w ∈ Subgroup.center Ghset:(ConjClasses.mk w).carrier = {w}⊢ conjClassCard (ConjClasses.mk w) = 1 G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Ghcard:∀ w ∈ Subgroup.center G, conjClassCard (ConjClasses.mk w) = 1⊢ Subgroup.center G = ⊥
exact mul_left_cancel this All goals completed! 🐙 G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Gw:Ghw:w ∈ Subgroup.center Ghset:(ConjClasses.mk w).carrier = {w}⊢ conjClassCard (ConjClasses.mk w) = 1 G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Ghcard:∀ w ∈ Subgroup.center G, conjClassCard (ConjClasses.mk w) = 1⊢ Subgroup.center G = ⊥
· mpr G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Gw:Ghw:w ∈ Subgroup.center Ga:G⊢ a = w → IsConj a w G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Gw:Ghw:w ∈ Subgroup.center Ghset:(ConjClasses.mk w).carrier = {w}⊢ conjClassCard (ConjClasses.mk w) = 1 G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Ghcard:∀ w ∈ Subgroup.center G, conjClassCard (ConjClasses.mk w) = 1⊢ Subgroup.center G = ⊥ rintro rfl mpr G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Ga:Ghw:a ∈ Subgroup.center G⊢ IsConj a a G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Gw:Ghw:w ∈ Subgroup.center Ghset:(ConjClasses.mk w).carrier = {w}⊢ conjClassCard (ConjClasses.mk w) = 1 G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Ghcard:∀ w ∈ Subgroup.center G, conjClassCard (ConjClasses.mk w) = 1⊢ Subgroup.center G = ⊥
exact IsConj.refl a G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Gw:Ghw:w ∈ Subgroup.center Ghset:(ConjClasses.mk w).carrier = {w}⊢ conjClassCard (ConjClasses.mk w) = 1 G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Ghcard:∀ w ∈ Subgroup.center G, conjClassCard (ConjClasses.mk w) = 1⊢ Subgroup.center G = ⊥ G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Gw:Ghw:w ∈ Subgroup.center Ghset:(ConjClasses.mk w).carrier = {w}⊢ conjClassCard (ConjClasses.mk w) = 1 G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Ghcard:∀ w ∈ Subgroup.center G, conjClassCard (ConjClasses.mk w) = 1⊢ Subgroup.center G = ⊥
simp [conjClassCard, hset] G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Ghcard:∀ w ∈ Subgroup.center G, conjClassCard (ConjClasses.mk w) = 1⊢ Subgroup.center G = ⊥ G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Ghcard:∀ w ∈ Subgroup.center G, conjClassCard (ConjClasses.mk w) = 1⊢ Subgroup.center G = ⊥
-- Hence the class of any central `z` has the same size as the class of `1`, forcing `z = 1`.
rw [Subgroup.eq_bot_iff_forall G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Ghcard:∀ w ∈ Subgroup.center G, conjClassCard (ConjClasses.mk w) = 1⊢ ∀ x ∈ Subgroup.center G, x = 1 G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Ghcard:∀ w ∈ Subgroup.center G, conjClassCard (ConjClasses.mk w) = 1⊢ ∀ x ∈ Subgroup.center G, x = 1] G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Ghcard:∀ w ∈ Subgroup.center G, conjClassCard (ConjClasses.mk w) = 1⊢ ∀ x ∈ Subgroup.center G, x = 1
intro z hz G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Ghcard:∀ w ∈ Subgroup.center G, conjClassCard (ConjClasses.mk w) = 1z:Ghz:z ∈ Subgroup.center G⊢ z = 1
have hz1 : ConjClasses.mk z = ConjClasses.mk 1 := by G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes G⊢ Subgroup.center G = ⊥ G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Ghcard:∀ w ∈ Subgroup.center G, conjClassCard (ConjClasses.mk w) = 1z:Ghz:z ∈ Subgroup.center Ghz1:ConjClasses.mk z = ConjClasses.mk 1⊢ z = 1
apply h G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Ghcard:∀ w ∈ Subgroup.center G, conjClassCard (ConjClasses.mk w) = 1z:Ghz:z ∈ Subgroup.center G⊢ conjClassCard (ConjClasses.mk z) = conjClassCard (ConjClasses.mk 1) G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Ghcard:∀ w ∈ Subgroup.center G, conjClassCard (ConjClasses.mk w) = 1z:Ghz:z ∈ Subgroup.center Ghz1:ConjClasses.mk z = ConjClasses.mk 1⊢ z = 1
rw [hcard z hz, G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Ghcard:∀ w ∈ Subgroup.center G, conjClassCard (ConjClasses.mk w) = 1z:Ghz:z ∈ Subgroup.center G⊢ 1 = conjClassCard (ConjClasses.mk 1) G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Ghcard:∀ w ∈ Subgroup.center G, conjClassCard (ConjClasses.mk w) = 1z:Ghz:z ∈ Subgroup.center Ghz1:ConjClasses.mk z = ConjClasses.mk 1⊢ z = 1 hcard 1 (Subgroup.one_mem _) G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Ghcard:∀ w ∈ Subgroup.center G, conjClassCard (ConjClasses.mk w) = 1z:Ghz:z ∈ Subgroup.center G⊢ 1 = 1 G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Ghcard:∀ w ∈ Subgroup.center G, conjClassCard (ConjClasses.mk w) = 1z:Ghz:z ∈ Subgroup.center Ghz1:ConjClasses.mk z = ConjClasses.mk 1⊢ z = 1] G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Ghcard:∀ w ∈ Subgroup.center G, conjClassCard (ConjClasses.mk w) = 1z:Ghz:z ∈ Subgroup.center Ghz1:ConjClasses.mk z = ConjClasses.mk 1⊢ z = 1 G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Ghcard:∀ w ∈ Subgroup.center G, conjClassCard (ConjClasses.mk w) = 1z:Ghz:z ∈ Subgroup.center Ghz1:ConjClasses.mk z = ConjClasses.mk 1⊢ z = 1
rw [ConjClasses.mk_eq_mk_iff_isConj G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Ghcard:∀ w ∈ Subgroup.center G, conjClassCard (ConjClasses.mk w) = 1z:Ghz:z ∈ Subgroup.center Ghz1:IsConj z 1⊢ z = 1 G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Ghcard:∀ w ∈ Subgroup.center G, conjClassCard (ConjClasses.mk w) = 1z:Ghz:z ∈ Subgroup.center Ghz1:IsConj z 1⊢ z = 1] at hz1 G:Type u_1inst✝¹:Group Ginst✝:Fintype Gh:HasDistinctConjClassSizes Ghcard:∀ w ∈ Subgroup.center G, conjClassCard (ConjClasses.mk w) = 1z:Ghz:z ∈ Subgroup.center Ghz1:IsConj z 1⊢ z = 1
exact isConj_one_right.mp hz1.symm All goals completed! 🐙The symmetric group $S_3$ is anti-homogeneous, since its three conjugacy classes have sizes $1$, $2$ and $3$.
@[category test, AMS 20]
theorem hasDistinctConjClassSizes_perm_fin_three :
HasDistinctConjClassSizes (Equiv.Perm (Fin 3)) := by ⊢ HasDistinctConjClassSizes (Equiv.Perm (Fin 3))
have key : (conjClassCard (G := Equiv.Perm (Fin 3))) =
fun c => c.carrier.toFinset.card := by
funext c c:ConjClasses (Equiv.Perm (Fin 3))⊢ conjClassCard c = c.carrier.toFinset.card key:conjClassCard = fun c ↦ c.carrier.toFinset.card⊢ HasDistinctConjClassSizes (Equiv.Perm (Fin 3))
rw [conjClassCard, c:ConjClasses (Equiv.Perm (Fin 3))⊢ Nat.card ↑c.carrier = c.carrier.toFinset.card key:conjClassCard = fun c ↦ c.carrier.toFinset.card⊢ HasDistinctConjClassSizes (Equiv.Perm (Fin 3)) Nat.card_eq_fintype_card, c:ConjClasses (Equiv.Perm (Fin 3))⊢ Fintype.card ↑c.carrier = c.carrier.toFinset.card key:conjClassCard = fun c ↦ c.carrier.toFinset.card⊢ HasDistinctConjClassSizes (Equiv.Perm (Fin 3)) ← Set.toFinset_card c:ConjClasses (Equiv.Perm (Fin 3))⊢ c.carrier.toFinset.card = c.carrier.toFinset.card key:conjClassCard = fun c ↦ c.carrier.toFinset.card⊢ HasDistinctConjClassSizes (Equiv.Perm (Fin 3))] key:conjClassCard = fun c ↦ c.carrier.toFinset.card⊢ HasDistinctConjClassSizes (Equiv.Perm (Fin 3)) key:conjClassCard = fun c ↦ c.carrier.toFinset.card⊢ HasDistinctConjClassSizes (Equiv.Perm (Fin 3))
unfold HasDistinctConjClassSizes key:conjClassCard = fun c ↦ c.carrier.toFinset.card⊢ Function.Injective conjClassCard
rw [key key:conjClassCard = fun c ↦ c.carrier.toFinset.card⊢ Function.Injective fun c ↦ c.carrier.toFinset.card key:conjClassCard = fun c ↦ c.carrier.toFinset.card⊢ Function.Injective fun c ↦ c.carrier.toFinset.card] key:conjClassCard = fun c ↦ c.carrier.toFinset.card⊢ Function.Injective fun c ↦ c.carrier.toFinset.card
decide All goals completed! 🐙Markel's $S_3$-conjecture (1973): any nontrivial finite ah-group is isomorphic to $S_3$.
The conjecture is open in general; it is known to be true for solvable groups.
@[category research open, AMS 20]
theorem conjClassSizes_iff_sym_three
(G : Type) [Group G] [Fintype G] [Nontrivial G]
(h : HasDistinctConjClassSizes (G := G)) :
Nonempty (G ≃* Equiv.Perm (Fin 3)) := by G:Typeinst✝²:Group Ginst✝¹:Fintype Ginst✝:Nontrivial Gh:HasDistinctConjClassSizes G⊢ Nonempty (G ≃* Equiv.Perm (Fin 3))
sorry All goals completed! 🐙The $S_3$-conjecture holds for solvable groups: every nontrivial solvable finite ah-group is isomorphic to $S_3$. This was proved independently by Zhang (1994) and by Knörr–Lempken–Thielcke (1995).
@[category research solved, AMS 20]
theorem conjClassSizes_iff_sym_three_solvable
(G : Type) [Group G] [Fintype G] [Group.IsSolvable G] [Nontrivial G]
(h : HasDistinctConjClassSizes (G := G)) :
Nonempty (G ≃* Equiv.Perm (Fin 3)) := by G:Typeinst✝³:Group Ginst✝²:Fintype Ginst✝¹:Group.IsSolvable Ginst✝:Nontrivial Gh:HasDistinctConjClassSizes G⊢ Nonempty (G ≃* Equiv.Perm (Fin 3))
sorry All goals completed! 🐙end ConjugacyClassSizes