/-
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 FormalConjecturesUtilBabai–Seress Conjectures on the Diameter of Finite Groups
References:
Wikipedia, Diameter (group theory)
H. A. Helfgott and Á. Seress, On the diameter of permutation groups
This file contains two conjectures from the Babai–Seress paper:
Conjecture 1.5: $\operatorname{diam}(A_n) < n^C$ for some absolute constant $C$, where $A_n$ is the alternating group on $n$ elements.
Conjecture 1.7: $\operatorname{diam}(G) < (\log |G|)^C$ for some absolute constant $C$, where $G$ ranges over all non-abelian finite simple groups.
Conjecture 1.7 generalises Conjecture 1.5, since for $G = A_n$ we have $\log |A_n| \approx n \log n$, so a polylogarithmic bound in $|G|$ implies a polynomial bound in $n$.
namespace BabaiSeressConjecturesThe (undirected) Cayley graph of a group $G$ with respect to a generating set $S$. Two elements $g, h \in G$ are adjacent iff $g \neq h$ and $g^{-1} h \in S$ or $h^{-1} g \in S$.
This is constructed using SimpleGraph.fromRel, which takes the relation
$g \sim h \iff g^{-1} h \in S$ and automatically symmetrizes it (via disjunction with the
reverse relation) and enforces irreflexivity (via $g \neq h$). In particular, this definition
effectively uses the symmetrization $S \cup S^{-1}$, so it produces a standard undirected
Cayley graph even when $S$ is not itself symmetric.
def cayleyGraph {G : Type*} [Group G] (S : Set G) : SimpleGraph G :=
SimpleGraph.fromRel (fun g h => g⁻¹ * h ∈ S)The diameter of a finite group $G$, defined as the maximum diameter of the Cayley graphs $\Gamma(G, A)$ over all generating sets $A$ of $G$.
noncomputable def groupDiam (G : Type*) [Group G] [Fintype G] : ℕ :=
sSup { d : ℕ | ∃ S : Set G, Subgroup.closure S = ⊤ ∧ (cayleyGraph S).diam = d }For the trivial group (with one element), the group diameter is zero, since every Cayley graph has only one vertex and hence diameter zero.
@[category test, AMS 20]
theorem groupDiam_fin_one : groupDiam (alternatingGroup (Fin 0)) = 0 := ⊢ groupDiam ↥(alternatingGroup (Fin 0)) = 0
⊢ sSup {d | ∃ S, Subgroup.closure S = ⊤ ∧ (cayleyGraph S).diam = d} = 0
⊢ sSup {d | ∃ S, Subgroup.closure S = ⊤ ∧ (cayleyGraph S).diam = d} ≤ 0
⊢ {d | ∃ S, Subgroup.closure S = ⊤ ∧ (cayleyGraph S).diam = d}.Nonempty⊢ ∀ b ∈ {d | ∃ S, Subgroup.closure S = ⊤ ∧ (cayleyGraph S).diam = d}, b ≤ 0
⊢ {d | ∃ S, Subgroup.closure S = ⊤ ∧ (cayleyGraph S).diam = d}.Nonempty All goals completed! 🐙
⊢ ∀ b ∈ {d | ∃ S, Subgroup.closure S = ⊤ ∧ (cayleyGraph S).diam = d}, b ≤ 0 d:ℕS:Set ↥(alternatingGroup (Fin 0))left✝:Subgroup.closure S = ⊤hd:(cayleyGraph S).diam = d⊢ d ≤ 0
All goals completed! 🐙The alternating group $A_3 \cong \mathbb{Z}/3\mathbb{Z}$ has group diameter $1$: every non-trivial generating set produces a complete Cayley graph $K_3$, since any single non-identity element and its inverse already reach the entire group.
All goals completed! 🐙The symmetric group $S_2 \cong \mathbb{Z}/2\mathbb{Z}$ has group diameter $1$: the unique generating set ${(01)}$ produces the complete graph $K_2$, since the single non-identity element and its inverse (which are equal) cover the only other vertex.
@[category test, AMS 20]
theorem groupDiam_perm_two : groupDiam (Equiv.Perm (Fin 2)) = 1 := by ⊢ groupDiam (Equiv.Perm (Fin 2)) = 1
have hnt : Nontrivial (Equiv.Perm (Fin 2)) :=
Fintype.one_lt_card_iff_nontrivial.mp (by ⊢ 1 < Fintype.card (Equiv.Perm (Fin 2)) hnt:Nontrivial (Equiv.Perm (Fin 2))⊢ groupDiam (Equiv.Perm (Fin 2)) = 1 decide All goals completed! 🐙 hnt:Nontrivial (Equiv.Perm (Fin 2))⊢ groupDiam (Equiv.Perm (Fin 2)) = 1) hnt:Nontrivial (Equiv.Perm (Fin 2))⊢ groupDiam (Equiv.Perm (Fin 2)) = 1
have key : ∀ S : Set (Equiv.Perm (Fin 2)),
Subgroup.closure S = ⊤ → cayleyGraph S = ⊤ := by
intro S hS hnt:Nontrivial (Equiv.Perm (Fin 2))S:Set (Equiv.Perm (Fin 2))hS:Subgroup.closure S = ⊤⊢ cayleyGraph S = ⊤ hnt:Nontrivial (Equiv.Perm (Fin 2))key:∀ (S : Set (Equiv.Perm (Fin 2))), Subgroup.closure S = ⊤ → cayleyGraph S = ⊤⊢ groupDiam (Equiv.Perm (Fin 2)) = 1
rw [SimpleGraph.eq_top_iff_forall_ne_adj hnt:Nontrivial (Equiv.Perm (Fin 2))S:Set (Equiv.Perm (Fin 2))hS:Subgroup.closure S = ⊤⊢ ∀ (a b : Equiv.Perm (Fin 2)), a ≠ b → (cayleyGraph S).Adj a b hnt:Nontrivial (Equiv.Perm (Fin 2))S:Set (Equiv.Perm (Fin 2))hS:Subgroup.closure S = ⊤⊢ ∀ (a b : Equiv.Perm (Fin 2)), a ≠ b → (cayleyGraph S).Adj a b hnt:Nontrivial (Equiv.Perm (Fin 2))key:∀ (S : Set (Equiv.Perm (Fin 2))), Subgroup.closure S = ⊤ → cayleyGraph S = ⊤⊢ groupDiam (Equiv.Perm (Fin 2)) = 1] hnt:Nontrivial (Equiv.Perm (Fin 2))S:Set (Equiv.Perm (Fin 2))hS:Subgroup.closure S = ⊤⊢ ∀ (a b : Equiv.Perm (Fin 2)), a ≠ b → (cayleyGraph S).Adj a b hnt:Nontrivial (Equiv.Perm (Fin 2))key:∀ (S : Set (Equiv.Perm (Fin 2))), Subgroup.closure S = ⊤ → cayleyGraph S = ⊤⊢ groupDiam (Equiv.Perm (Fin 2)) = 1
intro u v hne hnt:Nontrivial (Equiv.Perm (Fin 2))S:Set (Equiv.Perm (Fin 2))hS:Subgroup.closure S = ⊤u:Equiv.Perm (Fin 2)v:Equiv.Perm (Fin 2)hne:u ≠ v⊢ (cayleyGraph S).Adj u v hnt:Nontrivial (Equiv.Perm (Fin 2))key:∀ (S : Set (Equiv.Perm (Fin 2))), Subgroup.closure S = ⊤ → cayleyGraph S = ⊤⊢ groupDiam (Equiv.Perm (Fin 2)) = 1
simp only [cayleyGraph, SimpleGraph.fromRel_adj] hnt:Nontrivial (Equiv.Perm (Fin 2))S:Set (Equiv.Perm (Fin 2))hS:Subgroup.closure S = ⊤u:Equiv.Perm (Fin 2)v:Equiv.Perm (Fin 2)hne:u ≠ v⊢ u ≠ v ∧ (u⁻¹ * v ∈ S ∨ v⁻¹ * u ∈ S) hnt:Nontrivial (Equiv.Perm (Fin 2))key:∀ (S : Set (Equiv.Perm (Fin 2))), Subgroup.closure S = ⊤ → cayleyGraph S = ⊤⊢ groupDiam (Equiv.Perm (Fin 2)) = 1
refine ⟨hne, ?_⟩ hnt:Nontrivial (Equiv.Perm (Fin 2))S:Set (Equiv.Perm (Fin 2))hS:Subgroup.closure S = ⊤u:Equiv.Perm (Fin 2)v:Equiv.Perm (Fin 2)hne:u ≠ v⊢ u⁻¹ * v ∈ S ∨ v⁻¹ * u ∈ S hnt:Nontrivial (Equiv.Perm (Fin 2))key:∀ (S : Set (Equiv.Perm (Fin 2))), Subgroup.closure S = ⊤ → cayleyGraph S = ⊤⊢ groupDiam (Equiv.Perm (Fin 2)) = 1
obtain ⟨y, hy, hy1⟩ : ∃ y ∈ S, y ≠ 1 := by hnt:Nontrivial (Equiv.Perm (Fin 2))S:Set (Equiv.Perm (Fin 2))hS:Subgroup.closure S = ⊤u:Equiv.Perm (Fin 2)v:Equiv.Perm (Fin 2)hne:u ≠ v⊢ ∃ y ∈ S, y ≠ 1 hnt:Nontrivial (Equiv.Perm (Fin 2))S:Set (Equiv.Perm (Fin 2))hS:Subgroup.closure S = ⊤u:Equiv.Perm (Fin 2)v:Equiv.Perm (Fin 2)hne:u ≠ vy:Equiv.Perm (Fin 2)hy:y ∈ Shy1:y ≠ 1⊢ u⁻¹ * v ∈ S ∨ v⁻¹ * u ∈ S hnt:Nontrivial (Equiv.Perm (Fin 2))key:∀ (S : Set (Equiv.Perm (Fin 2))), Subgroup.closure S = ⊤ → cayleyGraph S = ⊤⊢ groupDiam (Equiv.Perm (Fin 2)) = 1
by_contra! h hnt:Nontrivial (Equiv.Perm (Fin 2))S:Set (Equiv.Perm (Fin 2))hS:Subgroup.closure S = ⊤u:Equiv.Perm (Fin 2)v:Equiv.Perm (Fin 2)hne:u ≠ vh:∀ y ∈ S, y = 1⊢ False hnt:Nontrivial (Equiv.Perm (Fin 2))S:Set (Equiv.Perm (Fin 2))hS:Subgroup.closure S = ⊤u:Equiv.Perm (Fin 2)v:Equiv.Perm (Fin 2)hne:u ≠ vy:Equiv.Perm (Fin 2)hy:y ∈ Shy1:y ≠ 1⊢ u⁻¹ * v ∈ S ∨ v⁻¹ * u ∈ S hnt:Nontrivial (Equiv.Perm (Fin 2))key:∀ (S : Set (Equiv.Perm (Fin 2))), Subgroup.closure S = ⊤ → cayleyGraph S = ⊤⊢ groupDiam (Equiv.Perm (Fin 2)) = 1
have : Subgroup.closure S ≤ ⊥ :=
(Subgroup.closure_le _).mpr fun x hx => Subgroup.mem_bot.mpr (h x hx) hnt:Nontrivial (Equiv.Perm (Fin 2))S:Set (Equiv.Perm (Fin 2))hS:Subgroup.closure S = ⊤u:Equiv.Perm (Fin 2)v:Equiv.Perm (Fin 2)hne:u ≠ vh:∀ y ∈ S, y = 1this:Subgroup.closure S ≤ ⊥⊢ False hnt:Nontrivial (Equiv.Perm (Fin 2))S:Set (Equiv.Perm (Fin 2))hS:Subgroup.closure S = ⊤u:Equiv.Perm (Fin 2)v:Equiv.Perm (Fin 2)hne:u ≠ vy:Equiv.Perm (Fin 2)hy:y ∈ Shy1:y ≠ 1⊢ u⁻¹ * v ∈ S ∨ v⁻¹ * u ∈ S hnt:Nontrivial (Equiv.Perm (Fin 2))key:∀ (S : Set (Equiv.Perm (Fin 2))), Subgroup.closure S = ⊤ → cayleyGraph S = ⊤⊢ groupDiam (Equiv.Perm (Fin 2)) = 1
exact absurd (le_antisymm this bot_le |>.symm ▸ hS) bot_ne_top hnt:Nontrivial (Equiv.Perm (Fin 2))S:Set (Equiv.Perm (Fin 2))hS:Subgroup.closure S = ⊤u:Equiv.Perm (Fin 2)v:Equiv.Perm (Fin 2)hne:u ≠ vy:Equiv.Perm (Fin 2)hy:y ∈ Shy1:y ≠ 1⊢ u⁻¹ * v ∈ S ∨ v⁻¹ * u ∈ S hnt:Nontrivial (Equiv.Perm (Fin 2))key:∀ (S : Set (Equiv.Perm (Fin 2))), Subgroup.closure S = ⊤ → cayleyGraph S = ⊤⊢ groupDiam (Equiv.Perm (Fin 2)) = 1 hnt:Nontrivial (Equiv.Perm (Fin 2))S:Set (Equiv.Perm (Fin 2))hS:Subgroup.closure S = ⊤u:Equiv.Perm (Fin 2)v:Equiv.Perm (Fin 2)hne:u ≠ vy:Equiv.Perm (Fin 2)hy:y ∈ Shy1:y ≠ 1⊢ u⁻¹ * v ∈ S ∨ v⁻¹ * u ∈ S hnt:Nontrivial (Equiv.Perm (Fin 2))key:∀ (S : Set (Equiv.Perm (Fin 2))), Subgroup.closure S = ⊤ → cayleyGraph S = ⊤⊢ groupDiam (Equiv.Perm (Fin 2)) = 1
have h2 : ∀ x y : Equiv.Perm (Fin 2), x ≠ 1 → y ≠ 1 → x = y ∨ x = y⁻¹ := by ⊢ groupDiam (Equiv.Perm (Fin 2)) = 1 hnt:Nontrivial (Equiv.Perm (Fin 2))S:Set (Equiv.Perm (Fin 2))hS:Subgroup.closure S = ⊤u:Equiv.Perm (Fin 2)v:Equiv.Perm (Fin 2)hne:u ≠ vy:Equiv.Perm (Fin 2)hy:y ∈ Shy1:y ≠ 1h2:∀ (x y : Equiv.Perm (Fin 2)), x ≠ 1 → y ≠ 1 → x = y ∨ x = y⁻¹⊢ u⁻¹ * v ∈ S ∨ v⁻¹ * u ∈ S hnt:Nontrivial (Equiv.Perm (Fin 2))key:∀ (S : Set (Equiv.Perm (Fin 2))), Subgroup.closure S = ⊤ → cayleyGraph S = ⊤⊢ groupDiam (Equiv.Perm (Fin 2)) = 1 decide hnt:Nontrivial (Equiv.Perm (Fin 2))S:Set (Equiv.Perm (Fin 2))hS:Subgroup.closure S = ⊤u:Equiv.Perm (Fin 2)v:Equiv.Perm (Fin 2)hne:u ≠ vy:Equiv.Perm (Fin 2)hy:y ∈ Shy1:y ≠ 1h2:∀ (x y : Equiv.Perm (Fin 2)), x ≠ 1 → y ≠ 1 → x = y ∨ x = y⁻¹⊢ u⁻¹ * v ∈ S ∨ v⁻¹ * u ∈ S hnt:Nontrivial (Equiv.Perm (Fin 2))key:∀ (S : Set (Equiv.Perm (Fin 2))), Subgroup.closure S = ⊤ → cayleyGraph S = ⊤⊢ groupDiam (Equiv.Perm (Fin 2)) = 1 hnt:Nontrivial (Equiv.Perm (Fin 2))S:Set (Equiv.Perm (Fin 2))hS:Subgroup.closure S = ⊤u:Equiv.Perm (Fin 2)v:Equiv.Perm (Fin 2)hne:u ≠ vy:Equiv.Perm (Fin 2)hy:y ∈ Shy1:y ≠ 1h2:∀ (x y : Equiv.Perm (Fin 2)), x ≠ 1 → y ≠ 1 → x = y ∨ x = y⁻¹⊢ u⁻¹ * v ∈ S ∨ v⁻¹ * u ∈ S hnt:Nontrivial (Equiv.Perm (Fin 2))key:∀ (S : Set (Equiv.Perm (Fin 2))), Subgroup.closure S = ⊤ → cayleyGraph S = ⊤⊢ groupDiam (Equiv.Perm (Fin 2)) = 1
have hg1 : u⁻¹ * v ≠ 1 := by ⊢ groupDiam (Equiv.Perm (Fin 2)) = 1 hnt:Nontrivial (Equiv.Perm (Fin 2))S:Set (Equiv.Perm (Fin 2))hS:Subgroup.closure S = ⊤u:Equiv.Perm (Fin 2)v:Equiv.Perm (Fin 2)hne:u ≠ vy:Equiv.Perm (Fin 2)hy:y ∈ Shy1:y ≠ 1h2:∀ (x y : Equiv.Perm (Fin 2)), x ≠ 1 → y ≠ 1 → x = y ∨ x = y⁻¹hg1:u⁻¹ * v ≠ 1⊢ u⁻¹ * v ∈ S ∨ v⁻¹ * u ∈ S hnt:Nontrivial (Equiv.Perm (Fin 2))key:∀ (S : Set (Equiv.Perm (Fin 2))), Subgroup.closure S = ⊤ → cayleyGraph S = ⊤⊢ groupDiam (Equiv.Perm (Fin 2)) = 1 rwa [ne_eq, hnt:Nontrivial (Equiv.Perm (Fin 2))S:Set (Equiv.Perm (Fin 2))hS:Subgroup.closure S = ⊤u:Equiv.Perm (Fin 2)v:Equiv.Perm (Fin 2)hne:u ≠ vy:Equiv.Perm (Fin 2)hy:y ∈ Shy1:y ≠ 1h2:∀ (x y : Equiv.Perm (Fin 2)), x ≠ 1 → y ≠ 1 → x = y ∨ x = y⁻¹⊢ ¬u⁻¹ * v = 1 hnt:Nontrivial (Equiv.Perm (Fin 2))S:Set (Equiv.Perm (Fin 2))hS:Subgroup.closure S = ⊤u:Equiv.Perm (Fin 2)v:Equiv.Perm (Fin 2)hne:u ≠ vy:Equiv.Perm (Fin 2)hy:y ∈ Shy1:y ≠ 1h2:∀ (x y : Equiv.Perm (Fin 2)), x ≠ 1 → y ≠ 1 → x = y ∨ x = y⁻¹hg1:u⁻¹ * v ≠ 1⊢ u⁻¹ * v ∈ S ∨ v⁻¹ * u ∈ S hnt:Nontrivial (Equiv.Perm (Fin 2))key:∀ (S : Set (Equiv.Perm (Fin 2))), Subgroup.closure S = ⊤ → cayleyGraph S = ⊤⊢ groupDiam (Equiv.Perm (Fin 2)) = 1 inv_mul_eq_one hnt:Nontrivial (Equiv.Perm (Fin 2))S:Set (Equiv.Perm (Fin 2))hS:Subgroup.closure S = ⊤u:Equiv.Perm (Fin 2)v:Equiv.Perm (Fin 2)hne:u ≠ vy:Equiv.Perm (Fin 2)hy:y ∈ Shy1:y ≠ 1h2:∀ (x y : Equiv.Perm (Fin 2)), x ≠ 1 → y ≠ 1 → x = y ∨ x = y⁻¹⊢ ¬u = v hnt:Nontrivial (Equiv.Perm (Fin 2))S:Set (Equiv.Perm (Fin 2))hS:Subgroup.closure S = ⊤u:Equiv.Perm (Fin 2)v:Equiv.Perm (Fin 2)hne:u ≠ vy:Equiv.Perm (Fin 2)hy:y ∈ Shy1:y ≠ 1h2:∀ (x y : Equiv.Perm (Fin 2)), x ≠ 1 → y ≠ 1 → x = y ∨ x = y⁻¹hg1:u⁻¹ * v ≠ 1⊢ u⁻¹ * v ∈ S ∨ v⁻¹ * u ∈ S hnt:Nontrivial (Equiv.Perm (Fin 2))key:∀ (S : Set (Equiv.Perm (Fin 2))), Subgroup.closure S = ⊤ → cayleyGraph S = ⊤⊢ groupDiam (Equiv.Perm (Fin 2)) = 1] hnt:Nontrivial (Equiv.Perm (Fin 2))S:Set (Equiv.Perm (Fin 2))hS:Subgroup.closure S = ⊤u:Equiv.Perm (Fin 2)v:Equiv.Perm (Fin 2)hne:u ≠ vy:Equiv.Perm (Fin 2)hy:y ∈ Shy1:y ≠ 1h2:∀ (x y : Equiv.Perm (Fin 2)), x ≠ 1 → y ≠ 1 → x = y ∨ x = y⁻¹⊢ ¬u = v hnt:Nontrivial (Equiv.Perm (Fin 2))S:Set (Equiv.Perm (Fin 2))hS:Subgroup.closure S = ⊤u:Equiv.Perm (Fin 2)v:Equiv.Perm (Fin 2)hne:u ≠ vy:Equiv.Perm (Fin 2)hy:y ∈ Shy1:y ≠ 1h2:∀ (x y : Equiv.Perm (Fin 2)), x ≠ 1 → y ≠ 1 → x = y ∨ x = y⁻¹hg1:u⁻¹ * v ≠ 1⊢ u⁻¹ * v ∈ S ∨ v⁻¹ * u ∈ S hnt:Nontrivial (Equiv.Perm (Fin 2))key:∀ (S : Set (Equiv.Perm (Fin 2))), Subgroup.closure S = ⊤ → cayleyGraph S = ⊤⊢ groupDiam (Equiv.Perm (Fin 2)) = 1 hnt:Nontrivial (Equiv.Perm (Fin 2))S:Set (Equiv.Perm (Fin 2))hS:Subgroup.closure S = ⊤u:Equiv.Perm (Fin 2)v:Equiv.Perm (Fin 2)hne:u ≠ vy:Equiv.Perm (Fin 2)hy:y ∈ Shy1:y ≠ 1h2:∀ (x y : Equiv.Perm (Fin 2)), x ≠ 1 → y ≠ 1 → x = y ∨ x = y⁻¹hg1:u⁻¹ * v ≠ 1⊢ u⁻¹ * v ∈ S ∨ v⁻¹ * u ∈ S hnt:Nontrivial (Equiv.Perm (Fin 2))key:∀ (S : Set (Equiv.Perm (Fin 2))), Subgroup.closure S = ⊤ → cayleyGraph S = ⊤⊢ groupDiam (Equiv.Perm (Fin 2)) = 1
rcases h2 (u⁻¹ * v) y hg1 hy1 with rfl | h inl hnt:Nontrivial (Equiv.Perm (Fin 2))S:Set (Equiv.Perm (Fin 2))hS:Subgroup.closure S = ⊤u:Equiv.Perm (Fin 2)v:Equiv.Perm (Fin 2)hne:u ≠ vh2:∀ (x y : Equiv.Perm (Fin 2)), x ≠ 1 → y ≠ 1 → x = y ∨ x = y⁻¹hg1:u⁻¹ * v ≠ 1hy:u⁻¹ * v ∈ Shy1:u⁻¹ * v ≠ 1⊢ u⁻¹ * v ∈ S ∨ v⁻¹ * u ∈ Sinr hnt:Nontrivial (Equiv.Perm (Fin 2))S:Set (Equiv.Perm (Fin 2))hS:Subgroup.closure S = ⊤u:Equiv.Perm (Fin 2)v:Equiv.Perm (Fin 2)hne:u ≠ vy:Equiv.Perm (Fin 2)hy:y ∈ Shy1:y ≠ 1h2:∀ (x y : Equiv.Perm (Fin 2)), x ≠ 1 → y ≠ 1 → x = y ∨ x = y⁻¹hg1:u⁻¹ * v ≠ 1h:u⁻¹ * v = y⁻¹⊢ u⁻¹ * v ∈ S ∨ v⁻¹ * u ∈ S hnt:Nontrivial (Equiv.Perm (Fin 2))key:∀ (S : Set (Equiv.Perm (Fin 2))), Subgroup.closure S = ⊤ → cayleyGraph S = ⊤⊢ groupDiam (Equiv.Perm (Fin 2)) = 1
· inl hnt:Nontrivial (Equiv.Perm (Fin 2))S:Set (Equiv.Perm (Fin 2))hS:Subgroup.closure S = ⊤u:Equiv.Perm (Fin 2)v:Equiv.Perm (Fin 2)hne:u ≠ vh2:∀ (x y : Equiv.Perm (Fin 2)), x ≠ 1 → y ≠ 1 → x = y ∨ x = y⁻¹hg1:u⁻¹ * v ≠ 1hy:u⁻¹ * v ∈ Shy1:u⁻¹ * v ≠ 1⊢ u⁻¹ * v ∈ S ∨ v⁻¹ * u ∈ S hnt:Nontrivial (Equiv.Perm (Fin 2))key:∀ (S : Set (Equiv.Perm (Fin 2))), Subgroup.closure S = ⊤ → cayleyGraph S = ⊤⊢ groupDiam (Equiv.Perm (Fin 2)) = 1 exact Or.inl hy All goals completed! 🐙 hnt:Nontrivial (Equiv.Perm (Fin 2))key:∀ (S : Set (Equiv.Perm (Fin 2))), Subgroup.closure S = ⊤ → cayleyGraph S = ⊤⊢ groupDiam (Equiv.Perm (Fin 2)) = 1
· inr hnt:Nontrivial (Equiv.Perm (Fin 2))S:Set (Equiv.Perm (Fin 2))hS:Subgroup.closure S = ⊤u:Equiv.Perm (Fin 2)v:Equiv.Perm (Fin 2)hne:u ≠ vy:Equiv.Perm (Fin 2)hy:y ∈ Shy1:y ≠ 1h2:∀ (x y : Equiv.Perm (Fin 2)), x ≠ 1 → y ≠ 1 → x = y ∨ x = y⁻¹hg1:u⁻¹ * v ≠ 1h:u⁻¹ * v = y⁻¹⊢ u⁻¹ * v ∈ S ∨ v⁻¹ * u ∈ S hnt:Nontrivial (Equiv.Perm (Fin 2))key:∀ (S : Set (Equiv.Perm (Fin 2))), Subgroup.closure S = ⊤ → cayleyGraph S = ⊤⊢ groupDiam (Equiv.Perm (Fin 2)) = 1 exact Or.inr (by hnt:Nontrivial (Equiv.Perm (Fin 2))S:Set (Equiv.Perm (Fin 2))hS:Subgroup.closure S = ⊤u:Equiv.Perm (Fin 2)v:Equiv.Perm (Fin 2)hne:u ≠ vy:Equiv.Perm (Fin 2)hy:y ∈ Shy1:y ≠ 1h2:∀ (x y : Equiv.Perm (Fin 2)), x ≠ 1 → y ≠ 1 → x = y ∨ x = y⁻¹hg1:u⁻¹ * v ≠ 1h:u⁻¹ * v = y⁻¹⊢ v⁻¹ * u ∈ S hnt:Nontrivial (Equiv.Perm (Fin 2))key:∀ (S : Set (Equiv.Perm (Fin 2))), Subgroup.closure S = ⊤ → cayleyGraph S = ⊤⊢ groupDiam (Equiv.Perm (Fin 2)) = 1 rwa [show v⁻¹ * u = (u⁻¹ * v)⁻¹ from by hnt:Nontrivial (Equiv.Perm (Fin 2))S:Set (Equiv.Perm (Fin 2))hS:Subgroup.closure S = ⊤u:Equiv.Perm (Fin 2)v:Equiv.Perm (Fin 2)hne:u ≠ vy:Equiv.Perm (Fin 2)hy:y ∈ Shy1:y ≠ 1h2:∀ (x y : Equiv.Perm (Fin 2)), x ≠ 1 → y ≠ 1 → x = y ∨ x = y⁻¹hg1:u⁻¹ * v ≠ 1h:u⁻¹ * v = y⁻¹⊢ v⁻¹ * u = (u⁻¹ * v)⁻¹ hnt:Nontrivial (Equiv.Perm (Fin 2))key:∀ (S : Set (Equiv.Perm (Fin 2))), Subgroup.closure S = ⊤ → cayleyGraph S = ⊤⊢ groupDiam (Equiv.Perm (Fin 2)) = 1 group All goals completed! 🐙 hnt:Nontrivial (Equiv.Perm (Fin 2))key:∀ (S : Set (Equiv.Perm (Fin 2))), Subgroup.closure S = ⊤ → cayleyGraph S = ⊤⊢ groupDiam (Equiv.Perm (Fin 2)) = 1, h, hnt:Nontrivial (Equiv.Perm (Fin 2))S:Set (Equiv.Perm (Fin 2))hS:Subgroup.closure S = ⊤u:Equiv.Perm (Fin 2)v:Equiv.Perm (Fin 2)hne:u ≠ vy:Equiv.Perm (Fin 2)hy:y ∈ Shy1:y ≠ 1h2:∀ (x y : Equiv.Perm (Fin 2)), x ≠ 1 → y ≠ 1 → x = y ∨ x = y⁻¹hg1:u⁻¹ * v ≠ 1h:u⁻¹ * v = y⁻¹⊢ y⁻¹⁻¹ ∈ S hnt:Nontrivial (Equiv.Perm (Fin 2))key:∀ (S : Set (Equiv.Perm (Fin 2))), Subgroup.closure S = ⊤ → cayleyGraph S = ⊤⊢ groupDiam (Equiv.Perm (Fin 2)) = 1 inv_inv hnt:Nontrivial (Equiv.Perm (Fin 2))S:Set (Equiv.Perm (Fin 2))hS:Subgroup.closure S = ⊤u:Equiv.Perm (Fin 2)v:Equiv.Perm (Fin 2)hne:u ≠ vy:Equiv.Perm (Fin 2)hy:y ∈ Shy1:y ≠ 1h2:∀ (x y : Equiv.Perm (Fin 2)), x ≠ 1 → y ≠ 1 → x = y ∨ x = y⁻¹hg1:u⁻¹ * v ≠ 1h:u⁻¹ * v = y⁻¹⊢ y ∈ S hnt:Nontrivial (Equiv.Perm (Fin 2))key:∀ (S : Set (Equiv.Perm (Fin 2))), Subgroup.closure S = ⊤ → cayleyGraph S = ⊤⊢ groupDiam (Equiv.Perm (Fin 2)) = 1] hnt:Nontrivial (Equiv.Perm (Fin 2))S:Set (Equiv.Perm (Fin 2))hS:Subgroup.closure S = ⊤u:Equiv.Perm (Fin 2)v:Equiv.Perm (Fin 2)hne:u ≠ vy:Equiv.Perm (Fin 2)hy:y ∈ Shy1:y ≠ 1h2:∀ (x y : Equiv.Perm (Fin 2)), x ≠ 1 → y ≠ 1 → x = y ∨ x = y⁻¹hg1:u⁻¹ * v ≠ 1h:u⁻¹ * v = y⁻¹⊢ y ∈ S hnt:Nontrivial (Equiv.Perm (Fin 2))key:∀ (S : Set (Equiv.Perm (Fin 2))), Subgroup.closure S = ⊤ → cayleyGraph S = ⊤⊢ groupDiam (Equiv.Perm (Fin 2)) = 1) hnt:Nontrivial (Equiv.Perm (Fin 2))key:∀ (S : Set (Equiv.Perm (Fin 2))), Subgroup.closure S = ⊤ → cayleyGraph S = ⊤⊢ groupDiam (Equiv.Perm (Fin 2)) = 1
unfold groupDiam hnt:Nontrivial (Equiv.Perm (Fin 2))key:∀ (S : Set (Equiv.Perm (Fin 2))), Subgroup.closure S = ⊤ → cayleyGraph S = ⊤⊢ sSup {d | ∃ S, Subgroup.closure S = ⊤ ∧ (cayleyGraph S).diam = d} = 1
have h_eq : { d | ∃ S : Set (Equiv.Perm (Fin 2)),
Subgroup.closure S = ⊤ ∧ (cayleyGraph S).diam = d } = {1} := by ⊢ groupDiam (Equiv.Perm (Fin 2)) = 1 hnt:Nontrivial (Equiv.Perm (Fin 2))key:∀ (S : Set (Equiv.Perm (Fin 2))), Subgroup.closure S = ⊤ → cayleyGraph S = ⊤h_eq:{d | ∃ S, Subgroup.closure S = ⊤ ∧ (cayleyGraph S).diam = d} = {1}⊢ sSup {d | ∃ S, Subgroup.closure S = ⊤ ∧ (cayleyGraph S).diam = d} = 1
ext d hnt:Nontrivial (Equiv.Perm (Fin 2))key:∀ (S : Set (Equiv.Perm (Fin 2))), Subgroup.closure S = ⊤ → cayleyGraph S = ⊤d:ℕ⊢ d ∈ {d | ∃ S, Subgroup.closure S = ⊤ ∧ (cayleyGraph S).diam = d} ↔ d ∈ {1} hnt:Nontrivial (Equiv.Perm (Fin 2))key:∀ (S : Set (Equiv.Perm (Fin 2))), Subgroup.closure S = ⊤ → cayleyGraph S = ⊤h_eq:{d | ∃ S, Subgroup.closure S = ⊤ ∧ (cayleyGraph S).diam = d} = {1}⊢ sSup {d | ∃ S, Subgroup.closure S = ⊤ ∧ (cayleyGraph S).diam = d} = 1; simp only [Set.mem_ofPred_eq, Set.mem_singleton_iff] hnt:Nontrivial (Equiv.Perm (Fin 2))key:∀ (S : Set (Equiv.Perm (Fin 2))), Subgroup.closure S = ⊤ → cayleyGraph S = ⊤d:ℕ⊢ (∃ S, Subgroup.closure S = ⊤ ∧ (cayleyGraph S).diam = d) ↔ d = 1 hnt:Nontrivial (Equiv.Perm (Fin 2))key:∀ (S : Set (Equiv.Perm (Fin 2))), Subgroup.closure S = ⊤ → cayleyGraph S = ⊤h_eq:{d | ∃ S, Subgroup.closure S = ⊤ ∧ (cayleyGraph S).diam = d} = {1}⊢ sSup {d | ∃ S, Subgroup.closure S = ⊤ ∧ (cayleyGraph S).diam = d} = 1; constructor mp hnt:Nontrivial (Equiv.Perm (Fin 2))key:∀ (S : Set (Equiv.Perm (Fin 2))), Subgroup.closure S = ⊤ → cayleyGraph S = ⊤d:ℕ⊢ (∃ S, Subgroup.closure S = ⊤ ∧ (cayleyGraph S).diam = d) → d = 1mpr hnt:Nontrivial (Equiv.Perm (Fin 2))key:∀ (S : Set (Equiv.Perm (Fin 2))), Subgroup.closure S = ⊤ → cayleyGraph S = ⊤d:ℕ⊢ d = 1 → ∃ S, Subgroup.closure S = ⊤ ∧ (cayleyGraph S).diam = d hnt:Nontrivial (Equiv.Perm (Fin 2))key:∀ (S : Set (Equiv.Perm (Fin 2))), Subgroup.closure S = ⊤ → cayleyGraph S = ⊤h_eq:{d | ∃ S, Subgroup.closure S = ⊤ ∧ (cayleyGraph S).diam = d} = {1}⊢ sSup {d | ∃ S, Subgroup.closure S = ⊤ ∧ (cayleyGraph S).diam = d} = 1
· mp hnt:Nontrivial (Equiv.Perm (Fin 2))key:∀ (S : Set (Equiv.Perm (Fin 2))), Subgroup.closure S = ⊤ → cayleyGraph S = ⊤d:ℕ⊢ (∃ S, Subgroup.closure S = ⊤ ∧ (cayleyGraph S).diam = d) → d = 1 hnt:Nontrivial (Equiv.Perm (Fin 2))key:∀ (S : Set (Equiv.Perm (Fin 2))), Subgroup.closure S = ⊤ → cayleyGraph S = ⊤h_eq:{d | ∃ S, Subgroup.closure S = ⊤ ∧ (cayleyGraph S).diam = d} = {1}⊢ sSup {d | ∃ S, Subgroup.closure S = ⊤ ∧ (cayleyGraph S).diam = d} = 1 rintro ⟨S, hS, rfl⟩ mp hnt:Nontrivial (Equiv.Perm (Fin 2))key:∀ (S : Set (Equiv.Perm (Fin 2))), Subgroup.closure S = ⊤ → cayleyGraph S = ⊤S:Set (Equiv.Perm (Fin 2))hS:Subgroup.closure S = ⊤⊢ (cayleyGraph S).diam = 1 hnt:Nontrivial (Equiv.Perm (Fin 2))key:∀ (S : Set (Equiv.Perm (Fin 2))), Subgroup.closure S = ⊤ → cayleyGraph S = ⊤h_eq:{d | ∃ S, Subgroup.closure S = ⊤ ∧ (cayleyGraph S).diam = d} = {1}⊢ sSup {d | ∃ S, Subgroup.closure S = ⊤ ∧ (cayleyGraph S).diam = d} = 1; rw [key S hS, mp hnt:Nontrivial (Equiv.Perm (Fin 2))key:∀ (S : Set (Equiv.Perm (Fin 2))), Subgroup.closure S = ⊤ → cayleyGraph S = ⊤S:Set (Equiv.Perm (Fin 2))hS:Subgroup.closure S = ⊤⊢ ⊤.diam = 1 All goals completed! 🐙 hnt:Nontrivial (Equiv.Perm (Fin 2))key:∀ (S : Set (Equiv.Perm (Fin 2))), Subgroup.closure S = ⊤ → cayleyGraph S = ⊤h_eq:{d | ∃ S, Subgroup.closure S = ⊤ ∧ (cayleyGraph S).diam = d} = {1}⊢ sSup {d | ∃ S, Subgroup.closure S = ⊤ ∧ (cayleyGraph S).diam = d} = 1 SimpleGraph.diam_top mp hnt:Nontrivial (Equiv.Perm (Fin 2))key:∀ (S : Set (Equiv.Perm (Fin 2))), Subgroup.closure S = ⊤ → cayleyGraph S = ⊤S:Set (Equiv.Perm (Fin 2))hS:Subgroup.closure S = ⊤⊢ 1 = 1 All goals completed! 🐙 hnt:Nontrivial (Equiv.Perm (Fin 2))key:∀ (S : Set (Equiv.Perm (Fin 2))), Subgroup.closure S = ⊤ → cayleyGraph S = ⊤h_eq:{d | ∃ S, Subgroup.closure S = ⊤ ∧ (cayleyGraph S).diam = d} = {1}⊢ sSup {d | ∃ S, Subgroup.closure S = ⊤ ∧ (cayleyGraph S).diam = d} = 1] All goals completed! 🐙 hnt:Nontrivial (Equiv.Perm (Fin 2))key:∀ (S : Set (Equiv.Perm (Fin 2))), Subgroup.closure S = ⊤ → cayleyGraph S = ⊤h_eq:{d | ∃ S, Subgroup.closure S = ⊤ ∧ (cayleyGraph S).diam = d} = {1}⊢ sSup {d | ∃ S, Subgroup.closure S = ⊤ ∧ (cayleyGraph S).diam = d} = 1
· mpr hnt:Nontrivial (Equiv.Perm (Fin 2))key:∀ (S : Set (Equiv.Perm (Fin 2))), Subgroup.closure S = ⊤ → cayleyGraph S = ⊤d:ℕ⊢ d = 1 → ∃ S, Subgroup.closure S = ⊤ ∧ (cayleyGraph S).diam = d hnt:Nontrivial (Equiv.Perm (Fin 2))key:∀ (S : Set (Equiv.Perm (Fin 2))), Subgroup.closure S = ⊤ → cayleyGraph S = ⊤h_eq:{d | ∃ S, Subgroup.closure S = ⊤ ∧ (cayleyGraph S).diam = d} = {1}⊢ sSup {d | ∃ S, Subgroup.closure S = ⊤ ∧ (cayleyGraph S).diam = d} = 1 rintro rfl mpr hnt:Nontrivial (Equiv.Perm (Fin 2))key:∀ (S : Set (Equiv.Perm (Fin 2))), Subgroup.closure S = ⊤ → cayleyGraph S = ⊤⊢ ∃ S, Subgroup.closure S = ⊤ ∧ (cayleyGraph S).diam = 1 hnt:Nontrivial (Equiv.Perm (Fin 2))key:∀ (S : Set (Equiv.Perm (Fin 2))), Subgroup.closure S = ⊤ → cayleyGraph S = ⊤h_eq:{d | ∃ S, Subgroup.closure S = ⊤ ∧ (cayleyGraph S).diam = d} = {1}⊢ sSup {d | ∃ S, Subgroup.closure S = ⊤ ∧ (cayleyGraph S).diam = d} = 1
exact ⟨Set.univ, Subgroup.closure_univ, by hnt:Nontrivial (Equiv.Perm (Fin 2))key:∀ (S : Set (Equiv.Perm (Fin 2))), Subgroup.closure S = ⊤ → cayleyGraph S = ⊤⊢ (cayleyGraph Set.univ).diam = 1 hnt:Nontrivial (Equiv.Perm (Fin 2))key:∀ (S : Set (Equiv.Perm (Fin 2))), Subgroup.closure S = ⊤ → cayleyGraph S = ⊤h_eq:{d | ∃ S, Subgroup.closure S = ⊤ ∧ (cayleyGraph S).diam = d} = {1}⊢ sSup {d | ∃ S, Subgroup.closure S = ⊤ ∧ (cayleyGraph S).diam = d} = 1 rw [key _ Subgroup.closure_univ, hnt:Nontrivial (Equiv.Perm (Fin 2))key:∀ (S : Set (Equiv.Perm (Fin 2))), Subgroup.closure S = ⊤ → cayleyGraph S = ⊤⊢ ⊤.diam = 1 All goals completed! 🐙 hnt:Nontrivial (Equiv.Perm (Fin 2))key:∀ (S : Set (Equiv.Perm (Fin 2))), Subgroup.closure S = ⊤ → cayleyGraph S = ⊤h_eq:{d | ∃ S, Subgroup.closure S = ⊤ ∧ (cayleyGraph S).diam = d} = {1}⊢ sSup {d | ∃ S, Subgroup.closure S = ⊤ ∧ (cayleyGraph S).diam = d} = 1
SimpleGraph.diam_top hnt:Nontrivial (Equiv.Perm (Fin 2))key:∀ (S : Set (Equiv.Perm (Fin 2))), Subgroup.closure S = ⊤ → cayleyGraph S = ⊤⊢ 1 = 1 All goals completed! 🐙 hnt:Nontrivial (Equiv.Perm (Fin 2))key:∀ (S : Set (Equiv.Perm (Fin 2))), Subgroup.closure S = ⊤ → cayleyGraph S = ⊤h_eq:{d | ∃ S, Subgroup.closure S = ⊤ ∧ (cayleyGraph S).diam = d} = {1}⊢ sSup {d | ∃ S, Subgroup.closure S = ⊤ ∧ (cayleyGraph S).diam = d} = 1] All goals completed! 🐙 hnt:Nontrivial (Equiv.Perm (Fin 2))key:∀ (S : Set (Equiv.Perm (Fin 2))), Subgroup.closure S = ⊤ → cayleyGraph S = ⊤h_eq:{d | ∃ S, Subgroup.closure S = ⊤ ∧ (cayleyGraph S).diam = d} = {1}⊢ sSup {d | ∃ S, Subgroup.closure S = ⊤ ∧ (cayleyGraph S).diam = d} = 1⟩ hnt:Nontrivial (Equiv.Perm (Fin 2))key:∀ (S : Set (Equiv.Perm (Fin 2))), Subgroup.closure S = ⊤ → cayleyGraph S = ⊤h_eq:{d | ∃ S, Subgroup.closure S = ⊤ ∧ (cayleyGraph S).diam = d} = {1}⊢ sSup {d | ∃ S, Subgroup.closure S = ⊤ ∧ (cayleyGraph S).diam = d} = 1
rw [h_eq, hnt:Nontrivial (Equiv.Perm (Fin 2))key:∀ (S : Set (Equiv.Perm (Fin 2))), Subgroup.closure S = ⊤ → cayleyGraph S = ⊤h_eq:{d | ∃ S, Subgroup.closure S = ⊤ ∧ (cayleyGraph S).diam = d} = {1}⊢ sSup {1} = 1 All goals completed! 🐙 csSup_singleton hnt:Nontrivial (Equiv.Perm (Fin 2))key:∀ (S : Set (Equiv.Perm (Fin 2))), Subgroup.closure S = ⊤ → cayleyGraph S = ⊤h_eq:{d | ∃ S, Subgroup.closure S = ⊤ ∧ (cayleyGraph S).diam = d} = {1}⊢ 1 = 1 All goals completed! 🐙] All goals completed! 🐙Babai–Seress Conjecture (Conjecture 1.5): There exists an absolute constant $C$ such that the diameter of the alternating group $A_n$ satisfies $$\operatorname{diam}(A_n) \leq n^C.$$
@[category research open, AMS 5 20 68]
theorem babai_seress_conjecture_alternating :
∃ C : ℕ, ∀ n : ℕ,
(groupDiam (alternatingGroup (Fin n)) : ℝ) ≤ (n : ℝ) ^ C := by ⊢ ∃ C, ∀ (n : ℕ), ↑(groupDiam ↥(alternatingGroup (Fin n))) ≤ ↑n ^ C
sorry All goals completed! 🐙Babai–Seress Conjecture (Conjecture 1.7): There exists an absolute constant $C$ such that every finite simple non-abelian group $G$ satisfies $$\operatorname{diam}(G) \leq (\log |G|)^C.$$
@[category research open, AMS 5 20 68]
theorem babai_seress_conjecture :
∃ C : ℕ,
∀ (G : Type) [Group G] [Fintype G] [IsSimpleGroup G],
(∃ a b : G, a * b ≠ b * a) →
(groupDiam G : ℝ) ≤ (Real.log (Fintype.card G : ℝ)) ^ C := by ⊢ ∃ C,
∀ (G : Type) [inst : Group G] [inst_1 : Fintype G] [IsSimpleGroup G],
(∃ a b, a * b ≠ b * a) → ↑(groupDiam G) ≤ Real.log ↑(Fintype.card G) ^ C
sorry All goals completed! 🐙end BabaiSeressConjectures