OAI/Computability/UniqueGames/Machines/MachineCloudCount.lean
61 declarations, 0 contain sorry, 0 declared as axioms
- inductive
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.Tapeline 12 - abbrev
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.Tape.enumListline 16 - theorem
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.Tape.enumList_getElem?_ctorIdx_eqline 19 - theorem
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.Tape.enumList_nodupline 23 - instance
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.(instance at line 25)line 25 - abbrev
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.Alphabetline 29 - abbrev
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.Stateline 30 - def
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.memoryline 32 - theorem
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.memory_originalline 40 - theorem
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.memory_workline 42 - theorem
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.memory_targetline 44 - theorem
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.memory_scratchline 46 - theorem
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.memory_countline 48 - theorem
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.memory_spareline 50 - theorem
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.update_memory_workline 53 - theorem
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.update_memory_targetline 57 - theorem
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.update_memory_scratchline 61 - theorem
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.update_memory_countline 65 - def
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.finishFieldline 72 - def
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.fieldLoopline 75 - def
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.hitline 90Source documentation
Specification only: equality of the original natural values, unless an earlier step has already detected overflow.
def hit (flag : Bool) (x v : Nat) : Nat := if flag = false ∧ x = v then 1 else 0
- theorem
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.fieldStep_zeroline 92 - theorem
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.fieldStep_succ_zeroline 109 - theorem
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.fieldStep_succ_succline 125 - theorem
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.fieldTraceline 143Source documentation
The actual field-reading trace. The scratch holds exactly the consumed target bits, and the output increment records equality of the complete field.
theorem fieldTrace (again restore : Λ) (program : Λ → TM2.Stmt Alphabet Λ (State σ)) (atField : program again = fieldLoop again restore) (original suffix targetSuffix spare : List Bool) (x v : Nat) (scratch count : List Bool) (ambient : σ) (flag : Bool) (register : Option Bool) : (advance (TM2.step program))^[x + 1] (some ⟨some again, ((ambient, flag), register), memory original (encodeWord x ++ suffix) (encodeWord v ++ targetSuffix) scratch count spare⟩) = some ⟨some restore, ((ambient, false), none), memory original suffix (encodeWord (v - x) ++ targetSuffix) (List.replicate (min x v) true ++ scratch) …Mentions: OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.program, OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.Alphabet, OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.State, OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.fieldLoop, OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.memory, OAI.UniqueGamesTheorem.Foundations.Complexity.encodeWord
- theorem
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.replicate_encodeWordline 177 - theorem
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.preservingFieldTraceline 182Source documentation
The actual restoring transfer returns every consumed target bit.
theorem preservingFieldTrace (again restore next : Λ) (program : Λ → TM2.Stmt Alphabet Λ (State σ)) (atField : program again = fieldLoop again restore) (atRestore : program restore = Reduction.MachineTransfer.loopAt .scratch .target id false restore (some next)) (original suffix targetSuffix count spare : List Bool) (x v : Nat) (ambient : σ) (register : Option Bool) : (advance (TM2.step program))^[x + min x v + 2] (some ⟨some again, ((ambient, false), register), memory original (encodeWord x ++ suffix) (encodeWord v ++ targetSuffix) [] count spare⟩) = some ⟨some next, ((ambient, false), none), …Mentions: OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.program, OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.Alphabet, OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.State, OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.fieldLoop, OAI.UniqueGamesTheorem.Reduction.MachineTransfer.loopAt, OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.memory, OAI.UniqueGamesTheorem.Foundations.Complexity.encodeWord
- def
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.preservingFieldInTimeline 214 - theorem
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.discardFieldsTraceline 236Source documentation
Consecutive concrete field-discard instructions consume a fixed list of fields. The hypotheses specify code, not an abstract body execution.
theorem discardFieldsTrace (labels : Nat → Λ) (program : Λ → TM2.Stmt Alphabet Λ (State σ)) (fields : List Nat) (offset : Nat) (atField : ∀ i, i < fields.length → program (labels (offset + i)) = MachineLookup.discard .work (labels (offset + i)) (labels (offset + i + 1))) (original suffix target scratch count spare : List Bool) (ambient : σ) (flag : Bool) (register : Option Bool) : (advance (TM2.step program))^[(encodeWords fields).length] (some ⟨some (labels offset), ((ambient, flag), register), memory original (encodeWords fields ++ suffix) target scratch count spare⟩) = some ⟨some (labels (offset + fields.length)), ((ambient, flag), if fields = [] then register else none), …Mentions: OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.program, OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.Alphabet, OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.State, OAI.UniqueGamesTheorem.Foundations.Complexity.MachineLookup.discard, OAI.UniqueGamesTheorem.Foundations.Complexity.encodeWords, OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.memory
- inductive
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.Labelline 271 - def
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.skipLabelline 276 - def
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.rowEntryline 279 - def
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.programline 287Source documentation
A single fixed program copies the input once, skips two headers, then compares the first field of each 4098-field row.
def program : Label → TM2.Stmt Alphabet Label (State σ) | .copyFirst => Reduction.MachineTransfer.loopAt .original .spare id false .copyFirst (some .copySecond) | .copySecond => MachineCopy.forkLoop .spare .original .work false .copySecond (some .headerFirst) | .headerFirst => MachineLookup.discard .work .headerFirst .headerSecond | .headerSecond => MachineLookup.discard .work .headerSecond .row | .row => rowEntry | .field => fieldLoop .field .restore | .restore => Reduction.MachineTransfer.loopAt .scratch .target id false .restore (some (skipLabel 0)) | .skip i => MachineLookup.discard .work (.skip i) (skipLabel (i.val + 1))Mentions: OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.Label, OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.Alphabet, OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.State, OAI.UniqueGamesTheorem.Reduction.MachineTransfer.loopAt, OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCopy.forkLoop, OAI.UniqueGamesTheorem.Foundations.Complexity.MachineLookup.discard, OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.rowEntry, OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.fieldLoop, OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.skipLabel
- theorem
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.program_skipline 300 - theorem
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.rowStep_nonemptyline 305 - theorem
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.rowStep_emptyline 315 - abbrev
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.Rowline 321 - def
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.rowWordsline 323 - def
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.rowTimeline 325 - theorem
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.rowTraceline 329Source documentation
One complete stored row is consumed; the target and original are restored.
theorem rowTrace (r : Row) (hwidth : r.2.length = 4097) (v : Nat) (original suffix targetSuffix count spare : List Bool) (ambient : σ) (register : Option Bool) : (advance (TM2.step (program (σ := σ))))^[rowTime v r] …Mentions: OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.Row, OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.program, OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.rowTime
- def
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.rowsHitsline 364 - def
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.rowsTimeline 368 - theorem
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.rowsTraceline 373Source documentation
The complete actual row scan halts with the number of matching tails.
theorem rowsTrace (rs : List Row) (hwidth : ∀ r ∈ rs, r.2.length = 4097) (v : Nat) (original targetSuffix count spare : List Bool) (ambient : σ) (register : Option Bool) : (advance (TM2.step (program (σ := σ))))^[rowsTime v rs] …Mentions: OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.Row, OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.program, OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.rowsTime
- theorem
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.rowTime_leline 397 - theorem
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.rowsTime_leline 406 - def
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.inputWordline 416 - theorem
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.inputWord_eqline 419 - theorem
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.inputWord_lengthline 423 - def
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.totalStepsline 430 - theorem
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.countTraceline 435Source documentation
One preserving copy, the two concrete header discards, and the proved row scan form the complete execution. The input and target tapes are unchanged.
theorem countTrace (n m v : Nat) (rs : List Row) (hwidth : ∀ r ∈ rs, r.2.length = 4097) (targetSuffix count : List Bool) (ambient : σ) (register : Option Bool) : (advance (TM2.step (program (σ := σ))))^[totalSteps n m v rs] …Mentions: OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.Row, OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.program, OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.totalSteps
- theorem
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.totalSteps_leline 470 - def
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.tableRowsline 479 - theorem
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.tableRows_widthline 483 - theorem
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.tableRows_wordsline 489 - theorem
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.tableRows_inputline 496 - theorem
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.rowsHits_eq_filterline 501 - theorem
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.rowList_eq_finRange_mapline 508 - theorem
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.rowList_cloud_countline 515 - theorem
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.tableRows_hitsline 521 - theorem
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.cloudCountTraceline 529Source documentation
Cloud size is produced by reading the actual encoded tail fields, with the complete graph input and unary vertex query preserved on their tapes.
theorem cloudCountTrace (t : GraphTables.Table) (v : Fin t.vertices) (targetSuffix countSuffix : List Bool) (ambient : σ) (register : Option Bool) : (advance (TM2.step (program (σ := σ))))^[totalSteps t.vertices t.darts v.val (tableRows t)] …Mentions: OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.program, OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.totalSteps, OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.tableRows
- def
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.cloudCountInTimeline 544Source documentation
A linear transition budget for this concrete cloud-count subroutine.
def cloudCountInTime (t : GraphTables.Table) (v : Fin t.vertices) (targetSuffix countSuffix : List Bool) (ambient : σ) (register : Option Bool) : StateTransition.EvalsToInTime (TM2.step (program (σ := σ))) …Mentions: OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCloudCount.program