OAI/Computability/UniqueGames/Machines/MachineBinaryNameSearch.lean
37 declarations, 0 contain sorry, 0 declared as axioms
First-occurrence search over signed, framed binary names. The stream has no clause markers. Every iteration discards one sign, scans and compares the actual candidate payload, and increments a Boolean unary counter only after a mismatch. The preserved key is a reversed payload, never a unary name.
The six explicitly distinct tapes are: stream, preserved key, candidate, copied key, copy scratch, and unary occurrence counter. Successful search consumes precisely the prefix through the first matching name, preserves the unread suffix and all ambient tapes, and returns the three work tapes empty. The time theorem follows from literal instruction equations and checked comparison executions, with no supplied loop-body trace premise.
- abbrev
OAI.UniqueGamesTheorem.BinaryNameSearch.Tokenline 29 - def
OAI.UniqueGamesTheorem.BinaryNameSearch.tokenBitsline 31 - def
OAI.UniqueGamesTheorem.BinaryNameSearch.streamline 34 - def
OAI.UniqueGamesTheorem.BinaryNameSearch.payloadsline 38 - def
OAI.UniqueGamesTheorem.BinaryNameSearch.afterMatchline 40 - def
OAI.UniqueGamesTheorem.BinaryNameSearch.stepsline 44 - def
OAI.UniqueGamesTheorem.BinaryNameSearch.payloadSizeline 50 - theorem
OAI.UniqueGamesTheorem.BinaryNameSearch.stream_nilline 52 - theorem
OAI.UniqueGamesTheorem.BinaryNameSearch.stream_consline 54 - theorem
OAI.UniqueGamesTheorem.BinaryNameSearch.payloads_nilline 57 - theorem
OAI.UniqueGamesTheorem.BinaryNameSearch.payloads_consline 59 - theorem
OAI.UniqueGamesTheorem.BinaryNameSearch.payloadSize_nilline 62 - theorem
OAI.UniqueGamesTheorem.BinaryNameSearch.payloadSize_consline 64 - theorem
OAI.UniqueGamesTheorem.BinaryNameSearch.stream_lengthline 67 - theorem
OAI.UniqueGamesTheorem.BinaryNameSearch.steps_leline 77Source documentation
Work is linear in the scanned payloads plus one key-copy cost per token.
theorem steps_le (tokens : List Token) (key : List Bool) : steps tokens key ≤ 2 * payloadSize tokens + (3 * key.length + 6) * tokens.length := by …Mentions: OAI.UniqueGamesTheorem.BinaryNameSearch.Token, OAI.UniqueGamesTheorem.BinaryNameSearch.steps, OAI.UniqueGamesTheorem.BinaryNameSearch.payloadSize
- theorem
OAI.UniqueGamesTheorem.BinaryNameSearch.steps_le_streamline 87Source documentation
This bound uses lengths of actual encoded words, not decoded name values.
theorem steps_le_stream (tokens : List Token) (key : List Bool) : steps tokens key ≤ (3 * key.length + 7) * (stream tokens).length := by …Mentions: OAI.UniqueGamesTheorem.BinaryNameSearch.Token, OAI.UniqueGamesTheorem.BinaryNameSearch.steps, OAI.UniqueGamesTheorem.BinaryNameSearch.stream
- abbrev
OAI.UniqueGamesTheorem.BinaryNameSearch.Alphabetline 97 - abbrev
OAI.UniqueGamesTheorem.BinaryNameSearch.Stateline 98 - abbrev
OAI.UniqueGamesTheorem.BinaryNameSearch.cleanline 100 - inductive
OAI.UniqueGamesTheorem.BinaryNameSearch.Labelline 102 - def
OAI.UniqueGamesTheorem.BinaryNameSearch.compareTapesline 108 - theorem
OAI.UniqueGamesTheorem.BinaryNameSearch.compareTapes_injectiveline 111 - def
OAI.UniqueGamesTheorem.BinaryNameSearch.exitAtline 117 - def
OAI.UniqueGamesTheorem.BinaryNameSearch.finishline 122 - def
OAI.UniqueGamesTheorem.BinaryNameSearch.instructionline 125 - theorem
OAI.UniqueGamesTheorem.BinaryNameSearch.stepAux_finishline 136 - theorem
OAI.UniqueGamesTheorem.BinaryNameSearch.update_sourceline 140 - theorem
OAI.UniqueGamesTheorem.BinaryNameSearch.update_counterline 151 - theorem
OAI.UniqueGamesTheorem.BinaryNameSearch.joinTraceline 157 - theorem
OAI.UniqueGamesTheorem.BinaryNameSearch.signStepline 170 - theorem
OAI.UniqueGamesTheorem.BinaryNameSearch.emptyStepline 181 - theorem
OAI.UniqueGamesTheorem.BinaryNameSearch.incrementStepline 192 - theorem
OAI.UniqueGamesTheorem.BinaryNameSearch.tokenTraceline 203Source documentation
One sign is consumed, then the actual shared scan/copy/compare routine runs.
theorem tokenTrace (token : Token) (key suffix counter : List Bool) (canonical : BinaryNameMachine.canonical token.2 = true) (keyWord : base (tape 1) = key.reverse) (candidateEmpty : base (tape 2) = []) (copyEmpty : base (tape 3) = []) (scratchEmpty : base (tape 4) = []) : (advance (TM2.step program))^[1 + BinaryNameCompare.steps token.2.length key.length] (some ⟨some (labels .sign), clean ambient, tapesAt (tape 0) (tape 5) base (tokenBits token ++ suffix) counter⟩) = some ⟨if token.2 = key then foundExit else some (labels .increment), clean ambient, tapesAt (tape 0) (tape 5) base suffix counter⟩ := by …Mentions: OAI.UniqueGamesTheorem.BinaryNameSearch.Token, OAI.UniqueGamesTheorem.BinaryNameMachine.canonical, OAI.UniqueGamesTheorem.BinaryNameCompare.steps, OAI.UniqueGamesTheorem.BinaryNameSearch.clean, OAI.UniqueGamesTheorem.BinaryNameSearch.tokenBits
- theorem
OAI.UniqueGamesTheorem.BinaryNameSearch.searchTraceline 251Source documentation
Successful search returns exactly the first occurrence index. All labels are literal instruction equations, so this theorem supplies its own body runs.
theorem searchTrace (tokens : List Token) (key suffix counter : List Bool) (canonical : ∀ token ∈ tokens, BinaryNameMachine.canonical token.2 = true) (present : key ∈ payloads tokens) (keyWord : base (tape 1) = key.reverse) (candidateEmpty : base (tape 2) = []) (copyEmpty : base (tape 3) = []) (scratchEmpty : base (tape 4) = []) : (advance (TM2.step program))^[steps tokens key] (some ⟨some (labels .sign), clean ambient, tapesAt (tape 0) (tape 5) base (stream tokens ++ suffix) counter⟩) = some ⟨foundExit, clean ambient, tapesAt (tape 0) (tape 5) base (stream (afterMatch tokens key) ++ suffix) (List.replicate ((payloads tokens).idxOf key) true ++ counter)⟩ := by …Mentions: OAI.UniqueGamesTheorem.BinaryNameSearch.Token, OAI.UniqueGamesTheorem.BinaryNameMachine.canonical, OAI.UniqueGamesTheorem.BinaryNameSearch.payloads, OAI.UniqueGamesTheorem.BinaryNameSearch.steps, OAI.UniqueGamesTheorem.BinaryNameSearch.clean, OAI.UniqueGamesTheorem.BinaryNameSearch.stream, OAI.UniqueGamesTheorem.BinaryNameSearch.afterMatch
- def
OAI.UniqueGamesTheorem.BinaryNameSearch.searchInTimeline 303Source documentation
Explicit polynomial bound for the actual successful run.
def searchInTime (tokens : List Token) (key suffix counter : List Bool) (canonical : ∀ token ∈ tokens, BinaryNameMachine.canonical token.2 = true) (present : key ∈ payloads tokens) (keyWord : base (tape 1) = key.reverse) (candidateEmpty : base (tape 2) = []) (copyEmpty : base (tape 3) = []) (scratchEmpty : base (tape 4) = []) : StateTransition.EvalsToInTime (TM2.step program) ⟨some (labels .sign), clean ambient, tapesAt (tape 0) (tape 5) base (stream tokens ++ suffix) counter⟩ (some ⟨foundExit, clean ambient, tapesAt (tape 0) (tape 5) base (stream (afterMatch tokens key) ++ suffix) (List.replicate ((payloads tokens).idxOf key) true ++ counter)⟩) …Mentions: OAI.UniqueGamesTheorem.BinaryNameSearch.Token, OAI.UniqueGamesTheorem.BinaryNameMachine.canonical, OAI.UniqueGamesTheorem.BinaryNameSearch.payloads, OAI.UniqueGamesTheorem.BinaryNameSearch.clean, OAI.UniqueGamesTheorem.BinaryNameSearch.stream, OAI.UniqueGamesTheorem.BinaryNameSearch.afterMatch
- def
OAI.UniqueGamesTheorem.BinaryNameSearch.machineline 325Source documentation
Concrete finite-control instantiation; the counter is its designated output.
def machine : FinTM2 where …
- theorem
OAI.UniqueGamesTheorem.BinaryNameSearch.machine_finiteAlphabetline 338