Documentation

HexGraphIso.Sparse.Kernel

Sorted neighbour literals, with one list per vertex.

Equations
Instances For
    theorem Hex.GraphIso.Sparse.Kernel.atD_perm {n : Nat} (p : Perm n) (i : Fin n) :
    atD (List.map Fin.val p.vec.toList) (↑i) 0 = ↑(p.get i)
    theorem Hex.GraphIso.Sparse.Kernel.atD_color {n k : Nat} (c : Coloring n k) (i : Fin n) :
    atD (List.map Fin.val c.cells.toList) (↑i) 0 = ↑c.cells[i]
    def Hex.GraphIso.Sparse.Kernel.checkIso (n : Nat) (rowsA rowsB : List (List Nat)) (cellsA cellsB images : List Nat) :

    Validate a forward transporter on sparse literals. Sorting each mapped neighbour list checks exact row equality without scanning non-edges. The accompanying soundness theorem requires a checked permutation and equalities identifying all literals with their original graph data.

    Equations
    • One or more equations did not get rendered due to their size.
    Instances For

      Every genuine transporter passes the sparse literal checker.

      theorem Hex.GraphIso.Sparse.Kernel.isIso_of_checkIso {n k : Nat} {G H : Colored n k} {p : Perm n} {RA RB : List (List Nat)} {CA CB PL : List Nat} (hA : rows G.graph = RA) (hB : rows H.graph = RB) (hcA : List.map Fin.val G.coloring.cells.toList = CA) (hcB : List.map Fin.val H.coloring.cells.toList = CB) (hp : List.map Fin.val p.vec.toList = PL) (hchk : checkIso n RA RB CA CB PL = true) :
      IsIso G H p

      A kernel check on identified sparse literals proves the transporter.

      theorem Hex.GraphIso.Sparse.Kernel.isomorphic_of_checkIso {n k : Nat} {G H : Colored n k} {p : Perm n} {RA RB : List (List Nat)} {CA CB PL : List Nat} (hA : rows G.graph = RA) (hB : rows H.graph = RB) (hcA : List.map Fin.val G.coloring.cells.toList = CA) (hcB : List.map Fin.val H.coloring.cells.toList = CB) (hp : List.map Fin.val p.vec.toList = PL) (hchk : checkIso n RA RB CA CB PL = true) :

      Literal and native checking agree on the same checked permutation.