Documentation

Complexitylib.Classes.PPoly.Uniform.Unrolling.Generator.Transition.Predecessor.Internal

Direct predecessor-head formula generation -- proof internals #

theorem Complexity.CircuitUnrolling.Serializer.DirectGenerator.emitPredecessorHeadMembers_emitted_internal (stateCount directionCode : ℕ) (values : BinaryValues WorkCount) (hclean : PredecessorHeadClean values) (hhorizon : 0 < values Work.horizon) (htarget : values Work.position ≤ values Work.horizon) :
(emitPredecessorHeadMembers stateCount directionCode).emitted values = List.flatMap CircuitCode.RawGate.encode (predecessorHeadMemberGates stateCount (values Work.horizon) (values Work.configBase) (values Work.tapeIndex) (values Work.position) directionCode)
theorem Complexity.CircuitUnrolling.Serializer.DirectGenerator.emitPredecessorHeadConnectors_emitted_internal (values : BinaryValues WorkCount) (available count : ℕ) (hloop₀ : values Work.loop₀ = 0) (hlimit : values Work.limit₀ = count) (hloop₁ : values Work.loop₁ = 0) (hreference₀ : values Work.reference₀ = 0) (hreference₁ : values Work.reference₁ = 0) (havailable : values Work.available = available + count + 1) (htemporary : values Work.temporary₃ = 2) :
theorem Complexity.CircuitUnrolling.Serializer.DirectGenerator.emitPredecessorHeadFormula_emitted_internal (stateCount directionCode : ℕ) (values : BinaryValues WorkCount) (hclean : PredecessorHeadClean values) (hhorizon : 0 < values Work.horizon) (htarget : values Work.position ≤ values Work.horizon) :
(emitPredecessorHeadFormula stateCount directionCode).emitted values = List.flatMap CircuitCode.RawGate.encode (predecessorHeadFormulaSchedule stateCount (values Work.horizon) (values Work.configBase) (values Work.available) (values Work.tapeIndex) (values Work.position) directionCode)
theorem Complexity.CircuitUnrolling.Serializer.DirectGenerator.emitPredecessorHeadMembers_requires_internal (stateCount directionCode : ℕ) (values : BinaryValues WorkCount) (hclean : PredecessorHeadClean values) (hhorizon : 0 < values Work.horizon) (htarget : values Work.position ≤ values Work.horizon) :
(emitPredecessorHeadMembers stateCount directionCode).requires values

Pointwise all-prefix width certificates #

theorem Complexity.CircuitUnrolling.Serializer.DirectGenerator.emitPredecessorHeadFormula_spaceBoundByWidth_internal (stateCount directionCode : ℕ) {initialSpace : ℕ → ℕ} {values : ℕ → BinaryValues WorkCount} {width : ℕ → ℕ} (hclean : ∀ (inputLength : ℕ), PredecessorHeadClean (values inputLength)) (hhorizon : ∀ (inputLength : ℕ), 0 < values inputLength Work.horizon) (htarget : ∀ (inputLength : ℕ), values inputLength Work.position ≤ values inputLength Work.horizon) (hvalues : ∀ (inputLength : ℕ) (index : Fin WorkCount), values inputLength index ≤ width inputLength) (hfrontier : ∀ (inputLength : ℕ), values inputLength Work.available + movedHeadPredecessorSize (values inputLength Work.horizon) ≤ width inputLength) (hcap : ∀ (inputLength : ℕ), transitionHeadRef stateCount (values inputLength Work.horizon) (values inputLength Work.configBase) (values inputLength Work.tapeIndex) (values inputLength Work.horizon + 1) + values inputLength Work.tapeIndex + values inputLength Work.horizon + 1 + 2 * (values inputLength Work.horizon + 2) ≤ width inputLength) :
(emitPredecessorHeadFormula stateCount directionCode).SpaceBoundByWidthAt initialSpace values width