Uniform inversion in the Shoup polynomial-basis field #
The exponent 2^k - 2, written directly in k bits rather than expanded in unary.
Equations
Instances For
Inversion by binary exponentiation. Its specification requires a nonzero operand.
Equations
Instances For
theorem
MIPRE.LowDegree.BinaryPolynomial.length_inverseBits
(p a : Cost.BitStr)
(ha : List.length a = List.length p)
:
theorem
MIPRE.LowDegree.BinaryPolynomial.evalBits_inverseBits
{F : Type u_1}
[Field F]
[Fintype F]
[CharP F 2]
(z : F)
(p a : Cost.BitStr)
(hp : p ≠ [])
(hcard : Fintype.card F = 2 ^ List.length p)
(hroot : z ^ List.length p = evalBits z p)
(ha : List.length a = List.length p)
(hne : evalBits z a ≠ 0)
:
Correctness in every finite characteristic-two field of the supplied cardinality.
@[simp]
Globally polynomial-time inversion routine, uniform in the supplied modulus.
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[simp]
Construct the Shoup modulus and invert a nonzero field element in its power basis.
Equations
- One or more equations did not get rendered due to their size.
Instances For
theorem
MIPRE.SAT.shoupInvProg_correct
(k : ℕ)
(hk : 1 ≤ k)
(a : (shoupBinField k hk).carrier)
(ha : a ≠ 0)
:
theorem
MIPRE.SAT.shoupInvProg_time_le :
∃ (R : Polynomial ℕ),
∀ (k : ℕ) (a : Cost.BitStr),
List.length a = k →
∃ t ≤ Polynomial.eval k R,
shoupInvProg.code.Runs (Cost.encode (Cost.unary k, a)) (Cost.encode (shoupInvProg.toFun (Cost.unary k, a))) t
Including construction of the modulus, inversion takes polynomial time in the degree.