32.3. Ordered colours constrain isomorphisms
nauty's colours are ordered: an isomorphism preserves each colour index
and may not permute the cells. Marking an adjacent pair of Petersen
vertices with colour zero is therefore a different constraint from
marking a non-adjacent pair, although the cell sizes agree. Adjacency of
the colour-zero pair is an invariant, and the tactic's negative proof is
obtained from its general checked routes rather than a handwritten
special-purpose lemma. These claims do mention colours, so they are the
ones stated on Colored.
def markPair (a b : Fin 10) : Coloring 10 2 :=
(Coloring.ofVector? (Hex.Vector.ofFn' fun i =>
if i = a ∨ i = b then 0 else 1)).getD
(Coloring.mod 10 2)
-- 0-1 is an outer pentagon edge; 2-3 likewise;
-- 0-2 is a non-edge.
def edgeMarkA : Colored 10 2 := ⟨petersen, markPair 0 1⟩
def edgeMarkB : Colored 10 2 := ⟨petersen, markPair 2 3⟩
def nonedgeMark : Colored 10 2 := ⟨petersen, markPair 0 2⟩
example : Isomorphic edgeMarkA edgeMarkB := ⊢ Isomorphic edgeMarkA edgeMarkB All goals completed! 🐙
example : ¬ Isomorphic edgeMarkA nonedgeMark := ⊢ ¬Isomorphic edgeMarkA nonedgeMark All goals completed! 🐙
example : ¬ Isomorphic edgeMarkB nonedgeMark := ⊢ ¬Isomorphic edgeMarkB nonedgeMark All goals completed! 🐙
end HexGraphIsoChapterExample