Skip to content

Commit b5f2e73

Browse files
committed
feat(Archive): voltage graphs on K₂, Heawood and Möbius-Kantor graphs
Defines voltageGraphK2, a cubic covering construction over ZMod m, and two instances: the Heawood graph (Z₇, voltages {0,4,6}) and the Möbius-Kantor graph (Z₈, voltages {0,1,3}). Both quotient to K₂ under the fibre projection.
1 parent 1510488 commit b5f2e73

2 files changed

Lines changed: 121 additions & 0 deletions

File tree

Archive.lean

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ import Archive.MiuLanguage.DecisionNec
6767
import Archive.MiuLanguage.DecisionSuf
6868
import Archive.OxfordInvariants.Summer2021.Week3P1
6969
import Archive.Sensitivity
70+
import Archive.VoltageGraphs
7071
import Archive.Wiedijk100Theorems.AbelRuffini
7172
import Archive.Wiedijk100Theorems.AreaOfACircle
7273
import Archive.Wiedijk100Theorems.AscendingDescendingSequences

Archive/VoltageGraphs.lean

Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
/-
2+
Copyright (c) 2026 Robin Langer. All rights reserved.
3+
Released under Apache 2.0 license as described in the file LICENSE.
4+
Authors: Robin Langer
5+
-/
6+
import Mathlib.Combinatorics.SimpleGraph.QuotientGraph
7+
import Mathlib.Data.ZMod.Basic
8+
9+
/-!
10+
# Voltage graphs on K₂: Heawood and Möbius-Kantor graphs
11+
12+
A voltage graph on K₂ with cyclic group Zₘ and three voltages {v₁, v₂, v₃}
13+
gives a cubic graph on 2m vertices. Vertices are `Fin 2 × ZMod m`, and
14+
`(0, g) ~ (1, g + vⱼ)` for each voltage.
15+
16+
Every cubic arc-transitive graph of small order arises this way:
17+
* Heawood (F014A): K₂ with Z₇, voltages {0, 4, 6}, 14 vertices
18+
* Möbius-Kantor (F016A): K₂ with Z₈, voltages {0, 1, 3}, 16 vertices
19+
20+
Both quotient to K₂ under the fibre projection `Prod.fst`.
21+
22+
## Main definitions
23+
24+
* `voltageGraphK2` — cubic voltage graph on K₂ with cyclic voltage group
25+
* `heawoodVoltage` — the Heawood graph (Levi graph of the Fano plane)
26+
* `mobiusKantorVoltage` — the Möbius-Kantor graph (GP(8,3))
27+
28+
## References
29+
30+
* Gross & Tucker, *Topological Graph Theory*, 1987
31+
* Robin Langer, *Symmetric Graphs and their Quotients*, arXiv:1306.4798
32+
-/
33+
34+
set_option linter.style.nativeDecide false
35+
36+
/-- A cubic voltage graph on K₂ with voltage group `ZMod m`.
37+
Three voltages v₁, v₂, v₃ give a cubic graph on 2m vertices.
38+
`(0, g) ~ (1, g + vⱼ)` for each voltage. -/
39+
def voltageGraphK2 (m : ℕ) [NeZero m]
40+
(v₁ v₂ v₃ : ZMod m) : SimpleGraph (Fin 2 × ZMod m) where
41+
Adj p q :=
42+
(p.1 = 0 ∧ q.1 = 1 ∧ q.2 - p.2 ∈ ({v₁, v₂, v₃} : Set (ZMod m))) ∨
43+
(p.1 = 1 ∧ q.1 = 0 ∧ p.2 - q.2 ∈ ({v₁, v₂, v₃} : Set (ZMod m)))
44+
symm := by
45+
intro p q hpq
46+
rcases hpq with ⟨hp, hq, hv⟩ | ⟨hp, hq, hv⟩
47+
· exact Or.inr ⟨hq, hp, hv⟩
48+
· exact Or.inl ⟨hq, hp, hv⟩
49+
loopless := ⟨fun p hp => by
50+
rcases hp with ⟨hp, hq, _⟩ | ⟨hp, hq, _⟩ <;> simp [hp] at hq⟩
51+
52+
/-! ### The Heawood graph -/
53+
54+
/-- The **Heawood graph**: voltage graph on K₂ with Z₇ voltages {0, 4, 6}.
55+
Levi graph of the Fano plane PG(2,2). 14 vertices, cubic, girth 6.
56+
Sab(G₄₂, C₃) where G₄₂ = Z₇ ⋊ Z₆. -/
57+
def heawoodVoltage : SimpleGraph (Fin 2 × ZMod 7) :=
58+
voltageGraphK2 7 0 4 6
59+
60+
instance : DecidableRel heawoodVoltage.Adj := by
61+
intro p q; unfold heawoodVoltage voltageGraphK2; simp only; exact instDecidableOr
62+
63+
/-- The Heawood graph is 3-regular. -/
64+
theorem heawoodVoltage_regular :
65+
∀ v : Fin 2 × ZMod 7,
66+
(Finset.univ.filter fun w => heawoodVoltage.Adj v w).card = 3 := by
67+
native_decide
68+
69+
/-- The Heawood graph has 42 directed edges (21 undirected). -/
70+
theorem heawoodVoltage_directedEdges :
71+
(Finset.univ.filter fun p : (Fin 2 × ZMod 7) × (Fin 2 × ZMod 7) =>
72+
heawoodVoltage.Adj p.1 p.2).card = 42 := by
73+
native_decide
74+
75+
/-! ### The Möbius-Kantor graph -/
76+
77+
/-- The **Möbius-Kantor graph**: voltage graph on K₂ with Z₈ voltages {0, 1, 3}.
78+
GP(8,3), the generalised Petersen graph. 16 vertices, cubic, girth 6.
79+
Sab(GL(2,3), C₃). -/
80+
def mobiusKantorVoltage : SimpleGraph (Fin 2 × ZMod 8) :=
81+
voltageGraphK2 8 0 1 3
82+
83+
instance : DecidableRel mobiusKantorVoltage.Adj := by
84+
intro p q; unfold mobiusKantorVoltage voltageGraphK2; simp only; exact instDecidableOr
85+
86+
/-- The Möbius-Kantor graph is 3-regular. -/
87+
theorem mobiusKantorVoltage_regular :
88+
∀ v : Fin 2 × ZMod 8,
89+
(Finset.univ.filter fun w => mobiusKantorVoltage.Adj v w).card = 3 := by
90+
native_decide
91+
92+
/-- The Möbius-Kantor graph has 48 directed edges (24 undirected). -/
93+
theorem mobiusKantorVoltage_directedEdges :
94+
(Finset.univ.filter fun p : (Fin 2 × ZMod 8) × (Fin 2 × ZMod 8) =>
95+
mobiusKantorVoltage.Adj p.1 p.2).card = 48 := by
96+
native_decide
97+
98+
/-! ### Fibre quotients to K₂ -/
99+
100+
instance : DecidableRel (heawoodVoltage.quotientGraph
101+
(Prod.fst : Fin 2 × ZMod 7 → Fin 2)).Adj := by
102+
intro i j; unfold SimpleGraph.quotientGraph; simp only; exact instDecidableAnd
103+
104+
/-- The Heawood graph quotients to K₂ under the fibre projection. -/
105+
theorem heawoodVoltage_quotient_complete :
106+
∀ i j : Fin 2, i ≠ j →
107+
(heawoodVoltage.quotientGraph
108+
(Prod.fst : Fin 2 × ZMod 7 → Fin 2)).Adj i j := by
109+
native_decide
110+
111+
instance : DecidableRel (mobiusKantorVoltage.quotientGraph
112+
(Prod.fst : Fin 2 × ZMod 8 → Fin 2)).Adj := by
113+
intro i j; unfold SimpleGraph.quotientGraph; simp only; exact instDecidableAnd
114+
115+
/-- The Möbius-Kantor graph quotients to K₂ under the fibre projection. -/
116+
theorem mobiusKantorVoltage_quotient_complete :
117+
∀ i j : Fin 2, i ≠ j →
118+
(mobiusKantorVoltage.quotientGraph
119+
(Prod.fst : Fin 2 × ZMod 8 → Fin 2)).Adj i j := by
120+
native_decide

0 commit comments

Comments
 (0)