Dense Gaussian elimination over the Boolean ring #
Each equation consists of a Boolean coefficient row and a Boolean right-hand side. A column
step selects a row whose leading coefficient is one, adds it to all other rows with leading
coefficient one, and drops the column. The selected row becomes 0 = 0; retaining it keeps the
number of equations fixed. If the column is zero, the step simply drops it. Repeating once per
column leaves only constant equations. This is the elimination argument following Theorem 4.3
of [Che06], printed p. 16 (arXiv version 1).
The native multi-tape certificate composes the library's list operations and bounded iteration. Every step weakly decreases the complete encoded state length, including on malformed rows. The explicit width is unary; coefficient words and right-hand sides use their ordinary binary encodings. Inputs with a row of a different width are rejected.
Main definitions #
Cslib.Complexity.XORSAT.Dense.Row: Boolean coefficient word and right-hand side.Cslib.Complexity.XORSAT.Dense.Input: declared variable width and dense equation rows.Cslib.Complexity.XORSAT.Dense.step: one elimination column.Cslib.Complexity.XORSAT.Dense.decide: the dense-system decision algorithm.
A dense parity equation row with a Boolean coefficient word and Boolean right-hand side.
The Boolean coefficient word, one entry per declared variable column.
- rhs : Bool
The Boolean right-hand side of the parity equation.
Instances For
Instances For
A list of dense equations.
Instances For
Instances For
Every row has the declared number of coefficients.
Instances For
A solution has exactly the declared width.
Instances For
Substitute the first variable using a pivot equation, then drop that variable.
Instances For
One column of Gaussian elimination. A missing pivot means that the column is zero.
Instances For
Check the row widths, eliminate all columns, then reject a remaining equation 0 = 1.
Instances For
One elimination column preserves existence of a solution.
The actual Gaussian-elimination decider is computable in polynomial time on native multi-tape Turing machines, with unary width and raw binary coefficient words.