theorem
Hex.GraphIso.Nauty.breakout_segN_rest
{n : Nat}
{lab ptn : Array Nat}
{level tc len tv : Nat}
(hw : ∃ (k : Nat), tc ≤ k ∧ k < tc + len ∧ k < lab.size ∧ lab[k]! = tv)
(hlen : 0 < len)
(hsz : tc + len ≤ lab.size)
:
The remainder window after the rotation: the cell with its first occurrence of the value erased.
theorem
Hex.GraphIso.Nauty.breakout_cellsPerm_map
{n : Nat}
{σ : Renaming n}
{labV labU ptn : Array Nat}
{level tc e oV oU : Nat}
(hpsz : ptn.size = n)
(hVsz : labV.size = n)
(hUsz : labU.size = n)
(hend : ptn[ptn.size - 1]! ≤ level)
(hvals : ∀ (q : Nat), q < n → ptn[q]! ≤ level ∨ level + 1 < ptn[q]!)
(hcp : cellsPerm ptn level labV (Array.map σ.toFun labU))
(hcell : (tc, e) ∈ cells ptn level n)
(hne : tc < e)
(hoV : oV ≤ e - tc)
(hoU : oU ≤ e - tc)
(hvv : labV[tc + oV]! = σ.toFun labU[tc + oU]!)
:
Individualizing corresponding vertices preserves the renamed cell equivalence on the split partition.
The facts carried at every node of the subtree: state well-formedness, an injective labelling, and the partition-value dichotomy (closed at the level or the open marker).
- ok : StOk n level st
Instances For
theorem
Hex.GraphIso.Nauty.stPerm_child
{n : Nat}
{ctx : Ctx n}
{σ : Renaming n}
{V U : RefineSt n}
{level tc e oV oU : Nat}
(hg : RowsMap σ ctx.g ctx.g)
(hsp : StPerm level V (mapSt σ U))
(hU : IterOk ctx level U)
(hcell : (tc, e) ∈ cells U.ptn level n)
(hne : tc < e)
(hoV : oV ≤ e - tc)
(hoU : oU ≤ e - tc)
(hvv : V.lab[tc + oV]! = σ.toFun U.lab[tc + oU]!)
:
Cell equivalence up to a row-preserving renaming survives individualizing corresponding vertices and refining.
A descent: a sequence of individualize-and-refine steps, each at a nontrivial cell of the current partition.
- refl {n : Nat} {ctx : Ctx n} (level : Nat) (st : RefineSt n) : Descends ctx level st level st
- step {n : Nat} {ctx : Ctx n} {level level' : Nat} {st st' : RefineSt n} (tc e o : Nat) (hlvl : level < n) (hcell : (tc, e) ∈ cells st.ptn level n) (hne : tc < e) (ho : o ≤ e - tc) (htail : Descends ctx (level + 1) (childSt ctx level st tc st.lab[tc + o]!) level' st') : Descends ctx level st level' st'