Primitive components computed by fixed-space separation #
noncomputable def
MIPRE.LowDegree.BinaryLinear.groupFixedFamily
(k : ℕ)
[NeZero k]
:
List (AddMonoidAlgebra (ZMod 2) (Fin k))
The computed generators in their fixed deterministic order.
Equations
Instances For
noncomputable def
MIPRE.LowDegree.BinaryLinear.groupComponents
(k : ℕ)
[NeZero k]
:
List (AddMonoidAlgebra (ZMod 2) (Fin k))
Separate the components directly in the cyclic algebra, starting with the unit.
Equations
Instances For
theorem
MIPRE.LowDegree.BinaryLinear.groupFixedFamily_idempotent
(k : ℕ)
[NeZero k]
(b : AddMonoidAlgebra (ZMod 2) (Fin k))
:
b ∈ groupFixedFamily k → b * b = b
theorem
MIPRE.LowDegree.BinaryLinear.groupFixedFamily_spans
(k : ℕ)
[NeZero k]
(z : AddMonoidAlgebra (ZMod 2) (Fin k))
(hz : z * z = z)
:
theorem
MIPRE.LowDegree.BinaryLinear.groupComponents_primitive
(k : ℕ)
[NeZero k]
(e : AddMonoidAlgebra (ZMod 2) (Fin k))
:
e ∈ groupComponents k → PrimitiveBinaryComponent e
The computation has at most k nonzero components, despite repeatedly splitting them.
Canonical zero of the same raw width.
Equations
- MIPRE.LowDegree.BinaryLinear.zeroRow v = List.map (fun (x : Bool) => false) v
Instances For
Equations
Instances For
@[simp]
theorem
MIPRE.LowDegree.BinaryLinear.nonzeroRow_groupBits
(k : ℕ)
(z : AddMonoidAlgebra (ZMod 2) (Fin k))
:
One raw split uses cyclic multiplication and XOR, then omits zero vectors.
Equations
- One or more equations did not get rendered due to their size.
Instances For
theorem
MIPRE.LowDegree.BinaryLinear.splitBits_encoding
{k : ℕ}
[NeZero k]
(e b : AddMonoidAlgebra (ZMod 2) (Fin k))
:
splitBits (vectorBits ((groupCoordinates k) e)) (vectorBits ((groupCoordinates k) b)) = List.map (fun (z : AddMonoidAlgebra (ZMod 2) (Fin k)) => vectorBits ((groupCoordinates k) z)) (splitComponent e b)
Raw convolution always has the width of its first operand, including malformed inputs.
theorem
MIPRE.LowDegree.BinaryLinear.splitBits_width
(e b x : Cost.BitStr)
:
x ∈ splitBits e b → List.length x = List.length e
noncomputable def
MIPRE.LowDegree.BinaryLinear.splitBitsCapped
(u : Cost.Unary)
(l : List Cost.BitStr)
(b : Cost.BitStr)
:
Raw refinement is clipped to the unary dimension; on valid components this clip is inert.
Equations
- MIPRE.LowDegree.BinaryLinear.splitBitsCapped u l b = List.take (List.length u) (List.flatMap (fun (e : MIPRE.Cost.BitStr) => MIPRE.LowDegree.BinaryLinear.splitBits e b) l)
Instances For
theorem
MIPRE.LowDegree.BinaryLinear.splitBitsCapped_encoding
{k : ℕ}
[NeZero k]
(l : List (AddMonoidAlgebra (ZMod 2) (Fin k)))
(hl : ComponentFamily l)
(b : AddMonoidAlgebra (ZMod 2) (Fin k))
(hb : b * b = b)
:
splitBitsCapped (Cost.unary k)
(List.map (fun (z : AddMonoidAlgebra (ZMod 2) (Fin k)) => vectorBits ((groupCoordinates k) z)) l)
(vectorBits ((groupCoordinates k) b)) = List.map (fun (z : AddMonoidAlgebra (ZMod 2) (Fin k)) => vectorBits ((groupCoordinates k) z)) (splitComponents l b)