OAI/Computability/UniqueGames/PCP/SourceFieldArrayLemmas.lean
74 declarations, 0 contain sorry, 0 declared as axioms
- def
OAI.UniqueGamesTheorem.Foundations.Hastad.SourceFieldArray.finishline 15 - theorem
OAI.UniqueGamesTheorem.Foundations.Hastad.SourceFieldArray.finishStepline 19 - def
OAI.UniqueGamesTheorem.Foundations.Hastad.SourceFieldArray.sequenceTapesline 30Source documentation
Exact successive stack updates, in the original field order.
def sequenceTapes (source : K) (destination : Nat → K) (base : K → List Bool) (offset : Nat) (values : List Nat) (suffix : List Bool) : K → List Bool := …Mentions: OAI.UniqueGamesTheorem.Foundations.Hastad.SourceFieldArray.destination
- theorem
OAI.UniqueGamesTheorem.Foundations.Hastad.SourceFieldArray.sequenceTraceline 40Source documentation
The trace is built from the actual single-field transitions. The only program premises identify the finitely many statements used by this record.
theorem sequenceTrace (source : K) (destination : Nat → K) (start loopLabel : Nat → Λ) (exit : Option Λ) (program : Λ → TM2.Stmt (Alphabet (K := K)) Λ (σ × Option Bool)) …Mentions: OAI.UniqueGamesTheorem.Foundations.Hastad.SourceFieldArray.destination, OAI.UniqueGamesTheorem.Foundations.Hastad.SourceFieldArray.loopLabel, OAI.UniqueGamesTheorem.Foundations.Hastad.SourceFieldArray.program
- def
OAI.UniqueGamesTheorem.Foundations.Hastad.SourceFieldArray.sequenceInTimeline 99 - theorem
OAI.UniqueGamesTheorem.Foundations.Hastad.SourceFieldArray.sequence_time_eq_lengthline 121 - theorem
OAI.UniqueGamesTheorem.Foundations.Hastad.SourceFieldArray.sequenceTapes_otherline 126 - theorem
OAI.UniqueGamesTheorem.Foundations.Hastad.SourceFieldArray.sequenceTapes_sourceline 141 - theorem
OAI.UniqueGamesTheorem.Foundations.Hastad.SourceFieldArray.sequenceTapes_selectedline 157Source documentation
Distinct field destinations contain exactly their own encoded value.
theorem sequenceTapes_selected (source : K) (destination : Nat → K) (base : K → List Bool) (offset : Nat) (values : List Nat) (suffix : List Bool) (j : Nat) (hj : j < values.length) (hsep : ∀ r, r < values.length → source ≠ destination (offset + r)) (hdist : ∀ r s, r < values.length → s < values.length → destination (offset + r) = destination (offset + s) → r = s) : sequenceTapes source destination base offset values suffix (destination (offset + j)) = encodeWord (values[j]'hj) ++ base (destination (offset + j)) := by …Mentions: OAI.UniqueGamesTheorem.Foundations.Hastad.SourceFieldArray.destination, OAI.UniqueGamesTheorem.Foundations.Hastad.SourceFieldArray.sequenceTapes
- def
OAI.UniqueGamesTheorem.Foundations.Hastad.SourceFieldArray.boundedIndexline 206Source documentation
Extend finite indices harmlessly outside the range used by the machine.
def boundedIndex (q j : Nat) : Fin (q + 1) := ⟨min j q, by omega⟩
- theorem
OAI.UniqueGamesTheorem.Foundations.Hastad.SourceFieldArray.boundedIndex_valline 208 - def
OAI.UniqueGamesTheorem.Foundations.Hastad.SourceFieldArray.destinationline 211 - def
OAI.UniqueGamesTheorem.Foundations.Hastad.SourceFieldArray.startLabelline 212 - def
OAI.UniqueGamesTheorem.Foundations.Hastad.SourceFieldArray.loopLabelline 213 - theorem
OAI.UniqueGamesTheorem.Foundations.Hastad.SourceFieldArray.destination_ne_sourceline 215 - theorem
OAI.UniqueGamesTheorem.Foundations.Hastad.SourceFieldArray.destination_injective_belowline 223 - theorem
OAI.UniqueGamesTheorem.Foundations.Hastad.SourceFieldArray.destination_eq_succline 230 - theorem
OAI.UniqueGamesTheorem.Foundations.Hastad.SourceFieldArray.output_sourceline 234 - theorem
OAI.UniqueGamesTheorem.Foundations.Hastad.SourceFieldArray.output_fieldline 242 - def
OAI.UniqueGamesTheorem.Foundations.Hastad.SourceFieldArray.programline 256Source documentation
Every label either seeds one field, scans that field, or executes the final halt.
def program (q : Nat) (label : Fin (q + 1) × Bool) : TM2.Stmt (fun _ : Fin (q + 1) => Bool) (Fin (q + 1) × Bool) (Unit × Option Bool) := … - def
OAI.UniqueGamesTheorem.Foundations.Hastad.SourceFieldArray.machineline 265 - theorem
OAI.UniqueGamesTheorem.Foundations.Hastad.SourceFieldArray.atStartline 276 - theorem
OAI.UniqueGamesTheorem.Foundations.Hastad.SourceFieldArray.atLoopline 280 - theorem
OAI.UniqueGamesTheorem.Foundations.Hastad.SourceFieldArray.atDoneline 285 - def
OAI.UniqueGamesTheorem.Foundations.Hastad.SourceFieldArray.machineInTimeline 288 - def
OAI.UniqueGamesTheorem.Foundations.Hastad.SourceFieldArray.machineInTime_inputBoundline 318Source documentation
The same actual execution has a linear bound measured in the complete input stack, including its unread suffix.
def machineInTime_inputBound (q : Nat) (values : List Nat) (hlen : values.length = q) (base : Fin (q + 1) → List Bool) (suffix : List Bool) (hinput : base 0 = encodeWords values ++ suffix) (register : Option Bool) : StateTransition.EvalsToInTime (machine q).step ⟨some (startLabel q 0), ((), register), base⟩ (some ⟨none, ((), none), sequenceTapes (0 : Fin (q + 1)) (destination q) base 0 values suffix⟩) ((base 0).length + q + 1) := by …Mentions: OAI.UniqueGamesTheorem.Foundations.Hastad.SourceFieldArray.machine, OAI.UniqueGamesTheorem.Foundations.Hastad.SourceFieldArray.startLabel, OAI.UniqueGamesTheorem.Foundations.Hastad.SourceFieldArray.sequenceTapes, OAI.UniqueGamesTheorem.Foundations.Hastad.SourceFieldArray.destination
- def
OAI.UniqueGamesTheorem.Foundations.Hastad.SourceFieldArray.sixFieldsInTimeline 333Source documentation
The six natural fields of a three-literal clause use seven actual stacks.
def sixFieldsInTime (base : Fin 7 → List Bool) (a b c d e f : Nat) (suffix : List Bool) (hinput : base 0 = encodeWords [a, b, c, d, e, f] ++ suffix) (register : Option Bool) : StateTransition.EvalsToInTime (machine 6).step ⟨some (startLabel 6 0), ((), register), base⟩ (some ⟨none, ((), none), sequenceTapes (0 : Fin 7) (destination 6) base 0 [a, b, c, d, e, f] suffix⟩) (a + b + c + d + e + f + 13) := by …Mentions: OAI.UniqueGamesTheorem.Foundations.Hastad.SourceFieldArray.machine, OAI.UniqueGamesTheorem.Foundations.Hastad.SourceFieldArray.startLabel, OAI.UniqueGamesTheorem.Foundations.Hastad.SourceFieldArray.sequenceTapes, OAI.UniqueGamesTheorem.Foundations.Hastad.SourceFieldArray.destination
- theorem
OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.discardFieldsTraceline 359Source documentation
Compose the actual unary scanners for a fixed sequence of control labels. The zero-field case is an identity, so the head register starts and ends clear.
theorem discardFieldsTrace (source : K) (label : Nat → Λ) (program : Λ → TM2.Stmt (Alphabet (K := K)) Λ (σ × Option Bool)) …Mentions: OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.program
- inductive
OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.Tapeline 402 - inductive
OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.Labelline 406 - def
OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.fieldDestinationline 412 - def
OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.readStartline 413 - def
OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.readLoopline 414 - def
OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.skipLabelline 415 - def
OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.headerLabelline 416 - def
OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.programline 421Source documentation
Ten binary stacks and fixed finite control. Every loop scans one actual bit or tests one actual counter bit; there is no arithmetic oracle in the state.
def program : Label → TM2.Stmt (fun _ : Tape => Bool) Label (Unit × Option Bool) | .copyOut => Reduction.MachineTransfer.loopAt .formula .scratch id false .copyOut (some .copyBack) | .copyBack => MachineCopy.forkLoop .scratch .formula .work false .copyBack (some .headerFirst) | .headerFirst => MachineLookup.discard .work .headerFirst .headerSecond | .headerSecond => MachineLookup.discard .work .headerSecond .guard | .guard => MachineUnaryCounter.guard .index (skipLabel 0) (readStart 0) | .skip slot => MachineLookup.discard .work (.skip slot) (skipLabel (slot.val + 1)) | .read slot => if slot.1.val < 6 then if slot.2 then …Mentions: OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.Label, OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.Tape, OAI.UniqueGamesTheorem.Reduction.MachineTransfer.loopAt, OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.skipLabel, OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.readStart
- def
OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.machineline 438 - theorem
OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.atSkipline 449 - theorem
OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.atReadStartline 453 - theorem
OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.atReadLoopline 457 - theorem
OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.atReadDoneline 462 - theorem
OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.discardHeadersTraceline 466Source documentation
The two header fields are physically consumed from the work copy.
theorem discardHeadersTrace (base : Tape → List Bool) (variableCount clauses : Nat) (suffix : List Bool) (hinput : base .work = encodeWords [variableCount, clauses] ++ suffix) : (advance (TM2.step program))^[variableCount + clauses + 2] (some ⟨some .headerFirst, ((), none), base⟩) = some ⟨some .guard, ((), none), Function.update base .work suffix⟩ := by …Mentions: OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.Tape, OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.program
- theorem
OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.discardSixTraceline 480Source documentation
The fixed skip body consumes six complete unary fields and returns to the same counter guard, preserving the counter and every other tape.
theorem discardSixTrace (base : Tape → List Bool) (values : List Nat) (hlen : values.length = 6) (suffix : List Bool) (hinput : base .work = encodeWords values ++ suffix) : (advance (TM2.step program))^[(encodeWords values).length] (some ⟨some (skipLabel 0), ((), none), base⟩) = some ⟨some .guard, ((), none), Function.update base .work suffix⟩ := by …Mentions: OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.Tape, OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.program, OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.skipLabel
- theorem
OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.readSixTraceline 491Source documentation
Read the selected six fields using the already checked scanner.
theorem readSixTrace (base : Tape → List Bool) (values : List Nat) (hlen : values.length = 6) (suffix : List Bool) (hinput : base .work = encodeWords values ++ suffix) : (advance (TM2.step program))^[(encodeWords values).length + 7] (some ⟨some (readStart 0), ((), none), base⟩) = some ⟨none, ((), none), SourceFieldArray.sequenceTapes .work fieldDestination base 0 values suffix⟩ := by …Mentions: OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.Tape, OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.program, OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.readStart, OAI.UniqueGamesTheorem.Foundations.Hastad.SourceFieldArray.sequenceTapes, OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.fieldDestination
- def
OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.scanTapesline 508Source documentation
Normal form for the changing counter and consumed work-copy prefix.
def scanTapes (base : Tape → List Bool) (index : Nat) (indexSuffix input : List Bool) : Tape → List Bool := …Mentions: OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.Tape
- theorem
OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.scanTapes_workline 512 - theorem
OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.scanTapes_indexline 516 - theorem
OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.scanTapes_otherline 521 - theorem
OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.update_scanTapes_workline 526 - theorem
OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.skipClausesTraceline 535Source documentation
Each clause-index bit causes one genuine guard transition and exactly six field-discard loops. The final zero guard enters the field reader.
theorem skipClausesTrace {n : Nat} (base : Tape → List Bool) (prior : List (Target.Clause n)) (indexSuffix suffix : List Bool) (register : Option Bool) : (advance (TM2.step program))^[(encodeWords (prior.flatMap clauseWords)).length + prior.length + 1] (some ⟨some .guard, ((), register), scanTapes base prior.length indexSuffix (encodeWords (prior.flatMap clauseWords) ++ suffix)⟩) = some ⟨some (readStart 0), ((), none), scanTapes base 0 indexSuffix suffix⟩ := by …Mentions: OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.Tape, OAI.UniqueGamesTheorem.Foundations.Target.Clause, OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.program, OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.scanTapes, OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.readStart
- theorem
OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.fieldDestination_eqline 583 - theorem
OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.fieldDestination_injective_belowline 589 - theorem
OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.readSix_output_fieldline 596Source documentation
Each field stack receives exactly its own unary value, in formula order.
theorem readSix_output_field (base : Tape → List Bool) (values : List Nat) (hlen : values.length = 6) (suffix : List Bool) (j : Fin 6) : SourceFieldArray.sequenceTapes .work fieldDestination base 0 values suffix (.field j) = encodeWord (values[j.val]'(by omega)) ++ base (.field j) := by …Mentions: OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.Tape, OAI.UniqueGamesTheorem.Foundations.Hastad.SourceFieldArray.sequenceTapes, OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.fieldDestination
- theorem
OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.readSix_output_workline 608 - theorem
OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.readSix_output_frameline 616 - def
OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.outputTapesline 624 - def
OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.scanStepsline 630 - theorem
OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.scanReadTraceline 637Source documentation
A complete skip-and-read phase after the non-destructive formula copy.
theorem scanReadTrace {n : Nat} (base : Tape → List Bool) (variableCount declaredClauses : Nat) (prior : List (Target.Clause n)) (clause : Target.Clause n) (indexSuffix suffix : List Bool) : (advance (TM2.step program))^[scanSteps variableCount declaredClauses prior clause] (some ⟨some .headerFirst, ((), none), scanTapes base prior.length indexSuffix (encodeWords [variableCount, declaredClauses] ++ (encodeWords (prior.flatMap clauseWords) ++ (encodeWords (clauseWords clause) ++ suffix)))⟩) = some ⟨none, ((), none), outputTapes base clause indexSuffix suffix⟩ := by …Mentions: OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.Tape, OAI.UniqueGamesTheorem.Foundations.Target.Clause, OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.program, OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.scanSteps, OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.scanTapes, OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.outputTapes
- def
OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.lookupStepsline 665 - theorem
OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.lookupWithSplitTraceline 672Source documentation
Actual formula lookup with a displayed prefix/selected-clause/suffix split. The formula stack is restored before scanning, and the index is consumed down to its retained zero delimiter. Field-stack suffixes are preserved.
theorem lookupWithSplitTrace (F : Target.Formula) (prior : List (Target.Clause F.variables)) (clause : Target.Clause F.variables) (after : List (Target.Clause F.variables)) (hsplit : F.clauses = prior ++ clause :: after) (base : Tape → List Bool) (indexSuffix : List Bool) (hformula : base .formula = formulaBits F) (hindex : base .index = encodeWord prior.length ++ indexSuffix) (hwork : base .work = []) (hscratch : base .scratch = []) (register : Option Bool) : (advance (TM2.step program))^[lookupSteps F prior clause] (some ⟨some .copyOut, ((), register), base⟩) = some ⟨none, ((), none), outputTapes base clause indexSuffix (encodeWords (after.flatMap clauseWords))⟩ := by …Mentions: OAI.UniqueGamesTheorem.Foundations.Target.Formula, OAI.UniqueGamesTheorem.Foundations.Target.Clause, OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.Tape, OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.program, OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.lookupSteps, OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.outputTapes
- theorem
OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.output_formulaline 703Source documentation
The preserved input copy is exactly the original serialized formula.
theorem output_formula {n : Nat} (base : Tape → List Bool) (clause : Target.Clause n) (indexSuffix suffix : List Bool) : outputTapes base clause indexSuffix suffix .formula = base .formula := by …Mentions: OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.Tape, OAI.UniqueGamesTheorem.Foundations.Target.Clause, OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.outputTapes
- theorem
OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.output_indexline 709 - theorem
OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.output_workline 715 - theorem
OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.output_fieldline 721 - theorem
OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.output_frameline 728 - theorem
OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.clauseWords_sixline 736Source documentation
Explicit variable/sign order consumed by later finite-control phases.
theorem clauseWords_six {n : Nat} (clause : Target.Clause n) : clauseWords clause = [clause[0].variableIndex.val, if clause[0].positive then 1 else 0, clause[1].variableIndex.val, if clause[1].positive then 1 else 0, clause[2].variableIndex.val, if clause[2].positive then 1 else 0] := rfl - def
OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.fieldWordsline 742 - theorem
OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.output_fieldWordsline 746 - theorem
OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.lookupSteps_le_inputline 752 - def
OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.timePolynomialline 771 - theorem
OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.timePolynomial_evalline 773 - def
OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.lookupWithSplitInTimeline 777Source documentation
A polynomial bound on the actual complete copy/skip/read execution.
def lookupWithSplitInTime (F : Target.Formula) (prior : List (Target.Clause F.variables)) (clause : Target.Clause F.variables) (after : List (Target.Clause F.variables)) (hsplit : F.clauses = prior ++ clause :: after) (base : Tape → List Bool) (indexSuffix : List Bool) (hformula : base .formula = formulaBits F) (hindex : base .index = encodeWord prior.length ++ indexSuffix) (hwork : base .work = []) (hscratch : base .scratch = []) (register : Option Bool) : StateTransition.EvalsToInTime (TM2.step program) ⟨some .copyOut, ((), register), base⟩ (some ⟨none, ((), none), outputTapes base clause indexSuffix (encodeWords (after.flatMap clauseWords))⟩) …Mentions: OAI.UniqueGamesTheorem.Foundations.Target.Formula, OAI.UniqueGamesTheorem.Foundations.Target.Clause, OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.Tape, OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.program, OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.outputTapes
- def
OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.lookupInTimeline 800Source documentation
Lookup at a valid numbered clause, starting with its ordinary unary index. The output fields are those of
F.clauses[i], with the rest of the work copy and the original formula retained exactly as stated by the frame lemmas.def lookupInTime (F : Target.Formula) (i : Fin F.clauses.length) (base : Tape → List Bool) (indexSuffix : List Bool) (hformula : base .formula = formulaBits F) (hindex : base .index = encodeWord i.val ++ indexSuffix) (hwork : base .work = []) (hscratch : base .scratch = []) (register : Option Bool) : StateTransition.EvalsToInTime (TM2.step program) ⟨some .copyOut, ((), register), base⟩ (some ⟨none, ((), none), outputTapes base F.clauses[i.val] indexSuffix (encodeWords ((F.clauses.drop (i.val + 1)).flatMap clauseWords))⟩) (timePolynomial.eval (formulaBits F).length) := by …Mentions: OAI.UniqueGamesTheorem.Foundations.Target.Formula, OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.Tape, OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.program, OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.outputTapes
- def
OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.machineInTimeline 820Source documentation
The same proved run stated directly for the concrete finite machine.
def machineInTime (F : Target.Formula) (i : Fin F.clauses.length) (base : Tape → List Bool) (indexSuffix : List Bool) (hformula : base .formula = formulaBits F) (hindex : base .index = encodeWord i.val ++ indexSuffix) (hwork : base .work = []) (hscratch : base .scratch = []) (register : Option Bool) : StateTransition.EvalsToInTime machine.step ⟨some .copyOut, ((), register), base⟩ (some ⟨none, ((), none), outputTapes base F.clauses[i.val] indexSuffix (encodeWords ((F.clauses.drop (i.val + 1)).flatMap clauseWords))⟩) (timePolynomial.eval (formulaBits F).length) := by …Mentions: OAI.UniqueGamesTheorem.Foundations.Target.Formula, OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.Tape, OAI.UniqueGamesTheorem.Foundations.Hastad.SourceClauseLookup.outputTapes