Documentation

Complexitylib.Classes.PPoly.Uniform.Unrolling.Generator.PolynomialOffset.Internal

Polynomial recent-wire offsets -- proof internals #

theorem Complexity.CircuitUnrolling.Serializer.DirectGenerator.preparePolynomialOffset_spaceBoundByWidth_internal (polynomial : Polynomial ℕ) (extra : ℕ) {initialSpace : ℕ → ℕ} {values : ℕ → BinaryValues WorkCount} {width : ℕ → ℕ} (hpolynomialCap : ∀ (inputLength : ℕ), 2 * TM.binaryPolynomialValueCap polynomial (values inputLength Work.horizon) ≤ width inputLength) (hoffset : ∀ (inputLength : ℕ), Polynomial.eval (values inputLength Work.horizon) polynomial + extra ≤ width inputLength) :
(preparePolynomialOffset polynomial extra).SpaceBoundByWidthAt initialSpace values width
theorem Complexity.CircuitUnrolling.Serializer.DirectGenerator.emitPolynomialRecentGate_spaceBoundByWidth_internal (polynomial : Polynomial ℕ) (extra : ℕ) (op : AndOrOp) (negated₀ negated₁ : Bool) (fixedOffset₁ : ℕ) {initialSpace : ℕ → ℕ} {values : ℕ → BinaryValues WorkCount} {width : ℕ → ℕ} (hpolynomialCap : ∀ (inputLength : ℕ), 2 * TM.binaryPolynomialValueCap polynomial (values inputLength Work.horizon) ≤ width inputLength) (havailable : ∀ (inputLength : ℕ), values inputLength Work.available ≤ width inputLength) (hreference₀ : ∀ (inputLength : ℕ), values inputLength Work.reference₀ ≤ width inputLength) (hreference₁ : ∀ (inputLength : ℕ), values inputLength Work.reference₁ ≤ width inputLength) (hloop : ∀ (inputLength : ℕ), values inputLength Work.loop₃ = 0) (hoffsetAvailable : ∀ (inputLength : ℕ), Polynomial.eval (values inputLength Work.horizon) polynomial + extra ≤ values inputLength Work.available) (hfixedOffset₁ : ∀ (inputLength : ℕ), fixedOffset₁ ≤ values inputLength Work.available) :
(emitPolynomialRecentGate polynomial extra op negated₀ negated₁ fixedOffset₁).SpaceBoundByWidthAt initialSpace values width
theorem Complexity.CircuitUnrolling.Serializer.DirectGenerator.emitPolynomialRecentGate_sound_internal (polynomial : Polynomial ℕ) (extra : ℕ) (op : AndOrOp) (negated₀ negated₁ : Bool) (fixedOffset₁ : ℕ) :
(emitPolynomialRecentGate polynomial extra op negated₀ negated₁ fixedOffset₁).Sound
theorem Complexity.CircuitUnrolling.Serializer.DirectGenerator.emitPolynomialRecentGate_requires_internal (polynomial : Polynomial ℕ) (extra : ℕ) (op : AndOrOp) (negated₀ negated₁ : Bool) (fixedOffset₁ : ℕ) (values : BinaryValues WorkCount) :
(emitPolynomialRecentGate polynomial extra op negated₀ negated₁ fixedOffset₁).requires values ↔ values Work.temporary₃ = 0 ∧ values Work.polynomialScratch = 0 ∧ values Work.multiplyCounter = 0 ∧ values Work.addCounter = 0 ∧ values Work.copyCounter = 0 ∧ values Work.loop₃ = 0 ∧ Polynomial.eval (values Work.horizon) polynomial + extra ≤ values Work.available ∧ fixedOffset₁ ≤ values Work.available ∧ values Work.emitCounter = 0
theorem Complexity.CircuitUnrolling.Serializer.DirectGenerator.emitPolynomialRecentGate_emitted_internal (polynomial : Polynomial ℕ) (extra : ℕ) (op : AndOrOp) (negated₀ negated₁ : Bool) (fixedOffset₁ : ℕ) (values : BinaryValues WorkCount) (hloop : values Work.loop₃ = 0) :
(emitPolynomialRecentGate polynomial extra op negated₀ negated₁ fixedOffset₁).emitted values = { op := op, input₀ := values Work.available - (Polynomial.eval (values Work.horizon) polynomial + extra), input₁ := values Work.available - fixedOffset₁, negated₀ := negated₀, negated₁ := negated₁ }.encode