OAI/Computability/UniqueGames/Machines/MachineBinaryNameMachine.lean
29 declarations, 0 contain sorry, 0 declared as axioms
- def
OAI.UniqueGamesTheorem.BinaryNameMachine.frameline 15 - def
OAI.UniqueGamesTheorem.BinaryNameMachine.finalDigitline 19 - def
OAI.UniqueGamesTheorem.BinaryNameMachine.canonicalline 23 - structure
OAI.UniqueGamesTheorem.BinaryNameMachine.Resultline 25 - def
OAI.UniqueGamesTheorem.BinaryNameMachine.scanSpecline 32Source documentation
A specification with the same one- or two-symbol cases as the program.
def scanSpec : List Bool → List Bool → Option Bool → Result | [], acc, _ => ⟨false, [], acc⟩ | false :: rest, acc, last => ⟨last.getD true, rest, acc⟩ | [true], acc, _ => ⟨false, [], acc⟩ | true :: bit :: rest, acc, _ => scanSpec rest (bit :: acc) (some bit)
- def
OAI.UniqueGamesTheorem.BinaryNameMachine.stepsline 38 - theorem
OAI.UniqueGamesTheorem.BinaryNameMachine.steps_leline 42 - theorem
OAI.UniqueGamesTheorem.BinaryNameMachine.frame_lengthline 51 - theorem
OAI.UniqueGamesTheorem.BinaryNameMachine.scanSpec_frameline 57 - theorem
OAI.UniqueGamesTheorem.BinaryNameMachine.steps_frameline 66 - abbrev
OAI.UniqueGamesTheorem.BinaryNameMachine.Alphabetline 76 - abbrev
OAI.UniqueGamesTheorem.BinaryNameMachine.Stateline 77 - def
OAI.UniqueGamesTheorem.BinaryNameMachine.cleanline 79 - def
OAI.UniqueGamesTheorem.BinaryNameMachine.exitAtline 81 - def
OAI.UniqueGamesTheorem.BinaryNameMachine.finishline 86 - def
OAI.UniqueGamesTheorem.BinaryNameMachine.scanline 90Source documentation
Only the finite head and final-digit registers are inspected by branches.
def scan (source destination : K) (again : Λ) (accepted rejected : Option Λ) : TM2.Stmt (Alphabet (K := K)) Λ (State A) := …Mentions: OAI.UniqueGamesTheorem.BinaryNameMachine.Alphabet, OAI.UniqueGamesTheorem.BinaryNameMachine.State
- theorem
OAI.UniqueGamesTheorem.BinaryNameMachine.stepAux_finishline 105 - theorem
OAI.UniqueGamesTheorem.BinaryNameMachine.update_sourceline 110 - theorem
OAI.UniqueGamesTheorem.BinaryNameMachine.update_destinationline 121 - theorem
OAI.UniqueGamesTheorem.BinaryNameMachine.step_emptyline 135 - theorem
OAI.UniqueGamesTheorem.BinaryNameMachine.step_endline 143 - theorem
OAI.UniqueGamesTheorem.BinaryNameMachine.step_truncatedline 154 - theorem
OAI.UniqueGamesTheorem.BinaryNameMachine.step_digitline 162 - theorem
OAI.UniqueGamesTheorem.BinaryNameMachine.scanTraceline 173Source documentation
Total correspondence, including malformed input and its exact unread suffix.
theorem scanTrace (input output : List Bool) (last register : Option Bool) : (advance (TM2.step program))^[steps input] (some ⟨some again, (ambient, last, register), tapesAt source destination base input output⟩) = some ⟨if (scanSpec input output last).accepted then accepted else rejected, clean ambient, tapesAt source destination base (scanSpec input output last).remaining (scanSpec input output last).reversedPayload⟩ := by …Mentions: OAI.UniqueGamesTheorem.BinaryNameMachine.steps, OAI.UniqueGamesTheorem.BinaryNameMachine.scanSpec, OAI.UniqueGamesTheorem.BinaryNameMachine.clean
- def
OAI.UniqueGamesTheorem.BinaryNameMachine.scanInTimeline 208Source documentation
A real timed execution; the instruction equation is the only program premise.
def scanInTime (input output : List Bool) (last register : Option Bool) : StateTransition.EvalsToInTime (TM2.step program) ⟨some again, (ambient, last, register), tapesAt source destination base input output⟩ (some ⟨if (scanSpec input output last).accepted then accepted else rejected, clean ambient, tapesAt source destination base (scanSpec input output last).remaining (scanSpec input output last).reversedPayload⟩) (input.length + 1) where …Mentions: OAI.UniqueGamesTheorem.BinaryNameMachine.scanSpec, OAI.UniqueGamesTheorem.BinaryNameMachine.clean
- theorem
OAI.UniqueGamesTheorem.BinaryNameMachine.framedTraceline 222Source documentation
A complete framed name needs exactly one transition per digit and one for the terminator. No transition inspects the magnitude denoted by the payload.
theorem framedTrace (bits suffix output : List Bool) (register : Option Bool) : (advance (TM2.step program))^[bits.length + 1] (some ⟨some again, (ambient, none, register), tapesAt source destination base (frame bits ++ suffix) output⟩) = some ⟨if canonical bits then accepted else rejected, clean ambient, tapesAt source destination base suffix (bits.reverse ++ output)⟩ := by …Mentions: OAI.UniqueGamesTheorem.BinaryNameMachine.frame, OAI.UniqueGamesTheorem.BinaryNameMachine.canonical, OAI.UniqueGamesTheorem.BinaryNameMachine.clean
- def
OAI.UniqueGamesTheorem.BinaryNameMachine.machineline 237Source documentation
One concrete machine with two Boolean stacks and finite control. The two exit labels expose acceptance to a caller; the scanner leaves them unexecuted.
def machine : FinTM2 where …
- theorem
OAI.UniqueGamesTheorem.BinaryNameMachine.machine_finiteAlphabetline 248 - def
OAI.UniqueGamesTheorem.BinaryNameMachine.machineInTimeline 254Source documentation
The bounded run instantiated with the displayed finite machine, including its actual entry and two actual exit labels.
def machineInTime (input output : List Bool) : StateTransition.EvalsToInTime machine.step ⟨some (0 : Fin 3), clean (), tapesAt false true (fun _ : Bool => []) input output⟩ (some ⟨if (scanSpec input output none).accepted then some (1 : Fin 3) else some (2 : Fin 3), clean (), tapesAt false true (fun _ : Bool => []) (scanSpec input output none).remaining (scanSpec input output none).reversedPayload⟩) (input.length + 1) := …Mentions: OAI.UniqueGamesTheorem.BinaryNameMachine.clean, OAI.UniqueGamesTheorem.BinaryNameMachine.scanSpec