The finite array represented by a vertex renaming.
Equations
- Hex.GraphIso.Nauty.renamingArray sigma = Array.ofFn fun (i : Fin n) => sigma.toFun ↑i
Instances For
theorem
Hex.GraphIso.Nauty.SubtreeOk.child_key_eq
{n : Nat}
{ctx : Ctx n}
{st : RefineSt n}
{tcLevel fuel level tc len numcells oU oV : Nat}
(hS : SubtreeOk ctx level st)
(hgsz : ctx.g.size = n)
(hsymm : ∀ (u v : Nat), u < n → v < n → ctx.g[u]!.mem v = ctx.g[v]!.mem u)
(hloop : ∀ (v : Nat), v < n → ctx.g[v]!.mem v = false)
(hcell : IsCell st.ptn level tc len)
(hlen : 2 ≤ len)
(hrange : tc + len ≤ n)
(hoU : oU < len)
(hoV : oV < len)
(hfuel : level + 1 + fuel ≤ n + 1)
:
At a small-cell node, every two members of a non-singleton cell have
equal semantic child subtrees. This packages the geometric flip as the
concrete checked, cell-stabilizing array expected by childKey_of_carried.
theorem
Hex.GraphIso.Nauty.SubtreeOk.node_key
{n : Nat}
{ctx : Ctx n}
{lab ptn : Array Nat}
{active : VSet n}
{tcLevel fuel level numcells o : Nat}
(hS : SubtreeOk ctx level (refine ctx level lab ptn active numcells))
(hgsz : ctx.g.size = n)
(hsymm : ∀ (u v : Nat), u < n → v < n → ctx.g[u]!.mem v = ctx.g[v]!.mem u)
(hloop : ∀ (v : Nat), v < n → ctx.g[v]!.mem v = false)
(hdisc : discreteAt (refine ctx level lab ptn active numcells).ptn level n = false)
(ho :
o < (specMaketargetcell ctx (refine ctx level lab ptn active numcells).lab
(refine ctx level lab ptn active numcells).ptn level tcLevel).snd.snd)
(hfuel : level + 1 + fuel ≤ n + 1)
(stem : List Nat)
:
Below a small-cell node, the specification maximum is the subtree of any member of its target cell, with the node's refinement code prefixed.