Truncated univariate integer Taylor jet subtraction, congruences, and fold combinators #
Builds on Cslib.truncZJet, Cslib.polyAdd, and Cslib.mulZJet
from Complexity/Computability/PolyTime/ParityFactorEval.lean to provide truncated length-J
addition, subtraction, scalar subtraction, Polynomial.X ^ J divisibility congruences, foldl
product invariants, encIntBin bit-length bounds, and a plain ComputableInPolyTime product-fold
combinator in ℤ[z] / (z ^ J).
All operations (Cslib.IntJet.add, Cslib.IntJet.sub, Cslib.IntJet.subConst, together with
Cslib.truncZJet and Cslib.mulZJet) are total on arbitrary List ℤ inputs: missing entries read
as 0 via List.getD _ 0, entries at indices ≥ J are truncated modulo z ^ J, and every output
has exact length J.
Main definitions and results #
Cslib.IntJet.add,Cslib.IntJet.sub,Cslib.IntJet.subConst: truncated length-Jaddition (viaCslib.truncZJetandCslib.polyAdd) and subtraction onList ℤ.Cslib.IntJet.X_pow_dvd_truncZJet,Cslib.IntJet.X_pow_dvd_add,Cslib.IntJet.X_pow_dvd_sub,Cslib.IntJet.X_pow_dvd_subConst,Cslib.IntJet.X_pow_dvd_mulZJet,Cslib.IntJet.X_pow_dvd_foldl_mulZJet: congruences moduloPolynomial.X ^ Joverℤ[X].Cslib.IntJet.coeffNorm1_mulZJet_le,Cslib.IntJet.coeffNorm1_foldl_mulZJet_le,Cslib.IntJet.length_encIntBin_getD_le_coeffNorm1,Cslib.IntJet.computableInPolyTime_foldl_mulZJet:Polynomial.coeffNorm1,encIntBin, and plainTuring.MultiTapeTM.ComputableInPolyTimebounds and@[fun_prop]rules.
References #
- OpenAI, The Exponential Time Hypothesis is False, Appendix B.1, B.4 (pp. 48–51).
Pointwise addition of two integer jets modulo z ^ J (exact length J), reusing
Cslib.truncZJet and Cslib.polyAdd.
Instances For
Cslib.truncZJet J a is congruent to Polynomial.ofCoeffList a modulo X ^ J.
Cslib.truncZJet J [c] is congruent to Polynomial.C c modulo X ^ J.
Cslib.mulZJet J a b is congruent to ofCoeffList a * ofCoeffList b modulo X ^ J.
Folding Cslib.mulZJet J over l preserves congruence modulo X ^ J.
Every entry a.getD k 0 has encIntBin bit-length at most coeffNorm1.size + 1.
Submultiplicativity of Polynomial.coeffNorm1 under Cslib.mulZJet J.
Submultiplicative Polynomial.coeffNorm1 bound across foldl of Cslib.mulZJet J.
Bit-size of (ofCoeffList a).coeffNorm1 is bounded linearly in (encList encIntBin a).length.
Encoded length of a : List ℤ is bounded by a.length * (2 * coeffNorm1.size + 3).
Plain polynomial-time combinator for folding Cslib.mulZJet over xs from
Cslib.truncZJet J [1], given a polynomial bound K on the bit-sizes of the step factors' ℓ₁
norms.