Skip to content

Commit d7d8355

Browse files
RaggedRclaude
andcommitted
feat(Archive): Petersen graph is a Sabidussi coset graph
Add petersenSabidussiIso: the Petersen graph (defined as the antipodal quotient of the dodecahedron) is isomorphic to a coset graph via the Sabidussi representation theorem. S₅ (order 120) acts vertex-transitively with stabilizer S₂×S₃: petersenGraph ≃g Sab(S₅, S₂×S₃, D) with 10 = 120/12 vertices. Generators computed by GAP (GRAPE AutGroupGraph). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent d012db6 commit d7d8355

1 file changed

Lines changed: 47 additions & 0 deletions

File tree

Archive/NamedGraphs.lean

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -287,3 +287,50 @@ noncomputable def cubeSabidussiIso :
287287
(connectionSet cGroup cubeGraph 0) (connectionSet.isConnectionSet 0) :=
288288
sabidussiIso 0
289289
end CubeSabidussi
290+
291+
section PetersenSabidussi
292+
private def pG1F : Array (Fin 10) := #[2,1,7,6,3,9,5,0,4,8]
293+
private def pG1I : Array (Fin 10) := #[7,1,0,4,8,6,3,2,9,5]
294+
private def pG2F : Array (Fin 10) := #[3,4,0,5,6,2,9,8,7,1]
295+
private def pG2I : Array (Fin 10) := #[2,9,5,0,1,3,4,8,7,6]
296+
private theorem pG1F_s : pG1F.size = 10 := by native_decide
297+
private theorem pG1I_s : pG1I.size = 10 := by native_decide
298+
private theorem pG2F_s : pG2F.size = 10 := by native_decide
299+
private theorem pG2I_s : pG2I.size = 10 := by native_decide
300+
private def pG1 : Equiv.Perm (Fin 10) where
301+
toFun i := pG1F[i.val]'(by have := pG1F_s; omega)
302+
invFun i := pG1I[i.val]'(by have := pG1I_s; omega)
303+
left_inv := by native_decide
304+
right_inv := by native_decide
305+
private def pG2 : Equiv.Perm (Fin 10) where
306+
toFun i := pG2F[i.val]'(by have := pG2F_s; omega)
307+
invFun i := pG2I[i.val]'(by have := pG2I_s; omega)
308+
left_inv := by native_decide
309+
right_inv := by native_decide
310+
private def pGens : Fin 2 → Equiv.Perm (Fin 10) | 0 => pG1 | 1 => pG2
311+
private def pGroup : Subgroup (Equiv.Perm (Fin 10)) := Subgroup.closure (Set.range pGens)
312+
private def pWD : Array (List (Fin 4)) :=
313+
#[[], [1,2,3], [0], [1], [1,2], [0,3], [1,0], [2], [2,1], [0,3,0]]
314+
private theorem pWD_s : pWD.size = 10 := by native_decide
315+
private def pWit (v : Fin 10) : List (Fin 4) := pWD[v.val]'(by have := pWD_s; omega)
316+
private theorem pWit_ok :
317+
∀ v : Fin 10, applyWord' pGens (pWit v) 0 = v := by native_decide
318+
private noncomputable instance : MulAction pGroup (Fin 10) := MulAction.compHom _ pGroup.subtype
319+
private noncomputable instance : GraphAction pGroup (Fin 10) petersenGraph where
320+
adj_smul g u v h := closureGraphAction pGens
321+
(fun i => by match i with | 0 => exact (by native_decide) | 1 => exact (by native_decide))
322+
g.1 g.2 u v h
323+
private noncomputable instance : MulAction.IsPretransitive pGroup (Fin 10) where
324+
exists_smul_eq x y :=
325+
⟨⟨_, pGroup.mul_mem (applyWord'_mem pGens _) (pGroup.inv_mem (applyWord'_mem pGens _))⟩, by
326+
change ((applyWord' pGens (pWit x)).symm.trans (applyWord' pGens (pWit y))) x = y
327+
simp only [Equiv.trans_apply]
328+
rw [show (applyWord' pGens (pWit x)).symm x = 0 from by
329+
rw [Equiv.symm_apply_eq]; exact (pWit_ok x).symm]; exact pWit_ok y⟩
330+
331+
/-- **The Petersen graph is a Sabidussi coset graph**: `Sab(S₅, S₂×S₃, D)`. -/
332+
noncomputable def petersenSabidussiIso :
333+
petersenGraph ≃g SimpleGraph.cosetGraph (MulAction.stabilizer pGroup (0 : Fin 10))
334+
(connectionSet pGroup petersenGraph 0) (connectionSet.isConnectionSet 0) :=
335+
sabidussiIso 0
336+
end PetersenSabidussi

0 commit comments

Comments
 (0)