Translating binary polynomials in a supplied polynomial quotient #
Horner translation by the represented element a.
Equations
Instances For
@[simp]
theorem
MIPRE.LowDegree.BinaryQuotient.translateBits_width_le
(p a g c : Cost.BitStr)
:
c ∈ translateBits p a g → List.length c ≤ List.length p
Translation bounds coefficient width on every raw input, irrespective of the root width.
theorem
MIPRE.LowDegree.BinaryQuotient.translateBits_width
(p a g : Cost.BitStr)
(ha : List.length a = List.length p)
(c : Cost.BitStr)
:
c ∈ translateBits p a g → List.length c = List.length p
Correct-width translation preserves the quotient coefficient width.
theorem
MIPRE.LowDegree.BinaryQuotient.coeffPolynomial_translateBits
{R : Type u_1}
[CommRing R]
[CharP R 2]
[Algebra (ZMod 2) R]
(z : R)
(p a g : Cost.BitStr)
(hp : p ≠ [])
(hz : z ^ List.length p = BinaryPolynomial.evalBits z p)
(ha : List.length a = List.length p)
:
coeffPolynomial z (translateBits p a g) = (Polynomial.map (algebraMap (ZMod 2) R) (polyOfBits g)).comp
(Polynomial.X + Polynomial.C (BinaryPolynomial.evalBits z a))
The translation program substitutes X+a in the input binary polynomial.
@[reducible, inline]
Equations
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
theorem
MIPRE.LowDegree.BinaryQuotient.fold_translateStep_shape
(pre p a : Cost.BitStr)
(cs : List Cost.BitStr)
:
(List.foldl translateStep (p, a, cs) pre).1 = p ∧ (List.foldl translateStep (p, a, cs) pre).2.1 = a ∧ (List.foldl translateStep (p, a, cs) pre).2.2.length = cs.length + List.length pre
theorem
MIPRE.LowDegree.BinaryQuotient.fold_translateStep_width
(pre p a : Cost.BitStr)
(cs : List Cost.BitStr)
(N : ℕ)
(hp : List.length p ≤ N)
(hc : ∀ c ∈ cs, List.length c ≤ N)
(c : Cost.BitStr)
:
c ∈ (List.foldl translateStep (p, a, cs) pre).2.2 → List.length c ≤ N
theorem
MIPRE.LowDegree.BinaryQuotient.fold_translateStep_eq
(bs p a : Cost.BitStr)
(cs : List Cost.BitStr)
:
List.foldl translateStep (p, a, cs) bs = (p, a, List.foldl
(fun (acc : List Cost.BitStr) (b : Bool) =>
linearMulCarry p a (if b = true then BinaryPolynomial.oneBits p else BinaryPolynomial.zeroBits p) acc)
cs bs)
Equations
- One or more equations did not get rendered due to their size.
Instances For
theorem
MIPRE.LowDegree.BinaryQuotient.translateStep_bounded :
translateStepProg.FoldBounded (20 * Polynomial.X ^ 2 + 20 * Polynomial.X + 20)
One globally polynomial-time binary polynomial translation program.
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[simp]