Documentation

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

Direct-unrolling read-formula generator -- proof internals #

theorem Complexity.CircuitUnrolling.Serializer.DirectGenerator.emitReadMember_emitted_internal (stateCount tapeCount : ℕ) (values : BinaryValues WorkCount) :
(emitReadMember stateCount tapeCount).emitted values = List.flatMap CircuitCode.RawGate.encode [CircuitCode.RawGate.copy (transitionHeadRef stateCount (values Work.horizon) (values Work.configBase) (values Work.tapeIndex) (values Work.position)), CircuitCode.RawGate.copy (transitionCellRef stateCount tapeCount (values Work.horizon) (values Work.configBase) (values Work.tapeIndex) (values Work.position) (values Work.symbolIndex)), { op := AndOrOp.and, input₀ := values Work.available, input₁ := values Work.available + 1, negated₀ := false, negated₁ := false }]
theorem Complexity.CircuitUnrolling.Serializer.DirectGenerator.emitReadMember_requires_internal (stateCount tapeCount : ℕ) (values : BinaryValues WorkCount) (hcopy : values Work.copyCounter = 0) (hadd : values Work.addCounter = 0) (hmultiply : values Work.multiplyCounter = 0) (hemit : values Work.emitCounter = 0) :
(emitReadMember stateCount tapeCount).requires values
theorem Complexity.CircuitUnrolling.Serializer.DirectGenerator.emitReadConnector_spaceBoundByWidth_internal {initialSpace : ℕ → ℕ} {values : ℕ → BinaryValues WorkCount} {width : ℕ → ℕ} (havailable : ∀ (inputLength : ℕ), values inputLength Work.available ≤ width inputLength) (havailablePositive : ∀ (inputLength : ℕ), 1 ≤ values inputLength Work.available) (hreference₀ : ∀ (inputLength : ℕ), values inputLength Work.reference₀ ≤ width inputLength) (hreference₁ : ∀ (inputLength : ℕ), values inputLength Work.reference₁ ≤ width inputLength) :
emitReadConnector.SpaceBoundByWidthAt initialSpace values width
theorem Complexity.CircuitUnrolling.Serializer.DirectGenerator.emitReadFormula_spaceBoundByWidth_internal (stateCount tapeCount : ℕ) {initialSpace : ℕ → ℕ} {values : ℕ → BinaryValues WorkCount} {width : ℕ → ℕ} (hclean : ∀ (inputLength : ℕ), ReadFormulaClean (values inputLength)) (hvalues : ∀ (inputLength : ℕ) (index : Fin WorkCount), values inputLength index ≤ width inputLength) (hfrontier : ∀ (inputLength : ℕ), values inputLength Work.available + (4 * (values inputLength Work.horizon + 1) + 1) ≤ width inputLength) (hheadCap : ∀ (inputLength position : ℕ), position ≤ values inputLength Work.horizon → transitionHeadRef stateCount (values inputLength Work.horizon) (values inputLength Work.configBase) (values inputLength Work.tapeIndex) position + values inputLength Work.tapeIndex + values inputLength Work.horizon + 1 ≤ width inputLength) (hcellCap : ∀ (inputLength position : ℕ), position ≤ values inputLength Work.horizon → transitionCellRef stateCount tapeCount (values inputLength Work.horizon) (values inputLength Work.configBase) (values inputLength Work.tapeIndex) position (values inputLength Work.symbolIndex) + (values inputLength Work.tapeIndex * (values inputLength Work.horizon + 2) + position) + (values inputLength Work.horizon + 2) + tapeCount + values inputLength Work.tapeIndex + 4 ≤ width inputLength) :
(emitReadFormula stateCount tapeCount).SpaceBoundByWidthAt initialSpace values width