Documentation

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

Direct-unrolling transition-effect generator -- proof internals #

Scratch invariant while a rolling effect-member output reference moves backward through the variable-width case stream.

Instances For
    theorem Complexity.CircuitUnrolling.Serializer.DirectGenerator.emitEffectCaseAt_requires_internal {k : } (tm : NTM k) (selects : TransitionEffect tmBool) (caseIndex : ) (values : BinaryValues WorkCount) (hclean : CaseFormulaClean values) :
    (emitEffectCaseAt tm selects caseIndex).requires values
    @[simp]
    theorem Complexity.CircuitUnrolling.Serializer.DirectGenerator.emitEffectCaseAt_effect_internal {k : } (tm : NTM k) (selects : TransitionEffect tmBool) (caseIndex : ) (values : BinaryValues WorkCount) (hclean : CaseFormulaClean values) :
    (emitEffectCaseAt tm selects caseIndex).effect values = Function.update values Work.available (values Work.available + effectFormulaCaseSize k (values Work.horizon) (effectCaseSelectedAt tm selects caseIndex) (effectCaseChoiceAt tm caseIndex))
    theorem Complexity.CircuitUnrolling.Serializer.DirectGenerator.prepareEffectCaseSize_requires_internal (workCount : ) (selected choiceValue : Bool) (values : BinaryValues WorkCount) (hmultiply : values Work.multiplyCounter = 0) (hadd : values Work.addCounter = 0) :
    (prepareEffectCaseSize workCount selected choiceValue).requires values
    @[simp]
    theorem Complexity.CircuitUnrolling.Serializer.DirectGenerator.prepareEffectCaseSize_effect_internal (workCount : ) (selected choiceValue : Bool) (values : BinaryValues WorkCount) (htemporary₂ : values Work.temporary₂ = 0) :
    (prepareEffectCaseSize workCount selected choiceValue).effect values = Function.update (Function.update values Work.temporary₃ (effectFormulaCaseSize workCount (values Work.horizon) selected choiceValue)) Work.temporary₂ 0
    @[simp]
    theorem Complexity.CircuitUnrolling.Serializer.DirectGenerator.prepareEffectCaseSize_emitted_internal (workCount : ) (selected choiceValue : Bool) (values : BinaryValues WorkCount) :
    (prepareEffectCaseSize workCount selected choiceValue).emitted values = []
    theorem Complexity.CircuitUnrolling.Serializer.DirectGenerator.emitPreviousEffectConnector_requires_internal (workCount : ) (selected choiceValue : Bool) (values : BinaryValues WorkCount) (hclean : EffectConnectorClean values) (hsize : effectFormulaCaseSize workCount (values Work.horizon) selected choiceValue values Work.reference₀) (havailable : 1 values Work.available) :
    (emitPreviousEffectConnector workCount selected choiceValue).requires values
    @[simp]
    @[simp]
    theorem Complexity.CircuitUnrolling.Serializer.DirectGenerator.emitPreviousEffectConnector_emitted_internal (workCount : ) (selected choiceValue : Bool) (values : BinaryValues WorkCount) (hclean : EffectConnectorClean values) :
    (emitPreviousEffectConnector workCount selected choiceValue).emitted values = { op := AndOrOp.or, input₀ := values Work.reference₀ - effectFormulaCaseSize workCount (values Work.horizon) selected choiceValue, input₁ := values Work.available - 1, negated₀ := false, negated₁ := false }.encode
    theorem Complexity.CircuitUnrolling.Serializer.DirectGenerator.emitEffectConnectors_requires_internal {k : } (tm : NTM k) (selects : TransitionEffect tmBool) (base T : ) (values : BinaryValues WorkCount) (hclean : CaseFormulaClean values) (hbase : 1 base) (hhorizon : values Work.horizon = T) (havailable : values Work.available = base + prefixSize (effectFormulaSizeAt (transitionCases tm).length k T (effectCaseSelectedAt tm selects) (effectCaseChoiceAt tm)) (transitionCases tm).length + 1) :
    (emitEffectConnectors tm selects).requires values

    Pointwise all-prefix width certificates #

    theorem Complexity.CircuitUnrolling.Serializer.DirectGenerator.emitEffectFormula_spaceBoundByWidth_internal {k : } (tm : NTM k) (selects : TransitionEffect tmBool) {initialSpace : } {values : BinaryValues WorkCount} {width : } (hclean : ∀ (inputLength : ), CaseFormulaClean (values inputLength)) (hvalues : ∀ (inputLength : ) (index : Fin WorkCount), values inputLength index width inputLength) (hcap : ∀ (inputLength stateIndex tapeIndex symbolIndex position : ), stateIndex < Fintype.card tm.QtapeIndex k + 1symbolIndex < 4position values inputLength Work.horizonvalues inputLength Work.available + effectFormulaScheduleSize (transitionCases tm).length k (values inputLength Work.horizon) (effectCaseSelectedAt tm selects) (effectCaseChoiceAt tm) + transitionStateRef (values inputLength Work.configBase) stateIndex + (transitionHeadRef (Fintype.card tm.Q) (values inputLength Work.horizon) (values inputLength Work.configBase) tapeIndex position + tapeIndex + values inputLength Work.horizon + 1) + (transitionCellRef (Fintype.card tm.Q) (k + 2) (values inputLength Work.horizon) (values inputLength Work.configBase) tapeIndex position symbolIndex + (tapeIndex * (values inputLength Work.horizon + 2) + position) + (values inputLength Work.horizon + 2) + (k + 2) + tapeIndex + 4) + caseReadSize (values inputLength Work.horizon) + values inputLength Work.horizon width inputLength) :
    (emitEffectFormula tm selects).SpaceBoundByWidthAt initialSpace values width