hex

36.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