OAI/Computability/UniqueGames/Machines/MachineSingleOrbitProgramLemmas.lean
53 declarations, 0 contain sorry, 0 declared as axioms
Physical postprocessing of the two-side address codec. The program reads
2*C,q,m, writes C,q,m, and replaces each row u,C+v,table by u,v,table.
Only the fixed alphabet size q occurs in finite control. All input-dependent
integers reside on unary tapes. Six Bool tapes suffice.
- inductive
OAI.UniqueGamesTheorem.Explicit.MachineSingleOrbitProgram.Tapeline 20 - abbrev
OAI.UniqueGamesTheorem.Explicit.MachineSingleOrbitProgram.Tape.enumListline 24 - theorem
OAI.UniqueGamesTheorem.Explicit.MachineSingleOrbitProgram.Tape.enumList_getElem?_ctorIdx_eqline 27 - theorem
OAI.UniqueGamesTheorem.Explicit.MachineSingleOrbitProgram.Tape.enumList_nodupline 31 - instance
OAI.UniqueGamesTheorem.Explicit.MachineSingleOrbitProgram.(instance at line 33)line 33 - abbrev
OAI.UniqueGamesTheorem.Explicit.MachineSingleOrbitProgram.Stateline 37 - def
OAI.UniqueGamesTheorem.Explicit.MachineSingleOrbitProgram.initialStateline 39 - def
OAI.UniqueGamesTheorem.Explicit.MachineSingleOrbitProgram.clearKeysline 41 - inductive
OAI.UniqueGamesTheorem.Explicit.MachineSingleOrbitProgram.Labelline 43 - def
OAI.UniqueGamesTheorem.Explicit.MachineSingleOrbitProgram.copyFieldline 53Source documentation
Consume one complete unary field, including its delimiter, appending its reverse to the output accumulator. All other tapes are unchanged.
def copyField {q : Nat} (loopLabel exitLabel : Label q) : TM2.Stmt (fun _ : Tape => Bool) (Label q) State := …Mentions: OAI.UniqueGamesTheorem.Explicit.MachineSingleOrbitProgram.Label, OAI.UniqueGamesTheorem.Explicit.MachineSingleOrbitProgram.Tape, OAI.UniqueGamesTheorem.Explicit.MachineSingleOrbitProgram.State
- def
OAI.UniqueGamesTheorem.Explicit.MachineSingleOrbitProgram.programline 61 - def
OAI.UniqueGamesTheorem.Explicit.MachineSingleOrbitProgram.machineline 97 - theorem
OAI.UniqueGamesTheorem.Explicit.MachineSingleOrbitProgram.finite_workAlphabetline 108 - theorem
OAI.UniqueGamesTheorem.Explicit.MachineSingleOrbitProgram.accumulator_not_mem_clearKeysline 113 - theorem
OAI.UniqueGamesTheorem.Explicit.MachineSingleOrbitProgram.output_not_mem_clearKeysline 114 - theorem
OAI.UniqueGamesTheorem.Explicit.MachineSingleOrbitProgram.clearKeys_coversline 116 - def
OAI.UniqueGamesTheorem.Explicit.MachineSingleOrbitStreams.tapesline 129 - theorem
OAI.UniqueGamesTheorem.Explicit.MachineSingleOrbitStreams.tapes_inputline 137 - theorem
OAI.UniqueGamesTheorem.Explicit.MachineSingleOrbitStreams.tapes_capacityline 138 - theorem
OAI.UniqueGamesTheorem.Explicit.MachineSingleOrbitStreams.tapes_savedline 139 - theorem
OAI.UniqueGamesTheorem.Explicit.MachineSingleOrbitStreams.tapes_remainingline 140 - theorem
OAI.UniqueGamesTheorem.Explicit.MachineSingleOrbitStreams.tapes_accumulatorline 141 - theorem
OAI.UniqueGamesTheorem.Explicit.MachineSingleOrbitStreams.tapes_outputline 142 - theorem
OAI.UniqueGamesTheorem.Explicit.MachineSingleOrbitStreams.update_tapesline 144 - def
OAI.UniqueGamesTheorem.Explicit.MachineSingleOrbitStreams.cfgline 151 - theorem
OAI.UniqueGamesTheorem.Explicit.MachineSingleOrbitStreams.copyStep_trueline 155 - theorem
OAI.UniqueGamesTheorem.Explicit.MachineSingleOrbitStreams.copyStep_falseline 164 - theorem
OAI.UniqueGamesTheorem.Explicit.MachineSingleOrbitStreams.copyFieldTraceline 174Source documentation
The physical field copy takes one transition for each input bit.
theorem copyFieldTrace {q : Nat} (loopLabel exitLabel : Label q) (atLoop : program q loopLabel = copyField loopLabel exitLabel) (n : Nat) (suffix c s r a o : List Bool) (register : Option Bool) : (advance (TM2.step (program q)))^[n + 1] (some (cfg loopLabel register (encodeWord n ++ suffix) c s r a o)) = some (cfg exitLabel none suffix c s r ((encodeWord n).reverse ++ a) o) := by …Mentions: OAI.UniqueGamesTheorem.Explicit.MachineSingleOrbitStreams.cfg
- theorem
OAI.UniqueGamesTheorem.Explicit.MachineSingleOrbitStreams.tableTraceline 192Source documentation
All permutation fields are copied with a finite delimiter counter.
theorem tableTrace {q : Nat} (completed : Fin (q + 1)) (words : List Nat) (hcount : completed.val + words.length = q) (suffix c s r a o : List Bool) (register : Option Bool) : (advance (TM2.step (program q)))^[(encodeWords words).length + 1] (some (cfg (.table completed) register (encodeWords words ++ suffix) c s r a o)) = some (cfg .guard none suffix c s r ((encodeWords words).reverse ++ a) o) := by …Mentions: OAI.UniqueGamesTheorem.Explicit.MachineSingleOrbitStreams.cfg
- theorem
OAI.UniqueGamesTheorem.Explicit.MachineSingleOrbitHeader.halfStep_firstline 233 - theorem
OAI.UniqueGamesTheorem.Explicit.MachineSingleOrbitHeader.halfStep_secondline 239 - theorem
OAI.UniqueGamesTheorem.Explicit.MachineSingleOrbitHeader.halfStep_falseline 245 - theorem
OAI.UniqueGamesTheorem.Explicit.MachineSingleOrbitHeader.halfTraceline 252Source documentation
Consume two unary input marks per output mark, storing the new capacity.
theorem halfTrace {q : Nat} (n : Nat) (suffix c s r a o : List Bool) (register : Option Bool) : (advance (TM2.step (program q)))^[2 * n + 1] (some (cfg .halfFirst register (encodeWord (2 * n) ++ suffix) c s r a o)) = some (cfg .alphabet none suffix (List.replicate n true ++ c) s r ((encodeWord n).reverse ++ a) o) := by … - theorem
OAI.UniqueGamesTheorem.Explicit.MachineSingleOrbitHeader.countStep_trueline 273 - theorem
OAI.UniqueGamesTheorem.Explicit.MachineSingleOrbitHeader.countStep_falseline 279 - theorem
OAI.UniqueGamesTheorem.Explicit.MachineSingleOrbitHeader.countTraceline 286Source documentation
Copy the occurrence count while also storing its physical unary counter.
theorem countTrace {q : Nat} (n : Nat) (suffix c s r a o : List Bool) (register : Option Bool) : (advance (TM2.step (program q)))^[n + 1] (some (cfg .count register (encodeWord n ++ suffix) c s r a o)) = some (cfg .guard none suffix c s (List.replicate n true ++ r) ((encodeWord n).reverse ++ a) o) := by … - theorem
OAI.UniqueGamesTheorem.Explicit.MachineSingleOrbitHeader.initial_configurationline 303 - theorem
OAI.UniqueGamesTheorem.Explicit.MachineSingleOrbitHeader.initialStepline 310 - theorem
OAI.UniqueGamesTheorem.Explicit.MachineSingleOrbitHeader.headerTraceline 319Source documentation
Read
2*C,q,m, writeC,q,m, and leave the physical unary capacity and occurrence counters ready for the row loop. The bound counts real transitions.theorem headerTrace (q C m : Nat) (suffix : List Bool) : (advance (TM2.step (program q)))^[2 * C + q + m + 4] (some (initList (machine q) (encodeWord (2 * C) ++ encodeWord q ++ encodeWord m ++ suffix))) = some (cfg .guard none suffix (encodeWord C) [] (encodeWord m) (encodeWords [C, q, m]).reverse []) := by … - theorem
OAI.UniqueGamesTheorem.Explicit.MachineSingleOrbitSubtract.subtractStep_zeroline 363 - theorem
OAI.UniqueGamesTheorem.Explicit.MachineSingleOrbitSubtract.subtractStep_succline 371 - theorem
OAI.UniqueGamesTheorem.Explicit.MachineSingleOrbitSubtract.subtractTraceline 382Source documentation
The scan consumes precisely the capacity prefix of the target field.
theorem subtractTrace (q n : Nat) (suffix saved remaining accumulator output : List Bool) (register : Option Bool) : (advance (TM2.step (program q)))^[n + 1] (some (cfg .subtract register (List.replicate n true ++ suffix) (encodeWord n) saved remaining accumulator output)) = some (cfg .restore none suffix (encodeWord 0) (List.replicate n true ++ saved) remaining accumulator output) := by … - theorem
OAI.UniqueGamesTheorem.Explicit.MachineSingleOrbitSubtract.restore_tapesline 397 - theorem
OAI.UniqueGamesTheorem.Explicit.MachineSingleOrbitSubtract.restoreTraceline 405Source documentation
The real saved-prefix transfer restores
C, empties scratch, and takesC + 1transitions.theorem restoreTrace (q n : Nat) (suffix remaining accumulator output : List Bool) : (advance (TM2.step (program q)))^[n + 1] (some (cfg .restore none suffix (encodeWord 0) (List.replicate n true) remaining accumulator output)) = some (cfg .target none suffix (encodeWord n) [] remaining accumulator output) := by … - theorem
OAI.UniqueGamesTheorem.Explicit.MachineSingleOrbitSubtract.removeOffsetTraceline 424Source documentation
The complete target-offset removal preserves every other tape. In particular the capacity is reusable and the
vfield delimiter is untouched.theorem removeOffsetTrace (q C v : Nat) (suffix remaining accumulator output : List Bool) (register : Option Bool) : (advance (TM2.step (program q)))^[2 * (C + 1)] (some (cfg .subtract register (encodeWord (C + v) ++ suffix) (encodeWord C) [] remaining accumulator output)) = some (cfg .target none (encodeWord v ++ suffix) (encodeWord C) [] remaining accumulator output) := by … - theorem
OAI.UniqueGamesTheorem.Explicit.MachineSingleOrbitRows.joinTraceline 449 - def
OAI.UniqueGamesTheorem.Explicit.MachineSingleOrbitRows.rowCostline 453 - theorem
OAI.UniqueGamesTheorem.Explicit.MachineSingleOrbitRows.rowTraceline 456 - theorem
OAI.UniqueGamesTheorem.Explicit.MachineSingleOrbitRows.guardStep_succline 492 - theorem
OAI.UniqueGamesTheorem.Explicit.MachineSingleOrbitRows.guardStep_zeroline 500 - def
OAI.UniqueGamesTheorem.Explicit.MachineSingleOrbitRows.rowsCostline 508 - theorem
OAI.UniqueGamesTheorem.Explicit.MachineSingleOrbitRows.rowsCost_consline 511 - theorem
OAI.UniqueGamesTheorem.Explicit.MachineSingleOrbitRows.rowsTraceline 519Source documentation
The actual counted loop visits every row once and preserves its order. No complete-loop execution is supplied as an input hypothesis.
theorem rowsTrace {C q : Nat} (cs : List (Constraint C q)) (suffix accumulator output : List Bool) (register : Option Bool) : (advance (TM2.step (program q)))^[rowsCost cs] (some (cfg .guard register (doubledRowsBits cs ++ suffix) (encodeWord C) [] (encodeWord cs.length) accumulator output)) = some (cfg .finishStart none suffix (encodeWord C) [] (encodeWord 0) ((rowsBits cs).reverse ++ accumulator) output) := by …Mentions: OAI.UniqueGamesTheorem.Explicit.MachineSingleOrbitRows.rowsCost