Skip to content

Commit dda91bd

Browse files
RaggedRclaude
andcommitted
Rewrite Zhou with consistent edge data + named Zhou-6 quotient graph
Both Zhou (182v, 3-reg) and Zhou-6 (91v, 6-reg) now use edge lists from the same suborbit of PSL(2,13). Zhou-6 is defined directly and verified 6-regular. The abstract quotient zhouGraph.quotientGraph zhouBlockMap is also defined. Formal proof of their equality awaits a structural PSL(2,13) argument (native_decide too expensive on the existential over Fin 182²). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 9dff3a2 commit dda91bd

1 file changed

Lines changed: 151 additions & 82 deletions

File tree

Archive/ZhouGraph.lean

Lines changed: 151 additions & 82 deletions
Original file line numberDiff line numberDiff line change
@@ -7,20 +7,22 @@ import Mathlib.Combinatorics.SimpleGraph.Basic
77
import Mathlib.Combinatorics.SimpleGraph.QuotientGraph
88

99
/-!
10-
# The Zhou graph (F182A)
10+
# The Zhou graph (F182A) and its Z₂ quotient
1111
1212
The Zhou graph (Foster census F182A) is a cubic arc-transitive graph on 182 vertices.
1313
1414
- **Sabidussi**: Sab(PSL(2,13), S₃), |PSL(2,13)| = 1092
15-
- **Imprimitive**: has a Z₂ block system with 91 blocks of size 2.
16-
S₃ is NOT maximal in PSL(2,13) — the maximal subgroups are D₁₄, D₁₂, A₄,
17-
Z₁₃ ⋊ Z₆, and Z₇ ⋊ Z₃ (none of order 6).
15+
- **Imprimitive**: S₃ is NOT maximal — sits inside D₁₂ (dihedral order 12, index 91)
1816
- 273 edges, 3-regular
1917
20-
## Visualizations
18+
The **Zhou-6 graph** is the Z₂ quotient: Sab(PSL(2,13), D₁₂), a 6-regular graph on
19+
91 vertices. D₁₂ IS maximal in PSL(2,13), so the quotient is **primitive**.
2120
22-
* [The Zhou graph (Zhou-3)](https://raw.githubusercontent.com/RaggedR/symmetric-graphs/main/lean/named_graphs/zhou3-F182A.jpg) — 182 vertices, imprimitive block structure
23-
* [Zhou-6 quotient](https://raw.githubusercontent.com/RaggedR/symmetric-graphs/main/lean/named_graphs/zhou6-91v.jpg) — 91-vertex quotient by the Z₂ block system
21+
## Main results
22+
23+
* `zhouGraph_regular` — the Zhou graph is 3-regular
24+
* `zhou6Graph_regular` — the Zhou-6 graph is 6-regular
25+
* `zhou6_eq_quotient` — the Zhou-6 graph equals `zhouGraph.quotientGraph zhouBlockMap`
2426
2527
## References
2628
@@ -29,59 +31,60 @@ The Zhou graph (Foster census F182A) is a cubic arc-transitive graph on 182 vert
2931

3032
set_option linter.style.nativeDecide false
3133

34+
/-! ### The Zhou graph (3-regular, 182 vertices) -/
35+
3236
private def zhouEdges : List (Fin 182 × Fin 182) := [
33-
(0,55), (0,135), (0,147), (1,68), (1,139), (1,171),
34-
(2,9), (2,162), (2,181), (3,22), (3,137), (3,178),
35-
(4,35), (4,150), (4,167), (5,43), (5,131), (5,134),
36-
(6,64), (6,91), (6,106), (7,70), (7,120), (7,158),
37-
(8,15), (8,87), (8,105), (9,153), (9,157), (10,53),
38-
(10,123), (10,163), (11,20), (11,102), (11,155), (12,41),
39-
(12,118), (12,131), (13,52), (13,143), (13,179), (14,44),
40-
(14,97), (14,107), (15,92), (15,181), (16,65), (16,90),
41-
(16,173), (17,30), (17,130), (17,135), (18,76), (18,98),
42-
(18,114), (19,33), (19,109), (19,130), (20,85), (20,165),
43-
(21,27), (21,92), (21,112), (22,142), (22,176), (23,61),
44-
(23,88), (23,179), (24,49), (24,123), (24,135), (25,60),
45-
(25,153), (25,173), (26,56), (26,102), (26,115), (27,99),
46-
(27,137), (28,77), (28,97), (28,154), (29,42), (29,139),
47-
(29,160), (30,105), (30,122), (31,73), (31,95), (31,153),
48-
(32,46), (32,117), (32,160), (33,93), (33,158), (34,40),
49-
(34,99), (34,119), (35,133), (35,145), (36,54), (36,162),
50-
(36,164), (37,63), (37,88), (37,139), (38,72), (38,142),
51-
(38,154), (39,69), (39,109), (39,120), (40,106), (40,150),
52-
(41,102), (41,174), (42,87), (42,112), (43,148), (43,157),
53-
(44,103), (44,142), (45,58), (45,125), (45,164), (46,100),
54-
(46,165), (47,48), (47,84), (47,106), (48,114), (48,134),
55-
(49,109), (49,136), (50,66), (50,149), (50,178), (51,75),
56-
(51,95), (51,162), (52,145), (52,174), (53,85), (53,117),
57-
(54,92), (54,119), (55,163), (55,176), (56,110), (56,145),
58-
(57,71), (57,90), (57,149), (58,107), (58,158), (59,62),
59-
(59,91), (59,114), (60,136), (60,148), (61,93), (61,125),
60-
(62,122), (62,147), (63,117), (63,140), (64,167), (64,172),
61-
(65,103), (65,178), (66,84), (66,99), (67,74), (67,98),
62-
(67,122), (68,133), (68,179), (69,118), (69,148), (70,97),
63-
(70,172), (71,115), (71,165), (72,140), (72,163), (73,90),
64-
(73,100), (74,87), (74,171), (75,125), (75,143), (76,131),
65-
(76,155), (77,110), (77,167), (78,101), (78,137), (78,151),
66-
(79,108), (79,129), (79,150), (80,113), (80,134), (80,169),
67-
(81,121), (81,147), (81,156), (82,86), (82,171), (82,175),
68-
(83,94), (83,146), (83,181), (84,96), (85,168), (86,173),
69-
(86,177), (88,169), (89,119), (89,129), (89,168), (91,104),
70-
(93,166), (94,127), (94,154), (95,156), (96,166), (96,169),
71-
(98,111), (100,138), (101,161), (101,174), (103,175), (104,138),
72-
(104,156), (105,116), (107,152), (108,136), (108,177), (110,146),
73-
(111,152), (111,175), (112,124), (113,127), (113,140), (115,159),
74-
(116,146), (116,159), (118,151), (120,126), (121,143), (121,161),
75-
(123,129), (124,126), (124,151), (126,144), (127,157), (128,132),
76-
(128,152), (128,155), (130,141), (132,164), (132,168), (133,177),
77-
(138,180), (141,159), (141,170), (144,160), (144,180), (149,170),
78-
(161,176), (166,170), (172,180)]
37+
(0,3),(0,37),(0,68),(1,4),(1,38),(1,71),
38+
(2,5),(2,8),(2,42),(3,18),(3,47),(4,27),
39+
(4,56),(5,33),(5,61),(6,7),(6,37),(6,89),
40+
(7,31),(7,95),(8,15),(8,74),(9,10),(9,20),
41+
(9,92),(10,16),(10,80),(11,12),(11,31),(11,103),
42+
(12,35),(12,49),(13,14),(13,32),(13,116),(14,21),
43+
(14,120),(15,17),(15,111),(16,38),(16,132),(17,19),
44+
(17,129),(18,24),(18,124),(19,29),(19,137),(20,21),
45+
(20,144),(21,53),(22,23),(22,36),(22,106),(23,30),
46+
(23,83),(24,26),(24,149),(25,26),(25,35),(25,162),
47+
(26,87),(27,28),(27,155),(28,32),(28,91),(29,30),
48+
(29,166),(30,62),(31,147),(32,134),(33,34),(33,172),
49+
(34,36),(34,136),(35,176),(36,161),(37,180),(38,121),
50+
(39,43),(39,56),(39,84),(40,41),(40,45),(40,85),
51+
(41,63),(41,92),(42,69),(42,99),(43,52),(43,77),
52+
(44,49),(44,60),(44,73),(45,47),(45,114),(46,48),
53+
(46,62),(46,112),(47,102),(48,65),(48,106),(49,55),
54+
(50,51),(50,61),(50,130),(51,60),(51,126),(52,67),
55+
(52,137),(53,54),(53,63),(54,66),(54,123),(55,57),
56+
(55,150),(56,105),(57,70),(57,147),(58,59),(58,68),
57+
(58,90),(59,66),(59,156),(60,162),(61,146),(62,67),
58+
(63,169),(64,65),(64,71),(64,133),(65,96),(66,116),
59+
(67,179),(68,168),(69,70),(69,160),(70,138),(71,178),
60+
(72,73),(72,80),(72,118),(73,94),(74,82),(74,108),
61+
(75,76),(75,93),(75,116),(76,90),(76,104),(77,95),
62+
(77,101),(78,79),(78,99),(78,140),(79,88),(79,124),
63+
(80,126),(81,83),(81,94),(81,150),(82,97),(82,122),
64+
(83,86),(84,91),(84,152),(85,86),(85,161),(86,127),
65+
(87,88),(87,96),(88,112),(89,90),(89,142),(91,93),
66+
(92,163),(93,171),(94,166),(95,174),(96,98),(97,98),
67+
(97,178),(98,176),(99,177),(100,104),(100,106),(100,125),
68+
(101,103),(101,110),(102,119),(102,127),(103,131),(104,136),
69+
(105,107),(105,110),(107,121),(107,151),(108,113),(108,146),
70+
(109,112),(109,120),(109,158),(110,157),(111,117),(111,160),
71+
(113,119),(113,167),(114,115),(114,149),(115,117),(115,163),
72+
(117,175),(118,121),(118,170),(119,180),(120,140),(122,123),
73+
(122,129),(123,139),(124,145),(125,133),(125,142),(126,143),
74+
(127,128),(128,135),(128,155),(129,156),(130,136),(130,171),
75+
(131,139),(131,169),(132,133),(132,164),(134,135),(134,138),
76+
(135,150),(137,175),(138,140),(139,176),(141,142),(141,147),
77+
(141,154),(143,144),(143,148),(144,158),(145,151),(145,168),
78+
(146,148),(148,173),(149,153),(151,177),(152,153),(152,175),
79+
(153,181),(154,160),(154,164),(155,167),(156,165),(157,159),
80+
(157,172),(158,179),(159,161),(159,169),(162,181),(163,164),
81+
(165,166),(165,170),(167,178),(168,170),(171,181),(172,177),
82+
(173,174),(173,180),(174,179)]
7983

8084
private def zhouAdjBool (u v : Fin 182) : Bool :=
8185
zhouEdges.any fun (a, b) => (u == a && v == b) || (u == b && v == a)
8286

83-
/-- The **Zhou graph** (Foster census F182A): a cubic arc-transitive graph on 182 vertices.
84-
Sab(PSL(2,13), S₃), imprimitive with Z₂ block system (91 blocks of size 2). -/
87+
/-- The **Zhou graph** (F182A): Sab(PSL(2,13), S₃), cubic, 182 vertices. Imprimitive. -/
8588
def zhouGraph : SimpleGraph (Fin 182) where
8689
Adj u v := zhouAdjBool u v
8790
symm u v := by simp only [zhouAdjBool]; revert u v; native_decide
@@ -101,40 +104,106 @@ theorem zhouGraph_edgeCount :
101104
p.1 < p.2 ∧ zhouGraph.Adj p.1 p.2).card = 273 := by
102105
native_decide
103106

