OAI/Computability/UniqueGames/PCP/PoweringTablesLemmas.lean
83 declarations, 0 contain sorry, 0 declared as axioms
Executable tables of the actual powering graph
The input rotor and every base predicate are stored finite vectors. The output has one row for each start vertex, bounded port word, and orientation, with the two orientations adjacent. Every complete predicate table is generated from the bounded first-address lookup test. Degree and walk length fix the output alphabet; neither the alphabet nor an address list depends on the input vertex count.
- def
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringTables.labelCountline 24Source documentation
Program-constant output alphabet size for degree
dand walk lengthn+1.def labelCount (d n : Nat) : Nat := 64 ^ addressCount d (n + 1)
- def
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringTables.dartCountline 27Source documentation
Number of directed recorded-walk occurrences, including orientation.
def dartCount (vertices d n : Nat) : Nat := 2 * vertices * d ^ (n + 1)
- def
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringTables.mathematicalGraphline 29 - def
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringTables.rowAcceptsline 36Source documentation
The finite first-address predicate evaluator used for each stored row.
def rowAccepts {vertices d : Nat} (input : PortTables.Table vertices d) (n : Nat) (e : PoweringTest.Dart (Fin vertices) (Fin d) n) (a b : Fin (labelCount d n)) : Bool := …Mentions: OAI.UniqueGamesTheorem.Foundations.PCP.PortTables.Table, OAI.UniqueGamesTheorem.Foundations.PCP.PoweringTest.Dart, OAI.UniqueGamesTheorem.Foundations.PCP.PoweringTables.labelCount
- theorem
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringTables.rowAccepts_eqline 45 - def
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringTables.tableline 55 - theorem
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringTables.table_verticesline 60 - theorem
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringTables.table_dartsline 63 - theorem
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringTables.semantics_tableline 67Source documentation
Complete decoded semantics, with executable vertex, dart and label orders.
theorem semantics_table {vertices d : Nat} (input : PortTables.Table vertices d) (n : Nat) : GenericGraphTables.semantics (table input n) = GenericGraphTables.enumeratedGraph (mathematicalGraph input n) (Equiv.refl _) (dartEquiv vertices d n) (paddedLabelEquiv d (n + 1) 64) := …Mentions: OAI.UniqueGamesTheorem.Foundations.PCP.PortTables.Table, OAI.UniqueGamesTheorem.Foundations.PCP.GenericGraphTables.semantics, OAI.UniqueGamesTheorem.Foundations.PCP.PoweringTables.table, OAI.UniqueGamesTheorem.Foundations.PCP.GenericGraphTables.enumeratedGraph, OAI.UniqueGamesTheorem.Foundations.PCP.PoweringTables.mathematicalGraph
- theorem
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringTables.table_acceptsline 74Source documentation
Each actual output relation entry is the bounded stored-opinion evaluator.
theorem table_accepts {vertices d : Nat} (input : PortTables.Table vertices d) (n : Nat) (i : Fin (dartCount vertices d n)) (a b : Fin (labelCount d n)) : GenericGraphTables.acceptsAt (table input n).rows i a b = rowAccepts input n (decodeDart vertices d n i) a b := by …Mentions: OAI.UniqueGamesTheorem.Foundations.PCP.PortTables.Table, OAI.UniqueGamesTheorem.Foundations.PCP.PoweringTables.dartCount, OAI.UniqueGamesTheorem.Foundations.PCP.PoweringTables.labelCount, OAI.UniqueGamesTheorem.Foundations.PCP.GenericGraphTables.acceptsAt, OAI.UniqueGamesTheorem.Foundations.PCP.PoweringTables.table, OAI.UniqueGamesTheorem.Foundations.PCP.PoweringTables.rowAccepts
- theorem
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringTables.table_reverseline 83Source documentation
The reverse row flips just the orientation in the recorded-walk encoding.
theorem table_reverse {vertices d : Nat} (input : PortTables.Table vertices d) (n : Nat) (direction : Bool) (w : Walk (Fin vertices) (Fin d) (n + 1)) : GenericGraphTables.reverseAt (table input n).rows (encodeDart vertices d n (direction, w)) = encodeDart vertices d n (!direction, w) := by …Mentions: OAI.UniqueGamesTheorem.Foundations.PCP.PortTables.Table, OAI.UniqueGamesTheorem.Foundations.PCP.GenericGraphTables.reverseAt, OAI.UniqueGamesTheorem.Foundations.PCP.PoweringTables.table
- def
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringTables.outputBitsline 96Source documentation
Serialized output in the shared generic graph codec.
def outputBits {vertices d : Nat} (input : PortTables.Table vertices d) (n : Nat) : List Bool := …Mentions: OAI.UniqueGamesTheorem.Foundations.PCP.PortTables.Table
- def
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringTables.transformline 100Source documentation
The actual function on variable-size regular input tables.
def transform (d n : Nat) (input : PortTables.Input d) : GenericGraphTables.Table (labelCount d n) := …
Mentions: OAI.UniqueGamesTheorem.Foundations.PCP.PortTables.Input, OAI.UniqueGamesTheorem.Foundations.PCP.GenericGraphTables.Table, OAI.UniqueGamesTheorem.Foundations.PCP.PoweringTables.labelCount
- theorem
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringRowData.firstMatch_of_firstline 132Source documentation
The row machine scans the same increasing address-index order.
theorem firstMatch_of_first {S : Nat} (mask : Fin S → Bool) (i : Fin S) (hi : mask i = true) (hfirst : ∀ j : Fin S, j.val < i.val → mask j = false) : firstMatch mask = some i := by … - theorem
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringRowData.firstMatch_firstIndexline 142 - def
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringRowData.endpointMaskline 152Source documentation
An actual endpoint comparison; it has no reachability oracle input.
def endpointMask (G : PortGraph (Fin vertices) (Fin d)) (t : Nat) (center target : Fin vertices) (i : AddressIndex d t) : Bool := … - theorem
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringRowData.firstMatch_endpointMaskline 156 - def
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringRowData.slotCountline 166 - abbrev
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringRowData.RowBufferline 168 - def
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringRowData.fixedLabelAtline 171Source documentation
This lookup is fixed by the reduction parameters, not the input graph.
def fixedLabelAt (d n : Nat) (a : Fin (PoweringTables.labelCount d n)) (i : Fin (slotCount d n)) : GraphTables.Label := …Mentions: OAI.UniqueGamesTheorem.Foundations.PCP.PoweringTables.labelCount, OAI.UniqueGamesTheorem.Foundations.PCP.PoweringRowData.slotCount, OAI.UniqueGamesTheorem.Foundations.PCP.GraphTables.Label
- theorem
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringRowData.fixedLabelAt_addressIndexline 175 - def
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringRowData.walkDataline 185Source documentation
For each actual path edge, store its complete base relation, then the start-to-tail mask, then the end-to-head mask. Every bit is computed.
def walkData (input : PortTables.Table vertices d) (n : Nat) (w : Walk (Fin vertices) (Fin d) (n + 1)) (k : Fin (n + 1)) : Field (slotCount d n) → Bool | .inl (a, b) => PortTables.accepts input (edgeAt (PortTables.portGraph input) n w k) a b | .inr (.inl i) => endpointMask (PortTables.portGraph input) (n + 1) w.1 (edgeAt (PortTables.portGraph input) n w k).1 i | .inr (.inr i) => endpointMask (PortTables.portGraph input) (n + 1) (endpoint (PortTables.portGraph input) w) ((PortTables.portGraph input).rot (edgeAt (PortTables.portGraph input) n w k)).1 iMentions: OAI.UniqueGamesTheorem.Foundations.PCP.PortTables.Table, OAI.UniqueGamesTheorem.Foundations.PCP.PoweringRowData.slotCount, OAI.UniqueGamesTheorem.Foundations.PCP.PortTables.accepts, OAI.UniqueGamesTheorem.Foundations.PCP.PortTables.portGraph, OAI.UniqueGamesTheorem.Foundations.PCP.PoweringRowData.endpointMask
- def
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringRowData.walkBitsline 195 - theorem
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringRowData.basePredicate_walkBitsline 199 - theorem
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringRowData.leftMatches_walkBitsline 206 - theorem
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringRowData.rightMatches_walkBitsline 213 - theorem
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringRowData.firstMatch_walkBits_leftline 221 - theorem
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringRowData.firstMatch_walkBits_rightline 231 - theorem
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringRowData.edgeAccept_walkBitsline 242 - theorem
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringRowData.rowAccept_walkBitsline 255 - def
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringRowData.transposeFieldline 267Source documentation
Reverse orientation exchanges the two mask fields and label arguments.
def transposeField {S : Nat} : Field S → Field S | .inl (a, b) => .inl (b, a) | .inr (.inl i) => .inr (.inr i) | .inr (.inr i) => .inr (.inl i) - def
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringRowData.transposeBitsline 272 - theorem
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringRowData.basePredicate_transposeBitsline 275 - theorem
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringRowData.leftMatches_transposeBitsline 280 - theorem
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringRowData.rightMatches_transposeBitsline 286 - theorem
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringRowData.edgeAccept_transposeBitsline 292 - theorem
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringRowData.rowAccept_transposeBitsline 301 - def
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringRowData.rowBitsline 309Source documentation
The fully specified data block for either directed occurrence.
def rowBits (input : PortTables.Table vertices d) (n : Nat) (e : PoweringTest.Dart (Fin vertices) (Fin d) n) : RowBuffer d n := …Mentions: OAI.UniqueGamesTheorem.Foundations.PCP.PortTables.Table, OAI.UniqueGamesTheorem.Foundations.PCP.PoweringTest.Dart, OAI.UniqueGamesTheorem.Foundations.PCP.PoweringRowData.RowBuffer
- def
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringRowData.rowDataline 313 - theorem
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringRowData.rowBits_packDataline 318 - theorem
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringRowData.rowBits_fieldline 325 - theorem
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringRowData.rowAccept_rowBitsline 333Source documentation
No match-mask or base-relation premise remains in the evaluator bridge.
theorem rowAccept_rowBits (input : PortTables.Table vertices d) (n : Nat) (e : PoweringTest.Dart (Fin vertices) (Fin d) n) (a b : Fin (PoweringTables.labelCount d n)) : rowAccept (fixedLabelAt d n) (rowBits input n e) a b = PoweringTables.rowAccepts input n e a b := by …Mentions: OAI.UniqueGamesTheorem.Foundations.PCP.PortTables.Table, OAI.UniqueGamesTheorem.Foundations.PCP.PoweringTest.Dart, OAI.UniqueGamesTheorem.Foundations.PCP.PoweringTables.labelCount, OAI.UniqueGamesTheorem.Foundations.PCP.PoweringRowData.fixedLabelAt, OAI.UniqueGamesTheorem.Foundations.PCP.PoweringRowData.rowBits, OAI.UniqueGamesTheorem.Foundations.PCP.PoweringTables.rowAccepts
- theorem
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringRowData.rowBlock_at_rowBitsline 343 - def
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringRowData.dataWordsline 351 - def
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringRowData.dataTapeline 355 - theorem
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringRowData.dataTape_eqline 359 - theorem
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringRowData.dataWords_lengthline 364 - theorem
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringRowData.dataTape_length_leline 370 - def
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringRowData.emittedRelationline 376 - theorem
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringRowData.emittedRelation_eqline 381 - theorem
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringRowData.rowBlock_unaryline 389 - theorem
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringRowData.emittedRelation_tableline 402Source documentation
The emitted bits are the relation of the actual numbered output row.
theorem emittedRelation_table (input : PortTables.Table vertices d) (n : Nat) (i : Fin (PoweringTables.dartCount vertices d n)) : emittedRelation input n (decodeDart vertices d n i) = (PoweringTables.table input n).rows[i].relation := by …Mentions: OAI.UniqueGamesTheorem.Foundations.PCP.PortTables.Table, OAI.UniqueGamesTheorem.Foundations.PCP.PoweringTables.dartCount, OAI.UniqueGamesTheorem.Foundations.PCP.PoweringRowData.emittedRelation, OAI.UniqueGamesTheorem.Foundations.PCP.PoweringTables.table
- theorem
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringRowData.rowBlock_unary_tableline 429 - def
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringRowData.tableRowMachineInTimeline 439Source documentation
With the actual computed data on its input tape, the existing finite row machine emits precisely the serialized relation of the actual output table. The unread input suffix and prior output tape are preserved as specified.
def tableRowMachineInTime (input : PortTables.Table vertices d) (n : Nat) (i : Fin (PoweringTables.dartCount vertices d n)) (suffix : List Bool) (register : RowBuffer d n) (tapes : Bool → List Bool) (hinput : tapes false = dataTape input n (decodeDart vertices d n i) ++ suffix) : StateTransition.EvalsToInTime (PoweringMachineRow.machine (t := n + 1) (fixedLabelAt d n)).step …Mentions: OAI.UniqueGamesTheorem.Foundations.PCP.PortTables.Table, OAI.UniqueGamesTheorem.Foundations.PCP.PoweringTables.dartCount, OAI.UniqueGamesTheorem.Foundations.PCP.PoweringRowData.RowBuffer, OAI.UniqueGamesTheorem.Foundations.PCP.PoweringRowData.dataTape, OAI.UniqueGamesTheorem.Foundations.PCP.PoweringRowData.fixedLabelAt
- def
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringFieldPlan.tailPortsline 472Source documentation
The actual ports before a selected time, with no vertex-dependent choice.
def tailPorts : (n : Nat) → (Fin (n + 1) → D) → Fin (n + 1) → List D | 0, _, _ => [] | n + 1, p, k => Fin.cases [] (fun j => p 0 :: tailPorts n (fun i => p i.succ) j) k
- theorem
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringFieldPlan.tailPorts_lengthline 476 - theorem
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringFieldPlan.walkEnd_tailPortsline 486 - def
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringFieldPlan.headPortsline 497 - theorem
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringFieldPlan.walkEnd_headPortsline 500 - def
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringFieldPlan.addressPortsline 508 - theorem
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringFieldPlan.walkEnd_addressPortsline 511 - inductive
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringFieldPlan.Instructionline 517Source documentation
Static commands; all changing vertex identifiers remain inputs to evaluation.
inductive Instruction (d : Nat) where …
- def
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringFieldPlan.Instruction.radiusline 522Source documentation
The number of shared trajectory tapes needed by a single instruction.
def Instruction.radius {d : Nat} : Instruction d → Nat | .relation ports _ _ _ => ports.length | .equal left right => max left.length right.lengthMentions: OAI.UniqueGamesTheorem.Foundations.PCP.PoweringFieldPlan.Instruction
- theorem
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringFieldPlan.addressPorts_length_leline 526 - def
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringFieldPlan.evaluateline 531 - def
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringFieldPlan.fieldPlanline 539 - theorem
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringFieldPlan.evaluate_fieldPlanline 545 - def
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringFieldPlan.directedFieldPlanline 565 - theorem
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringFieldPlan.fieldPlan_radiusline 569 - theorem
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringFieldPlan.directedFieldPlan_radiusline 584 - theorem
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringFieldPlan.evaluate_directedFieldPlanline 589 - def
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringFieldPlan.rowPlanline 597Source documentation
The exact fixed sequence of data-producing commands, in serialized order.
def rowPlan {d : Nat} (n : Nat) (ports : Fin (n + 1) → Fin d) (direction : Bool) : List (Instruction d) := …Mentions: OAI.UniqueGamesTheorem.Foundations.PCP.PoweringFieldPlan.Instruction
- theorem
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringFieldPlan.evaluate_rowPlanline 603 - theorem
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringFieldPlan.dataTape_eq_planline 614 - def
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringRowHeaderSemantics.blockSizeline 633 - def
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringRowHeaderSemantics.reverseOffsetline 635 - def
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringRowHeaderSemantics.reverseValueline 638 - def
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringRowHeaderSemantics.tailVertexline 642 - def
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringRowHeaderSemantics.headerWordsline 646 - theorem
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringRowHeaderSemantics.table_tailline 651Source documentation
The stored tail is the recorded start or endpoint according to direction.
theorem table_tail (input : PortTables.Table vertices d) (n : Nat) (vertex : Fin vertices) (ports : Fin (n + 1) → Fin d) (direction : Bool) : (PoweringTables.table input n).rows[encodeDart vertices d n (direction, vertex, ports)].tail = tailVertex input n vertex ports direction := by …Mentions: OAI.UniqueGamesTheorem.Foundations.PCP.PortTables.Table, OAI.UniqueGamesTheorem.Foundations.PCP.PoweringTables.table, OAI.UniqueGamesTheorem.Foundations.PCP.PoweringRowHeaderSemantics.tailVertex
- theorem
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringRowHeaderSemantics.table_reverseValueline 664Source documentation
The reverse address retains the word and changes only its direction bit.
theorem table_reverseValue (input : PortTables.Table vertices d) (n : Nat) (vertex : Fin vertices) (ports : Fin (n + 1) → Fin d) (direction : Bool) : (PoweringTables.table input n).rows[encodeDart vertices d n (direction, vertex, ports)].reverseIndex.val = reverseValue d n vertex ports direction := by …Mentions: OAI.UniqueGamesTheorem.Foundations.PCP.PortTables.Table, OAI.UniqueGamesTheorem.Foundations.PCP.PoweringTables.table, OAI.UniqueGamesTheorem.Foundations.PCP.PoweringRowHeaderSemantics.reverseValue
- theorem
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringRowHeaderSemantics.headerWords_eqline 674 - theorem
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringRowHeaderSemantics.header_relation_bitsline 686Source documentation
Prepending these two fields to the existing relation yields the exact serialized row, preserving the rest of the output tape.
theorem header_relation_bits (input : PortTables.Table vertices d) (n : Nat) (vertex : Fin vertices) (ports : Fin (n + 1) → Fin d) (direction : Bool) (suffix : List Bool) : encodeWords (headerWords input n vertex ports direction) ++ (encodeWords (GenericGraphTables.relationWords (PoweringTables.table input n).rows[encodeDart vertices d n (direction, vertex, ports)].relation) ++ suffix) = encodeWords (GenericGraphTables.rowWords (PoweringTables.table input n).rows[encodeDart vertices d n (direction, vertex, ports)]) ++ suffix := by …Mentions: OAI.UniqueGamesTheorem.Foundations.PCP.PortTables.Table, OAI.UniqueGamesTheorem.Foundations.PCP.PoweringRowHeaderSemantics.headerWords, OAI.UniqueGamesTheorem.Foundations.PCP.GenericGraphTables.relationWords, OAI.UniqueGamesTheorem.Foundations.PCP.PoweringTables.table, OAI.UniqueGamesTheorem.Foundations.PCP.GenericGraphTables.rowWords