The native maximum of a subtree bound and an optional incoming key.
Equations
- Hex.GraphIso.Nauty.Sparse.incMax none bound = bound
- Hex.GraphIso.Nauty.Sparse.incMax (some key) bound = key.max bound
Instances For
theorem
Hex.GraphIso.Nauty.Sparse.Grows.incMax
{n : Nat}
(before : Option (Key n))
(bound : Key n)
:
Grows before (Option.some (Sparse.incMax before bound))
theorem
Hex.GraphIso.Nauty.Sparse.Covers.incMax
{n : Nat}
(before : Option (Key n))
(bound : Key n)
:
Covers bound (some (Sparse.incMax before bound))
theorem
Hex.GraphIso.Nauty.Sparse.Bounded.absorb
{n : Nat}
{child parent : Key n}
{before after : Option (Key n)}
(h : Bounded child before after)
(hc : child.Le (incMax before parent))
:
Bounded parent before after
A child may be bounded by the incoming incumbent as well as the parent subtree. This is needed for dominated, hinted target choices.
theorem
Hex.GraphIso.Nauty.Sparse.Bounded.exact
{n : Nat}
{bound : Key n}
{before after : Option (Key n)}
(h : Bounded bound before after)
(hc : Covers bound after)
:
Coverage of the frozen bound and the upper invariant determine the exact native maximum, including calls made before the first incumbent.
def
Hex.GraphIso.Nauty.Sparse.ExitCover
{n : Nat}
(bound : Key n)
(best : Option (Key n))
(stop : Nat)
(witness : Nat → Option (Key n) → Prop)
:
A completed exit covers its frozen subtree. A return to an earlier ancestor carries the witness for that ancestor; fuel exhaustion asserts neither kind of coverage and is excluded by production totality.
Equations
- One or more equations did not get rendered due to their size.
- Hex.GraphIso.Nauty.Sparse.ExitCover bound best stop witness Hex.GraphIso.Nauty.Generic.Exit.done = Hex.GraphIso.Nauty.Sparse.Covers bound best
- Hex.GraphIso.Nauty.Sparse.ExitCover bound best stop witness Hex.GraphIso.Nauty.Generic.Exit.fuel = True
Instances For
theorem
Hex.GraphIso.Nauty.Sparse.MaxResult.finish
{n : Nat}
{bound : Key n}
{before after : Option (Key n)}
{stop parent : Nat}
{witness : Nat → Option (Key n) → Prop}
(h : MaxResult bound before after stop witness Generic.Exit.done)
:
MaxResult bound before after parent witness (Generic.Exit.unwind parent false)
theorem
Hex.GraphIso.Nauty.Sparse.MaxResult.ascend
{n : Nat}
{bound : Key n}
{before after : Option (Key n)}
{level target : Nat}
{short : Bool}
{witness : Nat → Option (Key n) → Prop}
(h : MaxResult bound before after level witness (Generic.Exit.unwind target short))
(ht : target < level)
(hresolve : witness (level - 1) after → Covers bound after)
:
MaxResult bound before after (level - 1) witness (Generic.Exit.unwind target short)
theorem
Hex.GraphIso.Nauty.Sparse.MaxResult.root
{n : Nat}
{bound : Key n}
{before after : Option (Key n)}
{witness : Nat → Option (Key n) → Prop}
{exit : Generic.Exit}
(h : MaxResult bound before after 0 witness exit)
(hfuel : exit ≠ Generic.Exit.fuel)
:
At the root, production's no-exhaustion theorem rules out the only exit without coverage; there is no earlier ancestor witness to discharge.