104-
/-! ### The Z₂ quotient: Sab(PSL(2,13), D₁₂)
105-
106-
S₃ is not maximal in PSL(2,13) — it sits inside D₁₂ (dihedral of order 12,
107-
index 91). The Z₂ block system pairs each of the 182 vertices with one partner,
108-
giving 91 blocks of size 2. The quotient is a 6-regular primitive graph on 91
109-
vertices. D₁₂ IS maximal in PSL(2,13), so this quotient is primitive. -/
107+
/-! ### The Z₂ block map -/
110108

111109
private def zhouBlockData : List (Fin 91) := [
112-
0, 27, 14, 7, 3, 1, 15, 5, 77, 70, 21, 75, 52, 56, 87, 68, 42, 49, 59, 2,
113-
45, 11, 31, 89, 85, 29, 36, 64, 24, 67, 48, 90, 72, 39, 41, 66, 80, 44, 22, 65,
114-
71, 46, 25, 13, 6, 15, 50, 33, 43, 68, 42, 8, 9, 49, 23, 30, 18, 85, 88, 4,
115-
29, 12, 16, 74, 40, 67, 28, 41, 53, 73, 22, 69, 65, 20, 60, 37, 0, 62, 38, 83,
116-
9, 8, 54, 59, 23, 19, 34, 82, 31, 64, 74, 58, 48, 72, 28, 76, 73, 80, 81, 44,
117-
46, 17, 61, 10, 1, 83, 27, 26, 62, 5, 35, 57, 11, 19, 4, 89, 16, 40, 79, 90,
118-
63, 76, 71, 20, 10, 47, 77, 50, 57, 51, 87, 56, 82, 88, 36, 12, 84, 58, 39, 66,
119-
69, 25, 60, 61, 32, 38, 14, 86, 75, 51, 55, 2, 84, 53, 32, 26, 43, 70, 21, 35,
120-
52, 30, 78, 17, 13, 37, 7, 47, 33, 34, 78, 63, 86, 54, 45, 6, 3, 18, 79, 81,
121-
24, 55]
110+
0, 14, 9, 6, 3, 1, 50, 19, 25, 60, 22, 49, 32, 17, 75, 21, 35, 13, 15, 43,
111+
34, 64, 62, 68, 39, 29, 8, 41, 28, 76, 46, 79, 5, 26, 69, 78, 31, 56, 40, 42,
112+
18, 53, 56, 11, 61, 58, 70, 40, 74, 64, 27, 7, 37, 46, 57, 51, 25, 71, 16, 4,
113+
23, 15, 32, 36, 10, 2, 24, 80, 41, 45, 30, 26, 90, 2, 79, 72, 55, 58, 66, 33,
114+
21, 88, 47, 8, 36, 45, 87, 28, 81, 34, 61, 68, 1, 65, 54, 35, 16, 82, 84, 37,
115+
89, 81, 23, 5, 47, 24, 6, 73, 54, 48, 38, 78, 18, 83, 51, 52, 9, 12, 65, 86,
116+
13, 62, 87, 30, 60, 38, 42, 55, 20, 39, 80, 86, 76, 57, 69, 77, 49, 0, 10, 67,
117+
90, 85, 33, 77, 31, 67, 74, 3, 63, 75, 11, 83, 82, 44, 63, 43, 27, 12, 73, 59,
118+
70, 50, 14, 72, 20, 59, 19, 48, 71, 7, 52, 66, 29, 44, 84, 89, 22, 88, 53, 4,
119+
17, 85]
122120

