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.horizontransitionHeadRef 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.horizontransitionCellRef 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