OAI/Computability/UniqueGames/Machines/MachineSingleOrbitFinishLemmas.lean

GitHub source file

14 declarations, 0 contain sorry, 0 declared as axioms

Actual tape cleanup, accumulator reversal, and halt for the one-orbit postprocessor. The time bound is derived from an actual executed prefix.

  1. theorem OAI.UniqueGamesTheorem.Explicit.MachineSingleOrbitFinish.haltList_eq line 16
  2. def OAI.UniqueGamesTheorem.Explicit.MachineSingleOrbitFinish.finishStartInTime line 23
  3. def OAI.UniqueGamesTheorem.Explicit.MachineSingleOrbitFinish.timePolynomial line 31
  4. def OAI.UniqueGamesTheorem.Explicit.MachineSingleOrbitFinish.completePrefix line 36

    Source documentation

    This helper consumes a proved prefix trace. The final runtime theorem supplies that trace from the concrete header and complete row traversal.

    def completePrefix (q : Nat) (input : List Bool) (prefixTime : Polynomial Nat)
        (base : Tape → List Bool)
        (execution : StateTransition.EvalsToInTime (machine q).step
          (initList (machine q) input)
          (some ⟨some .finishStart, initialState, base⟩) (prefixTime.eval input.length))
        (outputEmpty : base .output = []) :
        TM2OutputsInTime (machine q) input (some (base .accumulator).reverse)
          ((timePolynomial q prefixTime).eval input.length) := by
    …

    Mentions: OAI.UniqueGamesTheorem.Explicit.MachineSingleOrbitFinish.timePolynomial

  5. def OAI.UniqueGamesTheorem.Explicit.MachineSingleOrbitRuntime.finalTapes line 80
  6. def OAI.UniqueGamesTheorem.Explicit.MachineSingleOrbitRuntime.prefixCost line 83
  7. theorem OAI.UniqueGamesTheorem.Explicit.MachineSingleOrbitRuntime.prefixTrace line 87

    Source documentation

    The complete prefix is obtained from the actual header and row traces.

    theorem prefixTrace {q : Nat} (I : Instance q) :
        (advance (TM2.step (program q)))^[prefixCost I]
          (some (initList (machine q) (gameBits (doubleInstance I)))) =
          some ⟨some .finishStart, initialState, finalTapes I⟩ := by
    …

    Mentions: OAI.UniqueGamesTheorem.Explicit.MachineSingleOrbitRuntime.prefixCost, OAI.UniqueGamesTheorem.Explicit.MachineSingleOrbitRuntime.finalTapes

  8. def OAI.UniqueGamesTheorem.Explicit.MachineSingleOrbitRuntime.prefixPolynomial line 115
  9. theorem OAI.UniqueGamesTheorem.Explicit.MachineSingleOrbitRuntime.prefixCost_le line 118
  10. def OAI.UniqueGamesTheorem.Explicit.MachineSingleOrbitRuntime.prefixInTime line 127
  11. def OAI.UniqueGamesTheorem.Explicit.MachineSingleOrbitRuntime.timePolynomial line 136
  12. def OAI.UniqueGamesTheorem.Explicit.MachineSingleOrbitRuntime.fullRunInTime line 140

    Source documentation

    Literal init-to-halt execution, with every non-output tape empty at halt.

    def fullRunInTime {q : Nat} (I : Instance q) :
        TM2OutputsInTime (machine q) (gameBits (doubleInstance I))
          (some (gameBits I)) ((timePolynomial q).eval (gameBits (doubleInstance I)).length) := by
    …

    Mentions: OAI.UniqueGamesTheorem.Explicit.MachineSingleOrbitRuntime.timePolynomial

  13. def OAI.UniqueGamesTheorem.Explicit.MachineSingleOrbitRuntime.computableInPolyTime line 149

    Source documentation

    A proved polynomial-time codec conversion, without an assumed time bound, an output-size certificate, or an unbounded integer in finite machine state.

    def computableInPolyTime (q : Nat) :
        TM2ComputableInPolyTime (fun I : Instance q => gameBits (doubleInstance I)) gameBits id where
    …
  14. theorem OAI.UniqueGamesTheorem.Explicit.MachineSingleOrbitRuntime.workAlphabetFinite line 162