OAI/Computability/UniqueGames/Reduction/CanonicalBodyTemplateLemmas.lean
83 declarations, 0 contain sorry, 0 declared as axioms
Lower a complete canonical-body template to the actual field-template
machine. There are four saved fields per query position, numbered by
field + 4 * position. The template constants depend only on finite coefficient
and RHS data; names and occurrence identifiers remain saved tape contents.
- inductive
OAI.UniqueGamesTheorem.Reduction.CanonicalBodyTemplate.Tokenline 22 - def
OAI.UniqueGamesTheorem.Reduction.CanonicalBodyTemplate.evalTokenline 27 - def
OAI.UniqueGamesTheorem.Reduction.CanonicalBodyTemplate.evalTemplateline 31 - def
OAI.UniqueGamesTheorem.Reduction.CanonicalBodyTemplate.nameFieldline 34 - def
OAI.UniqueGamesTheorem.Reduction.CanonicalBodyTemplate.recordFieldsline 36 - theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalBodyTemplate.recordFields_nameline 39 - theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalBodyTemplate.recordFields_occurrenceline 43 - def
OAI.UniqueGamesTheorem.Reduction.CanonicalBodyTemplate.sourceFieldsline 46 - def
OAI.UniqueGamesTheorem.Reduction.CanonicalBodyTemplate.liftTokenline 50 - def
OAI.UniqueGamesTheorem.Reduction.CanonicalBodyTemplate.liftRecordline 55 - theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalBodyTemplate.liftRecord_lengthline 58 - theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalBodyTemplate.eval_liftTokenline 61 - theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalBodyTemplate.eval_liftRecordline 67 - def
OAI.UniqueGamesTheorem.Reduction.CanonicalBodyTemplate.recordsListline 75 - theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalBodyTemplate.recordsList_lengthline 79 - theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalBodyTemplate.eval_recordsListline 89 - def
OAI.UniqueGamesTheorem.Reduction.CanonicalBodyTemplate.ambientShiftline 107 - def
OAI.UniqueGamesTheorem.Reduction.CanonicalBodyTemplate.alphabetOffsetline 111 - def
OAI.UniqueGamesTheorem.Reduction.CanonicalBodyTemplate.templateline 115 - theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalBodyTemplate.template_lengthline 119 - theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalBodyTemplate.eval_dataline 125Source documentation
Exact body serialization of general canonical data.
theorem eval_data {n m k s d : Nat} (occ : Fin k → Fin m) (names : Fin m → Fin 3 → Fin n) (rhs : Fin m → F2) (z : Ambient s d) (a : Fin k → Fin 3 → Ambient s d) : evalTemplate (sourceFields occ names) (template z a (fun j => rhs (occ j))) = bodyWords ((ActualCanonical.data occ names rhs z a).1.2, (ActualCanonical.data occ names rhs z a).2) := by …Mentions: OAI.UniqueGamesTheorem.Reduction.CanonicalBodyTemplate.evalTemplate, OAI.UniqueGamesTheorem.Reduction.CanonicalBodyTemplate.sourceFields, OAI.UniqueGamesTheorem.Reduction.CanonicalBodyTemplate.template, OAI.UniqueGamesTheorem.Reduction.ActualCanonical.data
- theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalBodyTemplate.alphabetOffset_dataline 139 - theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalBodyTemplate.eval_canonicalline 145 - theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalBodyTemplate.alphabetOffset_canonicalline 155 - def
OAI.UniqueGamesTheorem.Reduction.CanonicalBodyTemplate.coefficientTriplesline 163Source documentation
The finite coefficient table's three coefficients for each local record.
def coefficientTriples {k s d : Nat} (c : ActualEnumeration.Coefficients k (Ambient s d)) (j : Fin k) : Fin 3 → Ambient s d := …Mentions: OAI.UniqueGamesTheorem.Reduction.ActualEnumeration.Coefficients
- theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalBodyTemplate.fromCoefficients_hBasisline 167 - theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalBodyTemplate.standardTriple_fromCoefficientsline 172 - theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalBodyTemplate.eval_actualQueryline 183 - theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalBodyTemplate.alphabetOffset_actualQueryline 191 - theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalBodyTemplate.eval_fromCoefficientsline 198Source documentation
Direct specialization to an actual enumerated coefficient table.
theorem eval_fromCoefficients (S : ActualSource.Source) {k s d : Nat} (occ : ActualGame.Question S k) (c : ActualEnumeration.Coefficients k (Ambient s d)) : evalTemplate (sourceFields occ (ActualGame.names S)) (template c.1 (coefficientTriples c) (fun j => ActualGame.rhs S (occ j))) = bodyWords (ActualOrbit.body (ActualGame.canonical S k s d) (occ, ActualEnumeration.fromCoefficients k (Ambient s d) c)) := by …Mentions: OAI.UniqueGamesTheorem.Reduction.ActualSource.Source, OAI.UniqueGamesTheorem.Reduction.ActualGame.Question, OAI.UniqueGamesTheorem.Reduction.ActualEnumeration.Coefficients, OAI.UniqueGamesTheorem.Reduction.CanonicalBodyTemplate.evalTemplate, OAI.UniqueGamesTheorem.Reduction.CanonicalBodyTemplate.sourceFields, OAI.UniqueGamesTheorem.Reduction.ActualGame.names, OAI.UniqueGamesTheorem.Reduction.CanonicalBodyTemplate.template, OAI.UniqueGamesTheorem.Reduction.CanonicalBodyTemplate.coefficientTriples, OAI.UniqueGamesTheorem.Reduction.ActualGame.rhs, OAI.UniqueGamesTheorem.Reduction.ActualOrbit.body, OAI.UniqueGamesTheorem.Reduction.ActualGame.canonical, OAI.UniqueGamesTheorem.Reduction.ActualEnumeration.fromCoefficients
- theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalBodyTemplate.alphabetOffset_fromCoefficientsline 207 - theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalBodyTemplate.actualEdge_permutationline 217Source documentation
Both permutation offsets of an actual edge are the same finite expressions used by the corresponding canonical-body templates.
theorem actualEdge_permutation (S : ActualSource.Source) (k : Nat) {s d : Nat} (g : ActualSource.SplitGadget s d) (omega : ActualGame.Outcome S k g) : (ActualGame.edge S k g omega).permutation = Encoding.translationTable (alphabetOffset ((ActualGame.leftQuery S k g omega).2 (ActualHomogeneous.hBasis k)) (ActualCanonical.standardTriple (ActualGame.leftQuery S k g omega).2) (fun j => ActualGame.rhs S ((ActualGame.leftQuery S k g omega).1 j))) (alphabetOffset ((ActualGame.rightQuery S k g omega).2 (ActualHomogeneous.hBasis k)) (ActualCanonical.standardTriple (ActualGame.rightQuery S k g omega).2) (fun j => ActualGame.rhs S ((ActualGame.rightQuery S k g omega).1 j))) := rflMentions: OAI.UniqueGamesTheorem.Reduction.ActualSource.Source, OAI.UniqueGamesTheorem.Reduction.ActualSource.SplitGadget, OAI.UniqueGamesTheorem.Reduction.ActualGame.Outcome, OAI.UniqueGamesTheorem.Reduction.ActualGame.edge, OAI.UniqueGamesTheorem.Reduction.Encoding.translationTable, OAI.UniqueGamesTheorem.Reduction.CanonicalBodyTemplate.alphabetOffset, OAI.UniqueGamesTheorem.Reduction.ActualGame.leftQuery, OAI.UniqueGamesTheorem.Reduction.ActualHomogeneous.hBasis, OAI.UniqueGamesTheorem.Reduction.ActualCanonical.standardTriple, OAI.UniqueGamesTheorem.Reduction.ActualGame.rhs, OAI.UniqueGamesTheorem.Reduction.ActualGame.rightQuery
- theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalBodyTemplate.flatMap_encodeWordline 228 - theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalBodyTemplate.actualQuery_bitsline 237 - def
OAI.UniqueGamesTheorem.Reduction.CanonicalBodyMachine.fieldEquivline 263 - def
OAI.UniqueGamesTheorem.Reduction.CanonicalBodyMachine.fieldIndexline 266 - theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalBodyMachine.fieldIndex_valline 269 - def
OAI.UniqueGamesTheorem.Reduction.CanonicalBodyMachine.savedFieldsline 272 - theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalBodyMachine.savedFields_fieldIndexline 275 - def
OAI.UniqueGamesTheorem.Reduction.CanonicalBodyMachine.lowerTokenline 280 - def
OAI.UniqueGamesTheorem.Reduction.CanonicalBodyMachine.lowerTemplateline 284 - theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalBodyMachine.lowerTemplate_lengthline 287 - theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalBodyMachine.tokenOutput_lowerTokenline 290 - theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalBodyMachine.templateOutput_lowerTemplateline 297 - def
OAI.UniqueGamesTheorem.Reduction.CanonicalBodyMachine.templateline 306Source documentation
This fixed token list is directly accepted by the actual template machine.
def template {k s d : Nat} (z : Ambient s d) (a : Fin k → Fin 3 → Ambient s d) (b : Fin k → F2) : List (MachineFieldTemplate.Token (4*k)) := …Mentions: OAI.UniqueGamesTheorem.Reduction.MachineFieldTemplate.Token
- theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalBodyMachine.template_lengthline 310 - theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalBodyMachine.templateOutput_dataline 315 - theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalBodyMachine.templateOutput_actualQueryline 324 - theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalBodyMachine.templateOutput_fromCoefficientsline 334Source documentation
Exact output using the finite coefficient table directly as program data.
theorem templateOutput_fromCoefficients (S : ActualSource.Source) {k s d : Nat} (occ : ActualGame.Question S k) (c : ActualEnumeration.Coefficients k (Ambient s d)) : MachineFieldTemplate.templateOutput (template c.1 (CanonicalBodyTemplate.coefficientTriples c) (fun j => ActualGame.rhs S (occ j))) (savedFields (CanonicalBodyTemplate.sourceFields occ (ActualGame.names S))) = encodeWords (bodyWords (ActualOrbit.body (ActualGame.canonical S k s d) (occ, ActualEnumeration.fromCoefficients k (Ambient s d) c))) := by …Mentions: OAI.UniqueGamesTheorem.Reduction.ActualSource.Source, OAI.UniqueGamesTheorem.Reduction.ActualGame.Question, OAI.UniqueGamesTheorem.Reduction.ActualEnumeration.Coefficients, OAI.UniqueGamesTheorem.Reduction.MachineFieldTemplate.templateOutput, OAI.UniqueGamesTheorem.Reduction.CanonicalBodyMachine.template, OAI.UniqueGamesTheorem.Reduction.CanonicalBodyTemplate.coefficientTriples, OAI.UniqueGamesTheorem.Reduction.ActualGame.rhs, OAI.UniqueGamesTheorem.Reduction.CanonicalBodyMachine.savedFields, OAI.UniqueGamesTheorem.Reduction.CanonicalBodyTemplate.sourceFields, OAI.UniqueGamesTheorem.Reduction.ActualGame.names, OAI.UniqueGamesTheorem.Reduction.ActualOrbit.body, OAI.UniqueGamesTheorem.Reduction.ActualGame.canonical, OAI.UniqueGamesTheorem.Reduction.ActualEnumeration.fromCoefficients
- def
OAI.UniqueGamesTheorem.Reduction.OccurrenceTupleOrder.readCoordinatesline 365Source documentation
Read the physical saved digit positions in reverse coordinate order.
def readCoordinates {m k : Nat} (digits : Fin k → Fin m) : Fin k → Fin m := … - theorem
OAI.UniqueGamesTheorem.Reduction.OccurrenceTupleOrder.readCoordinates_applyline 368 - theorem
OAI.UniqueGamesTheorem.Reduction.OccurrenceTupleOrder.readCoordinates_involutiveline 371 - def
OAI.UniqueGamesTheorem.Reduction.OccurrenceTupleOrder.coordinateEquivline 376 - theorem
OAI.UniqueGamesTheorem.Reduction.OccurrenceTupleOrder.readCoordinates_snocline 382 - theorem
OAI.UniqueGamesTheorem.Reduction.OccurrenceTupleOrder.tupleOrder_readCoordinatesline 388Source documentation
Exact equality of occurrence lists after reading saved digits in reverse coordinate order. This includes dimension zero and radix zero.
theorem tupleOrder_readCoordinates (m k : Nat) : (MachineTupleOdometer.tupleOrder m k).map readCoordinates = ActualEnumeration.functions (List.finRange m) k := by …Mentions: OAI.UniqueGamesTheorem.Reduction.OccurrenceTupleOrder.readCoordinates, OAI.UniqueGamesTheorem.Reduction.ActualEnumeration.functions
- theorem
OAI.UniqueGamesTheorem.Reduction.OccurrenceTupleOrder.functions_readCoordinatesline 413 - theorem
OAI.UniqueGamesTheorem.Reduction.OccurrenceTupleOrder.functions_flatMapline 422Source documentation
An arbitrary exact emitted list, including serialized edge bytes, inherits the order identity. There is no permutation or counting-only replacement.
theorem functions_flatMap (m k : Nat) (emit : (Fin k → Fin m) → List α) : (ActualEnumeration.functions (List.finRange m) k).flatMap emit = (MachineTupleOdometer.tupleOrder m k).flatMap (fun digits => emit (readCoordinates digits)) := by …Mentions: OAI.UniqueGamesTheorem.Reduction.ActualEnumeration.functions, OAI.UniqueGamesTheorem.Reduction.OccurrenceTupleOrder.readCoordinates
- theorem
OAI.UniqueGamesTheorem.Reduction.OccurrenceTupleOrder.actualSchedule_orderline 439Source documentation
Apply the coordinate readout to an existing actual odometer schedule. Its visit-order theorem already follows from the real nested-cycle constructors.
theorem actualSchedule_order (tree : MachineTupleOdometer.NestedCycle m current remaining bodyLabel checkLabel resetLabel program k exitLabel start finish) : tree.order.map readCoordinates = ActualEnumeration.functions (List.finRange m) k := by …Mentions: OAI.UniqueGamesTheorem.Reduction.OccurrenceTupleOrder.readCoordinates, OAI.UniqueGamesTheorem.Reduction.ActualEnumeration.functions
- theorem
OAI.UniqueGamesTheorem.Reduction.OccurrenceTupleOrder.actualSchedule_flatMapline 445 - structure
OAI.UniqueGamesTheorem.Reduction.SourceEncoding.Inputline 472 - abbrev
OAI.UniqueGamesTheorem.Reduction.SourceEncoding.Tableline 477 - def
OAI.UniqueGamesTheorem.Reduction.SourceEncoding.equationWordsline 479 - def
OAI.UniqueGamesTheorem.Reduction.SourceEncoding.inputWordsline 482 - def
OAI.UniqueGamesTheorem.Reduction.SourceEncoding.inputBitsline 485 - def
OAI.UniqueGamesTheorem.Reduction.SourceEncoding.parseEquationline 487 - theorem
OAI.UniqueGamesTheorem.Reduction.SourceEncoding.parseEquation_encodedline 503 - def
OAI.UniqueGamesTheorem.Reduction.SourceEncoding.parseEquationsline 510 - theorem
OAI.UniqueGamesTheorem.Reduction.SourceEncoding.parseEquations_encodedline 519Source documentation
Parsing preserves the entire ordered list, including all equal entries.
@[simp] theorem parseEquations_encoded {n : Nat} (equations : List (CloneGap.Equation (Fin n))) (rest : List Nat) : parseEquations n equations.length (equations.flatMap equationWords ++ rest) = some (equations, rest) := by …Mentions: OAI.UniqueGamesTheorem.Reduction.CloneGap.Equation, OAI.UniqueGamesTheorem.Reduction.SourceEncoding.parseEquations, OAI.UniqueGamesTheorem.Reduction.SourceEncoding.equationWords
- def
OAI.UniqueGamesTheorem.Reduction.SourceEncoding.decodeInputWordsline 528 - theorem
OAI.UniqueGamesTheorem.Reduction.SourceEncoding.decodeInputWords_encodedline 538 - def
OAI.UniqueGamesTheorem.Reduction.SourceEncoding.decodeInputBitsline 547 - theorem
OAI.UniqueGamesTheorem.Reduction.SourceEncoding.decodeInputBits_encodedline 550 - theorem
OAI.UniqueGamesTheorem.Reduction.SourceEncoding.inputWords_injectiveline 554 - theorem
OAI.UniqueGamesTheorem.Reduction.SourceEncoding.inputBits_injectiveline 559 - theorem
OAI.UniqueGamesTheorem.Reduction.SourceEncoding.equationWords_lengthline 564 - theorem
OAI.UniqueGamesTheorem.Reduction.SourceEncoding.equationsWords_lengthline 567 - theorem
OAI.UniqueGamesTheorem.Reduction.SourceEncoding.inputWords_lengthline 576 - theorem
OAI.UniqueGamesTheorem.Reduction.SourceEncoding.equationBits_length_leline 581 - theorem
OAI.UniqueGamesTheorem.Reduction.SourceEncoding.equationsBits_length_leline 588 - theorem
OAI.UniqueGamesTheorem.Reduction.SourceEncoding.inputBits_lengthline 599 - theorem
OAI.UniqueGamesTheorem.Reduction.SourceEncoding.inputBits_length_leline 606 - theorem
OAI.UniqueGamesTheorem.Reduction.SourceEncoding.inputBits_length_ge_variablesline 612 - theorem
OAI.UniqueGamesTheorem.Reduction.SourceEncoding.inputBits_length_ge_equationsline 615