Representative columns for the sig j = sig k equivalence on
{0, …, r-1}: the columns whose signature has not been seen at any
earlier column. The list is ascending by construction.
Equations
- HexBerlekampZassenhausMathlib.BHKS.representativeColumns r sig = List.filter (fun (j : ℕ) => (List.filter (fun (k : ℕ) => decide (sig k = sig j)) (List.range j)).isEmpty) (List.range r)
Instances For
Canonical partition of {0, …, r-1} by signature equivalence: one
class per representative column, listing exactly the columns with the
same signature as that representative. Classes appear in ascending
representative order; each class's member list is ascending.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The full (signature, members) payload after folding
Hex.bhksInsertSignatureClass over List.range r. Each pair pairs a
representative column's signature with the ascending list of columns
sharing that signature.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Forgetting the signatures in partitionAcc leaves the canonical
min-column partition.
If acc = l ++ (s, members) :: r and no entry of l carries
signature s, then Hex.bhksInsertSignatureClass s j acc replaces the
single matching entry's member list with members ++ [j].
Representative columns lie in {0, …, m-1}.
Filtering List.range (m + 1) splits as filtering range m plus
the trailing element.
The members list of the entry for rep in partitionAcc (m + 1) sig
factors as the members at step m plus m itself if sig m = sig rep.
If signatures are decidably distinct at rep and m, the
partitionAcc m sig entry for rep extends trivially to step m + 1.
Decompose representativeColumns m sig around a known representative
k₀ ∈ representativeColumns m sig. The list splits as the
representativeColumns k₀ sig prefix, then k₀, then a suffix of reps
in (k₀, m).
The inductive step: partitionAcc (m + 1) sig is one
bhksInsertSignatureClass application above partitionAcc m sig.
The fold over List.range r of Hex.bhksInsertSignatureClass produces
exactly the canonical partition accumulator.
Partition semantics of Hex.bhksInsertSignatureClass.
The classes emitted by folding Hex.bhksInsertSignatureClass over
List.range r form the canonical min-column partition of {0, …, r-1}
by signature equality.
Two columns of the RREF echelon matrix agree iff every vector in the original row span has equal entries at those columns.
This is the abstract row-span version of the executable
bhksColumnSignature comparison: equality of column slices of the echelon rows
is represented here by pointwise equality over the Fin n row index.