OAI/Computability/MaxCut/Machines/MachineExpanderRowFrames.lean
134 declarations, 0 contain sorry, 0 declared as axioms
Concrete data and tape frames for an actual expander-row computation
Only the five actual row inputs are stored. Every address, table return and finite control value below is computed from those inputs. The thirteen tape frames use the existing phase-output functions. These are data identities and size bounds, not assumed machine executions.
- structure
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.RowDataline 19 - def
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.rowDataline 26 - def
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.RowData.control0line 34 - def
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.RowData.firstRowline 35 - def
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.RowData.firstValueline 36 - def
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.RowData.firstPairline 37 - def
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.RowData.firstVertexline 38 - def
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.RowData.firstReturnline 39 - def
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.RowData.control1line 40 - def
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.RowData.secondRowline 41 - def
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.RowData.secondValueline 42 - def
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.RowData.secondPairline 43 - def
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.RowData.secondVertexline 44 - def
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.RowData.secondReturnline 45 - def
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.RowData.control2line 46 - def
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.RowData.query1line 47 - def
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.RowData.query2line 48 - def
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.RowData.finalValueline 49 - def
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.RowData.tableLengthline 50 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.RowData.query1_eq_firstRowline 52 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.RowData.query2_eq_secondRowline 55 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.RowData.firstValue_div_degreeline 58 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.RowData.firstValue_mod_degreeline 59 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.RowData.secondValue_div_degreeline 60 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.RowData.secondValue_mod_degreeline 61 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.RowData.firstReturn_eq_residueline 63 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.RowData.secondReturn_eq_residueline 67 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.RowData.receiveFirst_residue_eq_control1line 71 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.RowData.receiveSecond_residue_eq_control2line 77 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.RowData.firstSelectedline 83 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.RowData.secondSelectedline 87 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.RowData.evaluateRow_eqline 91 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.RowData.finalValue_eq_step_reverseIndexline 94 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.RowData.rows_le_tableLengthline 101 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.RowData.query1_le_tableLengthline 105 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.RowData.query2_le_tableLengthline 109 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.RowData.firstValue_le_tableLengthline 113 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.RowData.secondValue_le_tableLengthline 116 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.RowData.inputVertex_le_tableLengthline 119 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.RowData.firstVertex_le_tableLengthline 124 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.RowData.secondVertex_le_tableLengthline 128 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.RowData.firstReturn_le_tableLengthline 132 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.RowData.secondReturn_le_tableLengthline 136 - def
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.frameContentsline 145Source documentation
Complete explicit tape contents; all three scratch roles omitted here are empty.
def frameContents (r : RowData v d) (output : List Bool) (qr qi lo q1 q2 r1 r2 : List Bool) : Tape → List Bool | .inputVertex => encodeWord r.inputVertex.val | .table => encodeWords (rotationWords r.oldTable) | .output => output | .queryReverse => qr | .queryIndex => qi | .lookupOutput => lo | .quotientFirst => q1 | .quotientSecond => q2 | .remainderFirst => r1 | .remainderSecond => r2 …Mentions: OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.RowData, OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.Tape, OAI.MaxCutGames.Foundations.Complexity.encodeWord, OAI.MaxCutGames.Foundations.Complexity.encodeWords
- def
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.frame0line 159 - def
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.frame1line 161 - def
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.frame2line 163 - def
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.frame3line 165 - def
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.frame4line 168 - def
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.frame5line 170 - def
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.frame6line 172 - def
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.frame7line 174 - def
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.frame8line 176 - def
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.frame9line 179 - def
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.frame10line 181 - def
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.frame11line 183 - def
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.frame12line 185 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.lookupResultTapes_id_eq_inline_MachineExpanderRowFramesline 188 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.frame1_eqline 196 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.frame2_eqline 202 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.frame3_eqline 208 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.frame4_eqline 214 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.frame5_eqline 220 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.frame6_eqline 228 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.frame7_eqline 234 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.frame8_eqline 241 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.frame9_eqline 248 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.frame10_eqline 255 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.frame11_eqline 263 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.frame12_eqline 271 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.final_frame_eqline 277 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.frame0_inputVertexline 284 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.frame0_tableline 287 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.frame0_outputline 290 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.frame1_inputVertexline 293 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.frame1_emitScratchline 296 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.frame2_queryReverseline 299 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.frame2_queryIndexline 302 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.frame3_tableline 305 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.frame3_lookupRestoreline 308 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.frame3_lookupWorkline 311 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.frame3_lookupOutputline 314 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.frame3_queryIndexline 317 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.frame4_lookupOutputline 320 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.frame4_quotientFirstline 323 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.frame4_remainderFirstline 326 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.frame6_quotientFirstline 329 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.frame6_emitScratchline 332 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.frame7_queryReverseline 335 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.frame7_queryIndexline 338 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.frame8_tableline 341 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.frame8_lookupRestoreline 344 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.frame8_lookupWorkline 347 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.frame8_lookupOutputline 350 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.frame8_queryIndexline 353 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.frame9_lookupOutputline 356 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.frame9_quotientSecondline 359 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.frame9_remainderSecondline 362 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.frame10_quotientSecondline 365 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.frame10_emitScratchline 368 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.frame10_outputline 371 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.final_dirty_word_length_leline 374 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.cleanupSteps_le_tableLengthline 382 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.concatenate_inline_MachineExpanderRowline 407 - def
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.rowStepsline 412Source documentation
The actual number of transitions, retaining both concrete lookup costs.
def rowSteps {v d : Nat} (r : RowData v d) (output : List Bool) : Nat := …Mentions: OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.RowData
- theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.rowTraceAtline 432Source documentation
The complete execution follows the concrete program. The only code premise places its instructions in a caller; every lookup is derived from
oldTable.theorem rowTraceAt : (advance (TM2.step target))^[rowSteps r output] (some ⟨some (labels .initialize), divisionState positive ambient r.control0 none, frame0 r output⟩) = some ⟨exit, divisionState positive ambient r.control2 none, emittedWord .output (frame0 r output) r.finalValue⟩ := by …Mentions: OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.rowSteps, OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.divisionState, OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.frame0, OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.emittedWord
- theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.rowSteps_leline 556 - def
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.rowInTimeAtline 576Source documentation
The actual row program has a linear transition bound, with all temporary tapes empty at return. The bound holds for every valid finite input table.
def rowInTimeAt {v d : Nat} {ρ Λ : Type} [Fintype ρ] (positive : 0 < d) (r : RowData v d) (output : List Bool) (ambient : ρ) (labels : Label d → Λ) (exit : Option Λ) (target : Λ → TM2.Stmt (fun _ : Tape => Bool) Λ (State ρ d)) (code : ∀ l, target (labels l) = statement positive r.smallTable id labels exit l) : StateTransition.EvalsToInTime (TM2.step target) ⟨some (labels .initialize), divisionState positive ambient r.control0 none, frame0 r output⟩ (some ⟨exit, divisionState positive ambient r.control2 none, emittedWord .output (frame0 r output) r.finalValue⟩) (80 * (r.tableLength + 1)) where …Mentions: OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.RowData, OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.Label, OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.Tape, OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.State, OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.statement, OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.divisionState, OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.frame0, OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.emittedWord
- def
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.rowInTimeline 592Source documentation
Specialization to the standalone finite row program.
def rowInTime {v d : Nat} {ρ : Type} [Fintype ρ] (positive : 0 < d) (r : RowData v d) (output : List Bool) (ambient : ρ) : StateTransition.EvalsToInTime (TM2.step (program positive r.smallTable)) ⟨some .initialize, divisionState positive ambient r.control0 none, frame0 r output⟩ (some ⟨none, divisionState positive ambient r.control2 none, emittedWord .output (frame0 r output) r.finalValue⟩) (80 * (r.tableLength + 1)) := …Mentions: OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.RowData, OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.program, OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.divisionState, OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.frame0, OAI.MaxCutGames.Foundations.Complexity.MachineExpanderRow.emittedWord
- theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderTable.caller_boundaryStateline 618 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderTable.prepareState_boundaryStateline 622 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderTable.clearRegister_boundaryStateline 627 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderTable.caller_prepareStateline 632 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderTable.caller_resetStateline 635 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderTable.caller_clearRegisterline 638 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderTable.caller_advancePositionStateline 641 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderTable.caller_resetPositionStateline 644 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderTable.nextPosition_val_of_ltline 647 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderTable.boundaryTapes_update_countline 652Source documentation
Replacing the count word leaves the entire row frame and result unchanged.
theorem boundaryTapes_update_count (vertex remaining next : Nat) (oldTable output countSuffix result : List Bool) : Function.update (boundaryTapes vertex remaining oldTable output countSuffix result) (.inr .vertexCount) (encodeWord next ++ countSuffix) = boundaryTapes vertex next oldTable output countSuffix result := by …Mentions: OAI.MaxCutGames.Foundations.Complexity.MachineExpanderTable.boundaryTapes, OAI.MaxCutGames.Foundations.Complexity.encodeWord
- theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderTable.boundaryTapes_increment_vertexline 663Source documentation
The last row's one actual push increments the unary vertex word.
theorem boundaryTapes_increment_vertex (vertex remaining : Nat) (oldTable output countSuffix result : List Bool) : Function.update (boundaryTapes vertex remaining oldTable output countSuffix result) (.inl .inputVertex) (true :: encodeWord vertex) = boundaryTapes (vertex + 1) remaining oldTable output countSuffix result := by …Mentions: OAI.MaxCutGames.Foundations.Complexity.MachineExpanderTable.boundaryTapes, OAI.MaxCutGames.Foundations.Complexity.encodeWord
- theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderTable.initialTapes_initializeline 676 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderTable.initializeStepline 690 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderTable.initialize_boundaryStepline 699 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderTable.vertexGuard_succStepline 715Source documentation
A positive vertex counter is physically decremented; its suffix remains.
theorem vertexGuard_succStep (positive : 0 < d) (H : Table (cloudSize d) d) (base : ∀ tape, List (Alphabet tape)) (state : State ρ d) (remaining : Nat) (suffix : List Bool) (counter : base (.inr .vertexCount) = encodeWord (remaining + 1) ++ suffix) : TM2.step (program positive H) ⟨some (.inr .vertexGuard), state, base⟩ = some ⟨some (.inr .prepareRow), clearRegister state, Function.update base (.inr .vertexCount) (encodeWord remaining ++ suffix)⟩ := by …Mentions: OAI.MaxCutGames.Foundations.Complexity.MachineExpanderTable.Alphabet, OAI.MaxCutGames.Foundations.Complexity.MachineExpanderTable.State, OAI.MaxCutGames.Foundations.Complexity.encodeWord, OAI.MaxCutGames.Foundations.Complexity.MachineExpanderTable.program, OAI.MaxCutGames.Foundations.Complexity.MachineExpanderTable.clearRegister
- theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderTable.vertexGuard_zeroStepline 728Source documentation
The zero delimiter is retained when the loop enters output reversal.
theorem vertexGuard_zeroStep (positive : 0 < d) (H : Table (cloudSize d) d) (base : ∀ tape, List (Alphabet tape)) (state : State ρ d) (suffix : List Bool) (counter : base (.inr .vertexCount) = encodeWord 0 ++ suffix) : TM2.step (program positive H) ⟨some (.inr .vertexGuard), state, base⟩ = some ⟨some (.inr .reverseOutput), clearRegister state, base⟩ := by …Mentions: OAI.MaxCutGames.Foundations.Complexity.MachineExpanderTable.Alphabet, OAI.MaxCutGames.Foundations.Complexity.MachineExpanderTable.State, OAI.MaxCutGames.Foundations.Complexity.encodeWord, OAI.MaxCutGames.Foundations.Complexity.MachineExpanderTable.program, OAI.MaxCutGames.Foundations.Complexity.MachineExpanderTable.clearRegister
- theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderTable.vertexGuard_boundary_succStepline 739 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderTable.vertexGuard_boundary_zeroStepline 752 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderTable.prepareRowStepline 763Source documentation
Preparing a row modifies finite control only, preserving every tape.
theorem prepareRowStep (positive : 0 < d) (H : Table (cloudSize d) d) (base : ∀ tape, List (Alphabet tape)) (state : State ρ d) : TM2.step (program positive H) ⟨some (.inr .prepareRow), state, base⟩ = some ⟨some (.inl .initialize), prepareState positive H state, base⟩ := by …Mentions: OAI.MaxCutGames.Foundations.Complexity.MachineExpanderTable.Alphabet, OAI.MaxCutGames.Foundations.Complexity.MachineExpanderTable.State, OAI.MaxCutGames.Foundations.Complexity.MachineExpanderTable.program, OAI.MaxCutGames.Foundations.Complexity.MachineExpanderTable.prepareState
- theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderTable.afterRow_moreStepline 772Source documentation
A nonfinal row advances the finite position without changing tapes.
theorem afterRow_moreStep (positive : 0 < d) (H : Table (cloudSize d) d) (base : ∀ tape, List (Alphabet tape)) (state : State ρ d) (more : state.2.val + 1 < rowFactor d) : TM2.step (program positive H) ⟨some (.inr .afterRow), state, base⟩ = some ⟨some (.inr .prepareRow), advancePositionState positive state, base⟩ := by …Mentions: OAI.MaxCutGames.Foundations.Complexity.MachineExpanderTable.Alphabet, OAI.MaxCutGames.Foundations.Complexity.MachineExpanderTable.State, OAI.MaxCutGames.Foundations.Complexity.MachineExpanderTable.program, OAI.MaxCutGames.Foundations.Complexity.MachineExpanderTable.advancePositionState
- theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderTable.afterRow_lastStepline 782Source documentation
The final row increments the tape vertex and resets the finite position.
theorem afterRow_lastStep (positive : 0 < d) (H : Table (cloudSize d) d) (base : ∀ tape, List (Alphabet tape)) (state : State ρ d) (last : ¬ state.2.val + 1 < rowFactor d) : TM2.step (program positive H) ⟨some (.inr .afterRow), state, base⟩ = some ⟨some (.inr .vertexGuard), resetPositionState positive state, Function.update base (.inl .inputVertex) (true :: base (.inl .inputVertex))⟩ := by …Mentions: OAI.MaxCutGames.Foundations.Complexity.MachineExpanderTable.Alphabet, OAI.MaxCutGames.Foundations.Complexity.MachineExpanderTable.State, OAI.MaxCutGames.Foundations.Complexity.MachineExpanderTable.program, OAI.MaxCutGames.Foundations.Complexity.MachineExpanderTable.resetPositionState
- theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderTable.afterRow_last_boundaryStepline 792 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderTable.reverseOutput_consStepline 812Source documentation
One reversal step moves an actual symbol and preserves the finite position.
theorem reverseOutput_consStep (positive : 0 < d) (H : Table (cloudSize d) d) (base : ∀ tape, List (Alphabet tape)) (state : State ρ d) (symbol : Bool) (word : List Bool) (source : base (.inl .output) = symbol :: word) : TM2.step (program positive H) ⟨some (.inr .reverseOutput), state, base⟩ = some ⟨some (.inr .reverseOutput), ((state.1.1, some symbol), state.2), Function.update (Function.update base (.inl .output) word) (.inr .result) (symbol :: base (.inr .result))⟩ := by …Mentions: OAI.MaxCutGames.Foundations.Complexity.MachineExpanderTable.Alphabet, OAI.MaxCutGames.Foundations.Complexity.MachineExpanderTable.State, OAI.MaxCutGames.Foundations.Complexity.MachineExpanderTable.program
- theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderTable.reverseOutput_nilStepline 824 - theorem
OAI.MaxCutGames.Foundations.Complexity.MachineExpanderTable.doneStepline 836