The non-strict ordering used by merge sort; the checker retains its separate strict comparison on image arrays.
Equations
- x.le y = (compare (Hex.PermGroup.Generator.images x.value) (Hex.PermGroup.Generator.images y.value)).isLE
Instances For
Remove adjacent equal values from a sorted list. Equal values keep the last input reference in their stable-sort block.
Equations
Instances For
theorem
Hex.PermGroup.Generator.compact_sorted
{n : Nat}
{S : Array (Perm n)}
(xs : List (Generator S))
(hs : List.Pairwise (fun (x y : Generator S) => x.le y = true) xs)
:
List.Pairwise (fun (x y : Generator S) => Chain.before x.value y.value) (compact xs)
Expand signed references in input-index order.
Equations
- Hex.PermGroup.Generator.candidates S = List.flatMap (fun (i : Fin S.size) => [Hex.PermGroup.Generator.ofIndex S i false, Hex.PermGroup.Generator.ofIndex S i true]) (List.finRange S.size)
Instances For
A normalized symmetric working array with checked provenance in the original input. Construction establishes both checker predicates unconditionally.
- words : Vector Program self.generators.size
- normalized : Chain.Normalized S self.generators
Instances For
Normalize without changing the original generator indexing used by programs.
Equations
- One or more equations did not get rendered due to their size.
Instances For
theorem
Hex.PermGroup.Normalized.symmetric
{n : Nat}
{S : Array (Perm n)}
(c : Normalized S)
(p : Perm n)
(hp : p ∈ c.generators)
:
theorem
Hex.PermGroup.Normalized.generated_iff
{n : Nat}
{S : Array (Perm n)}
(c : Normalized S)
(p : Perm n)
:
theorem
Hex.PermGroup.Normalized.fixed
{n : Nat}
{S : Array (Perm n)}
(c : Normalized S)
{base : Nat}
(h : Chain.Fixed base S)
:
Chain.Fixed base c.generators
def
Hex.PermGroup.Normalized.wordsFrom
{n : Nat}
{S : Array (Perm n)}
(c : Normalized S)
(words : Vector Program S.size)
:
Transfer provenance through the signed original references retained by normalization. Each output program uses one input program, optionally inverted.
Equations
Instances For
theorem
Hex.PermGroup.Normalized.check_wordsFrom
{n : Nat}
{S : Array (Perm n)}
(c : Normalized S)
{T : Array (Perm n)}
(words : Vector Program S.size)
(h : checkWords T S words = true)
: