OAI/Computability/UniqueGames/Machines/MachineCompare.lean
26 declarations, 0 contain sorry, 0 declared as axioms
A destructive equality test on two actual Bool stacks
Each loop transition pops both stacks and compares only the two finite head registers. A sticky mismatch flag makes the loop continue after disagreement. The final empty/empty test selects an equal or different continuation and resets all comparison registers. The ambient state and every other tape are preserved.
- abbrev
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCompare.Alphabetline 24 - abbrev
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCompare.Stateline 25 - def
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCompare.exitAtline 28Source documentation
An optional continuation, without reading or writing any tape.
def exitAt (exit : Option Λ) : TM2.Stmt (Alphabet K) Λ (State σ) := …
Mentions: OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCompare.Alphabet, OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCompare.State
- def
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCompare.finishline 34Source documentation
Clear both head registers and the mismatch flag after choosing the exit.
def finish (exit : Option Λ) : TM2.Stmt (Alphabet K) Λ (State σ) := …
Mentions: OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCompare.Alphabet, OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCompare.State
- def
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCompare.loopline 39Source documentation
The only comparison performed by the program is on two
Option Boolheads. In particular, no statement is given a whole-list equality oracle.def loop (left right : K) (loopLabel : Λ) (equalExit differentExit : Option Λ) : TM2.Stmt (Alphabet K) Λ (State σ) := …Mentions: OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCompare.Alphabet, OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCompare.State
- def
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCompare.mismatchline 50Source documentation
Specification-only outcome, also recording an earlier mismatch.
def mismatch (flag : Bool) (leftWord rightWord : List Bool) : Bool := …
- theorem
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCompare.mismatch_nil_nilline 53 - theorem
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCompare.mismatch_nil_consline 56 - theorem
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCompare.mismatch_cons_nilline 59 - theorem
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCompare.mismatch_trueline 62 - theorem
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCompare.mismatch_consline 65 - theorem
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCompare.stepAux_exitAtline 70 - theorem
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCompare.stepAux_finishline 75 - theorem
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCompare.update_leftline 81 - theorem
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCompare.update_rightline 94 - theorem
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCompare.step_emptyline 100 - theorem
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCompare.step_nil_consline 117 - theorem
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCompare.step_cons_nilline 132 - theorem
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCompare.step_cons_consline 147 - theorem
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCompare.trace_left_emptyline 164 - theorem
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCompare.compareTrace_flagline 191Source documentation
The exact trace with a possibly pre-existing mismatch. Every input symbol is consumed even when disagreement has already been detected.
theorem compareTrace_flag (left right : K) (distinct : left ≠ right) (loopLabel : Λ) (equalExit differentExit : Option Λ) (program : Λ → TM2.Stmt (Alphabet K) Λ (State σ)) (atLoop : program loopLabel = loop left right loopLabel equalExit differentExit) (base : K → List Bool) (leftWord rightWord : List Bool) (ambient : σ) (flag : Bool) (leftRegister rightRegister : Option Bool) : (MachineComposition.advance (TM2.step program))^[max leftWord.length rightWord.length + 1] (some ⟨some loopLabel, (ambient, flag, leftRegister, rightRegister), tapesAt left right base leftWord rightWord⟩) = some ⟨if mismatch flag leftWord rightWord then differentExit else equalExit, (ambient, false, none, none), tapesAt left right base [] []⟩ := by …Mentions: OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCompare.Alphabet, OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCompare.State, OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCompare.loop, OAI.UniqueGamesTheorem.Foundations.Complexity.MachineComposition.advance, OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCompare.mismatch
- theorem
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCompare.compareTraceline 228Source documentation
With a clear initial flag, the final continuation tests equality of the two complete original words. Both tapes and all comparison registers are empty.
theorem compareTrace (left right : K) (distinct : left ≠ right) (loopLabel : Λ) (equalExit differentExit : Option Λ) (program : Λ → TM2.Stmt (Alphabet K) Λ (State σ)) (atLoop : program loopLabel = loop left right loopLabel equalExit differentExit) (base : K → List Bool) (leftWord rightWord : List Bool) (ambient : σ) (leftRegister rightRegister : Option Bool) : (MachineComposition.advance (TM2.step program))^[max leftWord.length rightWord.length + 1] (some ⟨some loopLabel, (ambient, false, leftRegister, rightRegister), tapesAt left right base leftWord rightWord⟩) = some ⟨if leftWord = rightWord then equalExit else differentExit, (ambient, false, none, none), tapesAt left right base [] []⟩ := by …Mentions: OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCompare.Alphabet, OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCompare.State, OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCompare.loop, OAI.UniqueGamesTheorem.Foundations.Complexity.MachineComposition.advance
- theorem
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCompare.compareTrace_fromTapesline 243 - theorem
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCompare.drained_otherline 257Source documentation
The final tape family agrees with the original at every unselected tape.
theorem drained_other (left right k : K) (notLeft : k ≠ left) (notRight : k ≠ right) (base : K → List Bool) : tapesAt left right base [] [] k = base k := … - def
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCompare.compareInTimeline 262Source documentation
An actual timed execution witness, with the exact stored transition count.
def compareInTime (left right : K) (distinct : left ≠ right) (loopLabel : Λ) (equalExit differentExit : Option Λ) (program : Λ → TM2.Stmt (Alphabet K) Λ (State σ)) (atLoop : program loopLabel = loop left right loopLabel equalExit differentExit) (base : K → List Bool) (ambient : σ) (leftRegister rightRegister : Option Bool) : StateTransition.EvalsToInTime (TM2.step program) ⟨some loopLabel, (ambient, false, leftRegister, rightRegister), base⟩ (some ⟨if base left = base right then equalExit else differentExit, (ambient, false, none, none), tapesAt left right base [] []⟩) (max (base left).length (base right).length + 1) where …Mentions: OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCompare.Alphabet, OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCompare.State, OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCompare.loop
- theorem
OAI.UniqueGamesTheorem.Foundations.Complexity.MachineCompare.compareInTime_stepsline 277