Documentation

HexGraphIso.Nauty.Equitable.Cells

theorem Hex.GraphIso.Nauty.cellEnd_of_closed {ptn : Array Nat} {level i : Nat} (hi : i < ptn.size) (hc : ¬ptn[i]! > level) :
cellEnd ptn level i = i

A position with a closed partition entry is its own cell end.

theorem Hex.GraphIso.Nauty.cellEnd_succ_of_open {ptn : Array Nat} {level i : Nat} (hi : i < ptn.size) (ho : ptn[i]! > level) :
cellEnd ptn level i = cellEnd ptn level (i + 1)

A position with an open partition entry shares its cell end with its successor.

theorem Hex.GraphIso.Nauty.cellEnd_interior {ptn : Array Nat} {level i j : Nat} (hj : i j) (hlt : j < cellEnd ptn level i) :
ptn[j]! > level

Interior positions of a cell run are open.

theorem Hex.GraphIso.Nauty.mem_cells_iff {ptn : Array Nat} {level nn : Nat} (hnn : nn ptn.size) (hend : ptn[ptn.size - 1]! level) {c e : Nat} :
(c, e) cells ptn level nn c < nn (c = 0 ptn[c - 1]! level) e = cellEnd ptn level c

Membership in the cell list: a start below the bound paired with its cell end.

theorem Hex.GraphIso.Nauty.cellEnd_succ_congr {ptn : Array Nat} {level : Nat} (hvals : ∀ (q : Nat), q < ptn.sizeptn[q]! level level + 1 < ptn[q]!) (i : Nat) :
cellEnd ptn (level + 1) i = cellEnd ptn level i

Cell ends agree between adjacent levels when no entry sits at the intermediate value.

theorem Hex.GraphIso.Nauty.mem_cells_succ_congr {ptn : Array Nat} {level nn : Nat} (hnn : nn ptn.size) (hend : ptn[ptn.size - 1]! level) (hvals : ∀ (q : Nat), q < ptn.sizeptn[q]! level level + 1 < ptn[q]!) {c e : Nat} :
(c, e) cells ptn (level + 1) nn (c, e) cells ptn level nn

Cell membership agrees between adjacent levels when no entry sits at the intermediate value.

theorem Hex.GraphIso.Nauty.cells_eq_of_shared {ptn : Array Nat} {level nn : Nat} (hnn : nn ptn.size) (hend : ptn[ptn.size - 1]! level) {p q : Nat × Nat} (hp : p cells ptn level nn) (hq : q cells ptn level nn) {j : Nat} (hjp1 : p.fst j) (hjp2 : j p.snd) (hjq1 : q.fst j) (hjq2 : j q.snd) :
p = q

Two cells of the partition list sharing a position coincide.