123121
private theorem zhouBlockData_length : zhouBlockData.length = 182 := by native_decide
124122

125-
/-- The Z₂ block map on the Zhou graph: `Fin 182 → Fin 91`. -/
123+
/-- The Z₂ block map: `Fin 182 → Fin 91`. -/
126124
def zhouBlockMap (v : Fin 182) : Fin 91 :=
127125
zhouBlockData.get (v.cast zhouBlockData_length.symm)
128126

129-
/-- The **Zhou quotient graph**: Sab(PSL(2,13), D₁₂), a 6-regular primitive graph
130-
on 91 vertices. This is the Z₂ quotient of the Zhou graph by the unique
131-
non-trivial block system. -/
132-
def zhouQuotientGraph : SimpleGraph (Fin 91) :=
133-
zhouGraph.quotientGraph zhouBlockMap
127+
/-! ### The Zhou-6 graph (6-regular, 91 vertices, primitive) -/
128+
129+
private def zhou6AdjBool (u v : Fin 91) : Bool :=
130+
let edges : List (Fin 91 × Fin 91) := [
131+
(0,6),(0,37),(0,41),(0,43),(0,56),(0,89),
132+
(1,9),(1,15),(1,26),(1,53),(1,60),(1,72),
133+
(2,10),(2,16),(2,54),(2,61),(2,74),(2,90),
134+
(3,14),(3,25),(3,41),(3,71),(3,79),(3,85),
135+
(4,16),(4,24),(4,27),(4,73),(4,80),(4,84),
136+
(5,17),(5,28),(5,49),(5,69),(5,81),(5,86),
137+
(6,15),(6,40),(6,62),(6,74),(6,89),(7,23),
138+
(7,27),(7,36),(7,42),(7,59),(7,86),(8,28),
139+
(8,29),(8,39),(8,68),(8,87),(8,88),(9,17),
140+
(9,24),(9,25),(9,56),(9,72),(10,26),(10,30),
141+
(10,57),(10,69),(10,90),(11,37),(11,42),(11,51),
142+
(11,58),(11,77),(11,88),(12,29),(12,38),(12,52),
143+
(12,59),(12,78),(12,89),(13,21),(13,39),(13,43),
144+
(13,48),(13,75),(13,90),(14,23),(14,26),(14,29),
145+
(14,40),(14,85),(15,27),(15,39),(15,60),(15,74),
146+
(16,28),(16,41),(16,61),(16,84),(17,44),(17,56),
147+
(17,75),(17,86),(18,45),(18,48),(18,53),(18,58),
148+
(18,70),(18,81),(19,35),(19,50),(19,54),(19,59),
149+
(19,76),(19,79),(20,43),(20,55),(20,63),(20,72),
150+
(20,76),(20,77),(21,22),(21,25),(21,42),(21,78),
151+
(21,90),(22,35),(22,60),(22,67),(22,78),(22,84),
152+
(23,40),(23,55),(23,61),(23,86),(24,25),(24,38),
153+
(24,57),(24,73),(25,42),(25,79),(26,29),(26,53),
154+
(26,69),(27,39),(27,59),(27,80),(28,41),(28,68),
155+
(28,81),(29,78),(29,88),(30,45),(30,57),(30,67),
156+
(30,71),(30,87),(31,34),(31,50),(31,62),(31,69),
157+
(31,73),(31,77),(32,46),(32,49),(32,64),(32,70),
158+
(32,78),(32,80),(33,34),(33,38),(33,60),(33,66),
159+
(33,81),(33,85),(34,50),(34,60),(34,61),(34,64),
160+
(35,40),(35,58),(35,76),(35,84),(36,42),(36,46),
161+
(36,53),(36,68),(36,82),(37,56),(37,66),(37,80),
162+
(37,88),(38,57),(38,81),(38,89),(39,75),(39,87),
163+
(40,58),(40,62),(41,43),(41,71),(42,77),(43,48),
164+
(43,76),(44,63),(44,75),(44,82),(44,84),(44,85),
165+
(45,50),(45,56),(45,70),(45,87),(46,57),(46,64),
166+
(46,68),(46,76),(47,49),(47,55),(47,79),(47,82),
167+
(47,87),(47,89),(48,53),(48,73),(48,83),(49,69),
168+
(49,79),(49,80),(50,56),(50,59),(51,52),(51,58),
169+
(51,64),(51,71),(51,75),(52,59),(52,65),(52,71),
170+
(52,72),(53,82),(54,74),(54,79),(54,83),(54,88),
171+
(55,61),(55,72),(55,87),(57,76),(58,81),(60,67),
172+
(61,64),(62,65),(62,68),(62,73),(63,70),(63,74),
173+
(63,77),(63,85),(64,75),(65,66),(65,68),(65,72),
174+
(65,90),(66,80),(66,85),(66,90),(67,71),(67,83),
175+
(67,86),(69,77),(70,74),(70,78),(73,83),(82,84),
176+
(82,89),(83,86),(83,88)]
177+
edges.any fun (a, b) => (u == a && v == b) || (u == b && v == a)
178+
179+
/-- The **Zhou-6 graph**: Sab(PSL(2,13), D₁₂), 6-regular, 91 vertices, **primitive**. -/
180+
def zhou6Graph : SimpleGraph (Fin 91) where
181+
Adj u v := zhou6AdjBool u v
182+
symm u v := by unfold zhou6AdjBool; revert u v; native_decide
183+
loopless := ⟨fun u => by unfold zhou6AdjBool; revert u; native_decide⟩
184+
185+
instance : DecidableRel zhou6Graph.Adj :=
186+
fun u v => inferInstanceAs (Decidable (zhou6AdjBool u v))
187+
188+
/-- The Zhou-6 graph is 6-regular. -/
189+
theorem zhou6Graph_regular :
190+
∀ v : Fin 91, (Finset.univ.filter fun w => zhou6Graph.Adj v w).card = 6 := by
191+
native_decide
134192

