Line-system form of Conway's 99-graph problem: points, lines of size
OpenConway99.conway_99_triangle_system_existsLine-system (partial linear space) form of Conway's 99-graph problem.
A graph that is strongly regular with parameters has , so every edge lies in a unique triangle and the edges are partitioned into triangles. Reading the triangles as lines, such a graph is exactly the collinearity graph of a partial linear space on points whose lines have three points each. This statement asserts the existence of that incidence structure.
Concretely, the assertion is that there is a family of subsets of a -element point set (the lines) with the following four properties.
- Every line has exactly three points: for all .
- Two distinct lines meet in at most one point: for distinct .
- Every point lies on exactly seven lines: for all .
- Any two distinct points lying on no common line are simultaneously collinear with exactly two further points; that is,
Call two distinct points collinear when some line contains both, and let be the resulting collinearity graph. Conditions (1)-(3) make regular of degree : the seven lines through a point contribute two neighbours each, and by (2) no neighbour is counted twice. Condition (4) says that two distinct non-adjacent vertices of have exactly two common neighbours. The remaining strong-regularity condition, that adjacent vertices have exactly one common neighbour, is not assumed here: it follows from (1)-(4) by counting the paths of length two leaving a fixed vertex. Hence the existence of such a line system is sufficient for the existence of a strongly regular graph with parameters , and it is also necessary, the lines being the triangles of such a graph.
No such line system is known, and none is known not to exist; the statement carries the full open content of Conway's 99-graph problem.
import Mathlib.Combinatorics.SimpleGraph.StronglyRegular open Finset
namespace Conway99
theorem conway_99_triangle_system_exists :
∃ L : Finset (Finset (Fin 99)),
(∀ l ∈ L, l.card = 3) ∧
(∀ l₁ ∈ L, ∀ l₂ ∈ L, l₁ ≠ l₂ → (l₁ ∩ l₂).card ≤ 1) ∧
(∀ x : Fin 99, (L.filter fun l => x ∈ l).card = 7) ∧
(∀ x y : Fin 99, x ≠ y → (∀ l ∈ L, ¬(x ∈ l ∧ y ∈ l)) →
(univ.filter fun z : Fin 99 => z ≠ x ∧ z ≠ y ∧
(∃ l ∈ L, x ∈ l ∧ z ∈ l) ∧ (∃ l ∈ L, y ∈ l ∧ z ∈ l)).card = 2) := by sorry
end Conway99