A polynomial-time constructor of a normal basis #
Equations
Instances For
theorem
MIPRE.SAT.shoupXorBits_correct
(k : ℕ)
(hk : 1 ≤ k)
(a b : (shoupBinField k hk).carrier)
:
LowDegree.BinaryPolynomial.xorBits ((shoupBinField k hk).toBits a) ((shoupBinField k hk).toBits b) = (shoupBinField k hk).toBits (a + b)
Scan right to left, retaining each nonzero row; the result is the first such row.
Equations
- One or more equations did not get rendered due to their size.
Instances For
theorem
MIPRE.SAT.firstNonzeroBitsProg_correct
(k : ℕ)
(hk : 1 ≤ k)
(l : List (shoupBinField k hk).carrier)
:
firstNonzeroBitsProg.toFun (List.map (shoupBinField k hk).toBits l, (shoupBinField k hk).toBits 0) = (shoupBinField k hk).toBits (firstNonzero l)
Apply the supplied projection to each vector of the polynomial basis.
Equations
- One or more equations did not get rendered due to their size.
Instances For
theorem
MIPRE.SAT.shoupProjectionImagesProg_correct
(k : ℕ)
(hk : 1 ≤ k)
[NeZero k]
(e : AddMonoidAlgebra (ZMod 2) (Fin k))
:
shoupProjectionImagesProg.toFun
(Cost.unary k, LowDegree.BinaryLinear.vectorBits ((LowDegree.BinaryLinear.groupCoordinates k) e)) = List.ofFn fun (j : Fin k) => (shoupBinField k hk).toBits (((shoupFrobeniusAction k hk) e) ((shoupPowerBasis k hk) j))
theorem
MIPRE.SAT.shoupProjectedVectorProg_correct
(k : ℕ)
(hk : 1 ≤ k)
[NeZero k]
(e : AddMonoidAlgebra (ZMod 2) (Fin k))
:
theorem
MIPRE.SAT.shoupArithmeticFold_add_correct
(k : ℕ)
(hk : 1 ≤ k)
(l : List (shoupBinField k hk).carrier)
(a : (shoupBinField k hk).carrier)
(p : Cost.BitStr)
:
LowDegree.BinaryPolynomial.arithmeticFold false p ((shoupBinField k hk).toBits a)
(List.map (shoupBinField k hk).toBits l) = (shoupBinField k hk).toBits (a + l.sum)
Equations
- One or more equations did not get rendered due to their size.
Instances For
theorem
MIPRE.SAT.shoupSumProg_correct
(k : ℕ)
(hk : 1 ≤ k)
(l : List (shoupBinField k hk).carrier)
:
shoupSumProg.toFun (Cost.unary k, List.map (shoupBinField k hk).toBits l) = (shoupBinField k hk).toBits l.sum
Compute all primitive projections, select their first nonzero images, and sum them.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Print the constructed normal basis in Frobenius order.
Equations
Instances For
theorem
MIPRE.SAT.shoupNormalBasisProg_correct
(k : ℕ)
(hk : 1 ≤ k)
[NeZero k]
(hodd : Odd k)
:
shoupNormalBasisProg.toFun (Cost.unary k) = List.ofFn fun (i : Fin k) => (shoupBinField k hk).toBits ((shoupNormalBasis k hk hodd) i)