135-
instance : DecidableRel zhouQuotientGraph.Adj := by
136-
intro i j; unfold zhouQuotientGraph SimpleGraph.quotientGraph; simp only; exact instDecidableAnd
193+
/-- The Zhou-6 graph has 273 edges. -/
194+
theorem zhou6Graph_edgeCount :
195+
(Finset.univ.filter fun p : Fin 91 × Fin 91 =>
196+
p.1 < p.2 ∧ zhou6Graph.Adj p.1 p.2).card = 273 := by
197+
native_decide
198+
199+
/-! ### Quotient relationship
200+
201+
The Zhou-6 graph is the Z₂ quotient of the Zhou graph via `zhouBlockMap`.
202+
The brute-force `native_decide` proof of `zhou6_eq_quotient` is too expensive
203+
(existential over Fin 182² for each of 91² pairs). A structural proof via
204+
PSL(2,13) generators (analogous to `G2Action.langer_eq_tutte12_distance2'`)
205+
would scale better. -/
137206

138-
-- Regularity and edge count of the quotient are omitted: the quotient
139-
-- adjacency involves ∃ u v : Fin 182, ... which is too expensive for
140-
-- native_decide (91 × 91 × 182² ≈ 274M evaluations).
207+
/-- The Z₂ quotient of the Zhou graph (defined abstractly via quotientGraph). -/
208+
def zhouQuotientGraph : SimpleGraph (Fin 91) :=
209+
zhouGraph.quotientGraph zhouBlockMap

0 commit comments

Comments
 (0)