Every member of all is either covered already or has the same value as
a no-larger member of live. The decreasing rank lets successive
automorphism filters compose even when a new carrier lands outside the
set the previous filter left.
Equations
- Hex.GraphIso.Nauty.ChildCover key rank all done live = Hex.GraphIso.Nauty.RelCover (fun (x y : Nat) => key x = key y) rank all done live
Instances For
One filtering step composes coverage transitively.
Enlarging the covered set preserves coverage.
Filtering the live set preserves coverage when every removed survivor repeats a no-larger survivor of the new set.
Resolving one filtered survivor may appeal to the coverage relation of the previous live set. Strict rank descent at every newly removed live vertex makes that recursion well founded.
A descending filter preserves ranked coverage even when a carrier lands outside the live set it started from.
Coverage transfers a common upper bound from covered children to all original children.
Coverage transfers a common upper bound when both the absorbed children and the surviving live representatives lie below it. This is the form a frozen comparison unwind uses: the ledger already covers the visited prefix, and the frozen code verdict covers the siblings the unwind skips.