Documentation

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

Direct-unrolling moved-head generator -- proof internals #

Scratch owned by the conjunction between an effect child and a predecessor-head child. The run-time target and tape selector are deliberately excluded because the predecessor routine preserves them.

Instances For
    theorem Complexity.CircuitUnrolling.Serializer.DirectGenerator.emitMovedHeadEffect_requires_internal {k : } (tm : NTM k) (tape : TapeSlot k) (direction : Dir3) (values : BinaryValues WorkCount) (hclean : CaseFormulaClean values) (havailable : 1 values Work.available) :
    (emitMovedHeadEffect tm tape direction).requires values

    Register state after emitting and saving one moved-head disjunction member.

    Equations
    • One or more equations did not get rendered due to their size.
    Instances For
      theorem Complexity.CircuitUnrolling.Serializer.DirectGenerator.emitMovedHeadMember_requires_internal {k : } (tm : NTM k) (tape : TapeSlot k) (direction : Dir3) (directionCode : ) (save : Fin WorkCount) (values : BinaryValues WorkCount) (hclean : CaseFormulaClean values) (hloop₁ : values Work.loop₁ = 0) (hhorizon : 0 < values Work.horizon) (htarget : values Work.limit₂ values Work.horizon) (havailable : 1 values Work.available) (hsave : save = Work.savedOutput save = Work.direction save = Work.atomKind) :
      (emitMovedHeadMember tm tape direction directionCode save).requires values
      theorem Complexity.CircuitUnrolling.Serializer.DirectGenerator.emitMovedHeadMember_effect_internal {k : } (tm : NTM k) (tape : TapeSlot k) (direction : Dir3) (directionCode : ) (save : Fin WorkCount) (values : BinaryValues WorkCount) (hclean : CaseFormulaClean values) (hloop₁ : values Work.loop₁ = 0) (hhorizon : 0 < values Work.horizon) (htarget : values Work.limit₂ values Work.horizon) (havailable : 1 values Work.available) :
      (emitMovedHeadMember tm tape direction directionCode save).effect values = movedHeadMemberResult values save (movedHeadEffectSizeAt (transitionCases tm).length k (values Work.horizon) (movedHeadCaseSelectedAt tm tape) (effectCaseChoiceAt tm) (movedHeadDirectionCode direction))
      theorem Complexity.CircuitUnrolling.Serializer.DirectGenerator.emitMovedHeadMember_emitted_internal {k : } (tm : NTM k) (tape : TapeSlot k) (direction : Dir3) (directionCode base : ) (save : Fin WorkCount) (values : BinaryValues WorkCount) (hclean : CaseFormulaClean values) (hloop₁ : values Work.loop₁ = 0) (hhorizon : 0 < values Work.horizon) (htarget : values Work.limit₂ values Work.horizon) (havailable : 1 values Work.available) (hcode : directionCode = movedHeadDirectionCode direction) (hmemberAvailable : values Work.available = movedHeadMemberAvailable (transitionCases tm).length k (values Work.horizon) base (movedHeadCaseSelectedAt tm tape) (effectCaseChoiceAt tm) directionCode) :
      theorem Complexity.CircuitUnrolling.Serializer.DirectGenerator.emitMovedHeadMember_sound_internal {k : } (tm : NTM k) (tape : TapeSlot k) (direction : Dir3) (directionCode : ) (save : Fin WorkCount) :
      (emitMovedHeadMember tm tape direction directionCode save).Sound
      @[simp]
      theorem Complexity.CircuitUnrolling.Serializer.DirectGenerator.emitMovedHeadFormula_requires_internal {k : } (tm : NTM k) (tape : TapeSlot k) (values : BinaryValues WorkCount) (hclean : MovedHeadFormulaClean values) (hhorizon : 0 < values Work.horizon) (htarget : values Work.position values Work.horizon) (havailable : 1 values Work.available) :
      theorem Complexity.CircuitUnrolling.Serializer.DirectGenerator.emitMovedHeadFormula_spaceBoundByWidth_internal {k : } (tm : NTM k) (tape : TapeSlot k) {initialSpace : } {values : BinaryValues WorkCount} {width : } (hclean : ∀ (inputLength : ), MovedHeadFormulaClean (values inputLength)) (hhorizon : ∀ (inputLength : ), 0 < values inputLength Work.horizon) (htarget : ∀ (inputLength : ), values inputLength Work.position values inputLength Work.horizon) (havailable : ∀ (inputLength : ), 1 values inputLength Work.available) (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.horizon + 1values inputLength Work.available + movedHeadFormulaScheduleSize (transitionCases tm).length k (values inputLength Work.horizon) (movedHeadCaseSelectedAt tm tape) (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) + 2 * TM.binaryPolynomialValueCap predecessorHeadSchedulePolynomial (values inputLength Work.horizon) + 2 * (values inputLength Work.horizon + 2) + values inputLength Work.horizon width inputLength) :
      (emitMovedHeadFormula tm tape).SpaceBoundByWidthAt initialSpace values width