theorem
Hex.GraphIso.Nauty.rowsMap_of_isIso
{n k : Nat}
{G H : Colored n k}
{p : Perm n}
(h : IsIso G H p)
:
RowsMap (renamingOf p) (rowsOf G) (rowsOf H)
theorem
Hex.GraphIso.Nauty.nodup_colorClass
{n k : Nat}
(G : Colored n k)
(c : Nat)
:
(colorClass G c).Nodup
theorem
Hex.GraphIso.Nauty.colorClass_perm
{n k : Nat}
{G H : Colored n k}
{p : Perm n}
(h : IsIso G H p)
(c : Nat)
:
(colorClass H c).Perm (List.map (renamingOf p).toFun (colorClass G c))
theorem
Hex.GraphIso.Nauty.flatMap_filter_key_perm
(key : Nat → Nat)
(K : Nat)
(l : List Nat)
:
(∀ (v : Nat), v ∈ l → key v < K) →
(List.flatMap id (List.map (fun (c : Nat) => List.filter (fun (v : Nat) => key v == c) l) (List.range K))).Perm l
theorem
Hex.GraphIso.Nauty.flatten_classes_perm
{n k : Nat}
(G : Colored n k)
:
(List.flatMap id (List.map (colorClass G) (List.range k))).Perm (List.range n)
theorem
Hex.GraphIso.Nauty.labOk_initialPartition
{n k : Nat}
(G : Colored n k)
:
LabOk (initialPartition G).fst n
theorem
Hex.GraphIso.Nauty.foldl_ends_congr
(cls cls' : List (List Nat))
(acc : List Nat × Nat)
:
List.map List.length cls = List.map List.length cls' →
List.foldl
(fun (acc : List Nat × Nat) (cl : List Nat) =>
if cl.isEmpty = true then acc else ((acc.snd + cl.length - 1) :: acc.fst, acc.snd + cl.length))
acc cls = List.foldl
(fun (acc : List Nat × Nat) (cl : List Nat) =>
if cl.isEmpty = true then acc else ((acc.snd + cl.length - 1) :: acc.fst, acc.snd + cl.length))
acc cls'
theorem
Hex.GraphIso.Nauty.cellEnds_eq
{n k : Nat}
{G H : Colored n k}
{p : Perm n}
(h : IsIso G H p)
:
Total number of vertices across a list of classes.
Equations
- Hex.GraphIso.Nauty.totalOf cls = (List.map List.length cls).sum
Instances For
The recorded cell end positions of a list of classes laid out from
offset s: one entry per nonempty class.
Equations
Instances For
theorem
Hex.GraphIso.Nauty.endsOf_pairwise
(cls : List (List Nat))
(s : Nat)
:
List.Pairwise (fun (x1 x2 : Nat) => x1 < x2) (endsOf cls s)
theorem
Hex.GraphIso.Nauty.initial_cellsPerm
{n k : Nat}
{G H : Colored n k}
{p : Perm n}
(h : IsIso G H p)
(hn0 : 0 < n)
:
cellsPerm (initPtn n (n + 2) (initialPartition G).snd) 1 (initialPartition H).fst
(Array.map (renamingOf p).toFun (initialPartition G).fst)
theorem
Hex.GraphIso.Nauty.labOk_map_renaming
{n k : Nat}
(G : Colored n k)
(p : Perm n)
:
LabOk (Array.map (renamingOf p).toFun (initialPartition G).fst) n
theorem
Hex.GraphIso.Nauty.canonSpecKey_eq_of_isIso
{n k : Nat}
{G H : Colored n k}
{p : Perm n}
(h : IsIso G H p)
:
Isomorphic coloured graphs have the same nauty-semantic canonical key.
theorem
Hex.GraphIso.Nauty.canonSpecKey_eq_of_isomorphic
{n k : Nat}
{G H : Colored n k}
(h : Isomorphic G H)
:
Isomorphic coloured graphs have equal nauty-semantic canonical keys.