OAI/Computability/UniqueGames/Reduction/EncodingLemmas.lean
117 declarations, 0 contain sorry, 0 declared as axioms
Computable binary alphabet indexing and full translation permutation tables.
The labels are actual Fin (2^s) entries in the target instance format.
- def
OAI.UniqueGamesTheorem.Reduction.Encoding.sideEquivline 29Source documentation
Number the left side first and the right side second.
def sideEquiv (n : Nat) : Bool × Fin n ≃ Fin (2*n) := …
- theorem
OAI.UniqueGamesTheorem.Reduction.Encoding.sideEquiv_false_valline 32 - theorem
OAI.UniqueGamesTheorem.Reduction.Encoding.sideEquiv_true_valline 36 - def
OAI.UniqueGamesTheorem.Reduction.Encoding.alphabetEquivline 41Source documentation
The integer label is the packed, least-significant-bit-first coordinate word.
def alphabetEquiv (s : Nat) : Integration.BinaryLinear.Vector s ≃ Fin (2^s) := …
Mentions: OAI.UniqueGamesTheorem.Integration.BinaryLinear.Vector
- theorem
OAI.UniqueGamesTheorem.Reduction.Encoding.alphabetEquiv_symm_apply_applyline 48 - theorem
OAI.UniqueGamesTheorem.Reduction.Encoding.alphabetEquiv_apply_symm_applyline 53 - def
OAI.UniqueGamesTheorem.Reduction.Encoding.translateline 57 - theorem
OAI.UniqueGamesTheorem.Reduction.Encoding.translate_involutiveline 61 - def
OAI.UniqueGamesTheorem.Reduction.Encoding.translationTableline 75Source documentation
Both forward and inverse tables are explicitly generated from every alphabet index. Characteristic two makes these two tables equal.
def translationTable {s : Nat} (a b : Integration.BinaryLinear.Vector s) : PermutationTable (2^s) where …Mentions: OAI.UniqueGamesTheorem.Integration.BinaryLinear.Vector
- theorem
OAI.UniqueGamesTheorem.Reduction.Encoding.translationTable_imagesline 82 - theorem
OAI.UniqueGamesTheorem.Reduction.Encoding.translationTable_inverseImagesline 87 - theorem
OAI.UniqueGamesTheorem.Reduction.Encoding.translationTable_satisfied_iffline 93 - def
OAI.UniqueGamesTheorem.Reduction.Encoding.imageVerticesline 106Source documentation
Canonical vertex bodies are compared using their actual decidable equality.
List.dedupfixes a deterministic order by retaining the last occurrence.def imageVertices (queries : List Q) (body : Q → V) : List V := …
- theorem
OAI.UniqueGamesTheorem.Reduction.Encoding.mem_imageVerticesline 109 - theorem
OAI.UniqueGamesTheorem.Reduction.Encoding.imageVertices_nodupline 113 - theorem
OAI.UniqueGamesTheorem.Reduction.Encoding.imageVertices_length_leline 116 - abbrev
OAI.UniqueGamesTheorem.Reduction.Encoding.ImageVertexline 121 - def
OAI.UniqueGamesTheorem.Reduction.Encoding.imageEquivline 126Source documentation
A computable numbering using
idxOf; its inverse looks up that index. It involves no chosenFintype.equivFin.def imageEquiv (queries : List Q) (body : Q → V) : ImageVertex queries body ≃ Fin (imageVertices queries body).length := …Mentions: OAI.UniqueGamesTheorem.Reduction.Encoding.ImageVertex, OAI.UniqueGamesTheorem.Reduction.Encoding.imageVertices
- def
OAI.UniqueGamesTheorem.Reduction.Encoding.imageVertexline 130 - def
OAI.UniqueGamesTheorem.Reduction.Encoding.imageIndexline 133 - theorem
OAI.UniqueGamesTheorem.Reduction.Encoding.imageIndex_eq_iffline 136 - theorem
OAI.UniqueGamesTheorem.Reduction.Encoding.imageVertices_rangeline 142 - abbrev
OAI.UniqueGamesTheorem.Reduction.ActualOrbit.Ambientline 167 - def
OAI.UniqueGamesTheorem.Reduction.ActualOrbit.bodyline 169 - def
OAI.UniqueGamesTheorem.Reduction.ActualOrbit.offsetline 172 - def
OAI.UniqueGamesTheorem.Reduction.ActualOrbit.Vertexline 175Source documentation
Only realized bodies are vertices; no extra formal records are added.
def Vertex (can : Q → Ambient s d × T) := {o : Vector d × T // ∃ q, body can q = o}Mentions: OAI.UniqueGamesTheorem.Reduction.ActualOrbit.Ambient, OAI.UniqueGamesTheorem.Reduction.ActualOrbit.body
- def
OAI.UniqueGamesTheorem.Reduction.ActualOrbit.vertexline 177 - theorem
OAI.UniqueGamesTheorem.Reduction.ActualOrbit.vertex_surjectiveline 180 - instance
OAI.UniqueGamesTheorem.Reduction.ActualOrbit.vertexFintypeline 185 - instance
OAI.UniqueGamesTheorem.Reduction.ActualOrbit.vertexNonemptyline 190 - theorem
OAI.UniqueGamesTheorem.Reduction.ActualOrbit.vertex_eq_iffline 193 - abbrev
OAI.UniqueGamesTheorem.Reduction.ActualOrbit.TwoSidedVertexline 201Source documentation
falseis the left copy andtrueis the right copy.abbrev TwoSidedVertex (can : Q → Ambient s d × T) := Bool × Vertex can
Mentions: OAI.UniqueGamesTheorem.Reduction.ActualOrbit.Ambient, OAI.UniqueGamesTheorem.Reduction.ActualOrbit.Vertex
- def
OAI.UniqueGamesTheorem.Reduction.ActualOrbit.vertexEquivline 203 - def
OAI.UniqueGamesTheorem.Reduction.ActualOrbit.explicitVertexEquivline 209Source documentation
Executable vertex numbering from an exhaustive list, preserving the same realizable-body subtype used in the semantic statements.
def explicitVertexEquiv [DecidableEq (Vector d × T)] (can : Q → Ambient s d × T) (queries : List Q) (full : ∀ q, q ∈ queries) : Vertex can ≃ Fin (Encoding.imageVertices queries (body can)).length := …Mentions: OAI.UniqueGamesTheorem.Reduction.ActualOrbit.Ambient, OAI.UniqueGamesTheorem.Reduction.ActualOrbit.Vertex, OAI.UniqueGamesTheorem.Reduction.Encoding.imageVertices, OAI.UniqueGamesTheorem.Reduction.ActualOrbit.body
- def
OAI.UniqueGamesTheorem.Reduction.ActualOrbit.unfoldline 221 - theorem
OAI.UniqueGamesTheorem.Reduction.ActualOrbit.add_self_vectorline 224 - theorem
OAI.UniqueGamesTheorem.Reduction.ActualOrbit.add_cancel_vectorline 228 - theorem
OAI.UniqueGamesTheorem.Reduction.ActualOrbit.constraint_iff_unfoldedline 232Source documentation
The precise orientation used by the generated edge.
theorem constraint_iff_unfolded (can : Q → Ambient s d × T) (labelL labelR : Vertex can → Vector s) (q r : Q) : (labelL (vertex can q) + offset can q) + offset can r = labelR (vertex can r) ↔ unfold can labelL q = unfold can labelR r := by …Mentions: OAI.UniqueGamesTheorem.Reduction.ActualOrbit.Ambient, OAI.UniqueGamesTheorem.Reduction.ActualOrbit.Vertex, OAI.UniqueGamesTheorem.Reduction.ActualOrbit.vertex, OAI.UniqueGamesTheorem.Reduction.ActualOrbit.offset, OAI.UniqueGamesTheorem.Reduction.ActualOrbit.unfold
- theorem
OAI.UniqueGamesTheorem.Reduction.ActualOrbit.unfold_eq_of_canonical_eqline 245Source documentation
A common full canonical record has one common unfolded value on each side.
theorem unfold_eq_of_canonical_eq (can : Q → Ambient s d × T) (label : Vertex can → Vector s) (q r : Q) (h : can q = can r) : unfold can label q = unfold can label r := by …Mentions: OAI.UniqueGamesTheorem.Reduction.ActualOrbit.Ambient, OAI.UniqueGamesTheorem.Reduction.ActualOrbit.Vertex, OAI.UniqueGamesTheorem.Reduction.ActualOrbit.unfold
- abbrev
OAI.UniqueGamesTheorem.Reduction.CanonicalEncoding.Ambientline 269 - abbrev
OAI.UniqueGamesTheorem.Reduction.CanonicalEncoding.Recordline 270 - abbrev
OAI.UniqueGamesTheorem.Reduction.CanonicalEncoding.Bodyline 271 - def
OAI.UniqueGamesTheorem.Reduction.CanonicalEncoding.vectorWordline 273 - theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalEncoding.vectorWord_ltline 276 - theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalEncoding.vectorWord_injectiveline 279 - theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalEncoding.vectorWord_eq_iffline 285 - def
OAI.UniqueGamesTheorem.Reduction.CanonicalEncoding.recordWordsline 290Source documentation
Words: tag, name, occurrence, followed by three split coefficient pairs. Padding is zero. A single record uses only the first coefficient pair.
def recordWords {n m s d : Nat} : Record n m s d → List Nat | .blank => [0, 0, 0, 0, 0, 0, 0, 0, 0] | .single name coefficient => [1, name.val, 0, vectorWord coefficient.1, vectorWord coefficient.2, 0, 0, 0, 0] | .full occurrence coefficients => [2, 0, occurrence.val, vectorWord (coefficients 0).1, vectorWord (coefficients 0).2, vectorWord (coefficients 1).1, vectorWord (coefficients 1).2, vectorWord (coefficients 2).1, vectorWord (coefficients 2).2]Mentions: OAI.UniqueGamesTheorem.Reduction.CanonicalEncoding.Record, OAI.UniqueGamesTheorem.Reduction.CanonicalEncoding.vectorWord
- theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalEncoding.recordWords_lengthline 300 - theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalEncoding.recordWords_injectiveline 304 - def
OAI.UniqueGamesTheorem.Reduction.CanonicalEncoding.recordsWordsline 339 - theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalEncoding.recordsWords_nilline 342 - theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalEncoding.recordsWords_consline 345 - theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalEncoding.recordsWords_lengthline 349 - theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalEncoding.recordsWords_take_headline 355 - theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalEncoding.recordsWords_injectiveline 362 - def
OAI.UniqueGamesTheorem.Reduction.CanonicalEncoding.bodyWordsline 390 - theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalEncoding.bodyWords_lengthline 393 - theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalEncoding.bodyWords_injectiveline 397 - theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalEncoding.bodyWords_eq_iffline 405 - def
OAI.UniqueGamesTheorem.Reduction.CanonicalEncoding.wordBoundline 408 - theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalEncoding.recordWords_boundedline 410 - theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalEncoding.bodyWords_boundedline 435 - def
OAI.UniqueGamesTheorem.Reduction.CanonicalEncoding.bodyBitsline 446 - theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalEncoding.bodyBits_injectiveline 449 - theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalEncoding.bodyBits_eq_iffline 454 - theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalEncoding.bodyBits_length_leline 457 - theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalEncoding.imageVertices_bodyWordsline 463Source documentation
Serializing before deduplication preserves the exact retained vertex order.
theorem imageVertices_bodyWords {Q : Type*} {n m k s d : Nat} [DecidableEq (Body n m k s d)] (queries : List Q) (body : Q → Body n m k s d) : Encoding.imageVertices queries (fun q => bodyWords (body q)) = (Encoding.imageVertices queries body).map bodyWords := by …Mentions: OAI.UniqueGamesTheorem.Reduction.CanonicalEncoding.Body, OAI.UniqueGamesTheorem.Reduction.Encoding.imageVertices, OAI.UniqueGamesTheorem.Reduction.CanonicalEncoding.bodyWords
- theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalEncoding.imageVertices_bodyBitsline 471 - theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalEncoding.idxOf_map_injectiveline 479 - theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalEncoding.imageIndex_map_valline 493Source documentation
Injective serialization leaves the actual numeric vertex index unchanged, not just the vertex set or its cardinality.
theorem imageIndex_map_val {Q A B : Type*} [DecidableEq A] [DecidableEq B] (queries : List Q) (body : Q → A) (f : A → B) (hf : Function.Injective f) (q : Q) (hq : q ∈ queries) : (Encoding.imageIndex queries (fun q => f (body q)) q hq).val = (Encoding.imageIndex queries body q hq).val := by …Mentions: OAI.UniqueGamesTheorem.Reduction.Encoding.imageIndex
- theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalEncoding.imageIndex_bodyWords_valline 507 - theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalEncoding.imageIndex_bodyBits_valline 514 - def
OAI.UniqueGamesTheorem.Reduction.CanonicalAddress.radixline 538Source documentation
Most-significant-word first, with leading zero words retained in the fixed-length domain. Mathlib's
ofDigitsuses the opposite list order.def radix (B : Nat) (words : List Nat) : Nat := Nat.ofDigits B words.reverse
- theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalAddress.radix_eq_foldlline 540 - theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalAddress.radix_nilline 546 - theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalAddress.radix_append_wordline 549Source documentation
This is precisely the arithmetic operation of
MachineRadixStep.theorem radix_append_word (B : Nat) (words : List Nat) (digit : Nat) : radix B (words ++ [digit]) = B * radix B words + digit := by …Mentions: OAI.UniqueGamesTheorem.Reduction.CanonicalAddress.radix
- theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalAddress.radix_lt_pow_lengthline 553 - theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalAddress.radix_injective_of_length_eqline 561Source documentation
Fixed width makes leading zero words unambiguous.
theorem radix_injective_of_length_eq {B : Nat} (hB : 1 < B) {xs ys : List Nat} (sameLength : xs.length = ys.length) (xsBounded : ∀ w ∈ xs, w < B) (ysBounded : ∀ w ∈ ys, w < B) (sameAddress : radix B xs = radix B ys) : xs = ys := by …Mentions: OAI.UniqueGamesTheorem.Reduction.CanonicalAddress.radix
- def
OAI.UniqueGamesTheorem.Reduction.CanonicalAddress.baseline 573Source documentation
One larger than the proved bound on every canonical word.
def base (n m s d : Nat) : Nat := wordBound n m s d + 1
- theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalAddress.base_eqline 575 - theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalAddress.one_lt_baseline 579 - theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalAddress.bodyWords_lt_baseline 586 - def
OAI.UniqueGamesTheorem.Reduction.CanonicalAddress.capacityline 590 - theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalAddress.capacity_posline 592 - def
OAI.UniqueGamesTheorem.Reduction.CanonicalAddress.bodyAddressline 595 - theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalAddress.bodyAddress_valline 601 - theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalAddress.bodyAddress_injectiveline 604 - theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalAddress.bodyAddress_eq_iffline 612 - def
OAI.UniqueGamesTheorem.Reduction.CanonicalAddress.capacityPolynomialline 616Source documentation
For fixed k,s,d, the entire direct-address space is a polynomial in n+m.
noncomputable def capacityPolynomial (k s d : Nat) : Polynomial Nat := …
- theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalAddress.capacityPolynomial_evalline 619 - inductive
OAI.UniqueGamesTheorem.Reduction.CanonicalWordTemplate.Tokenline 634Source documentation
A literal word or a reference to one of the four saved input fields.
inductive Token | literal (value : Nat) | name (index : Fin 3) | occurrence deriving DecidableEq, Repr
- def
OAI.UniqueGamesTheorem.Reduction.CanonicalWordTemplate.evalTokenline 640 - def
OAI.UniqueGamesTheorem.Reduction.CanonicalWordTemplate.evalTemplateline 645 - def
OAI.UniqueGamesTheorem.Reduction.CanonicalWordTemplate.isVariableline 649 - def
OAI.UniqueGamesTheorem.Reduction.CanonicalWordTemplate.variableTokensline 654 - def
OAI.UniqueGamesTheorem.Reduction.CanonicalWordTemplate.blankTemplateline 656 - def
OAI.UniqueGamesTheorem.Reduction.CanonicalWordTemplate.singleTemplateline 660 - def
OAI.UniqueGamesTheorem.Reduction.CanonicalWordTemplate.fullTemplateline 665 - def
OAI.UniqueGamesTheorem.Reduction.CanonicalWordTemplate.templateline 672Source documentation
Coefficient equality alone selects the record tag and the input field.
def template {s d : Nat} (a : Fin 3 → Ambient s d) : List Token := …Mentions: OAI.UniqueGamesTheorem.Reduction.CanonicalWordTemplate.Token
- theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalWordTemplate.blankTemplate_lengthline 679 - theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalWordTemplate.singleTemplate_lengthline 681 - theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalWordTemplate.fullTemplate_lengthline 684 - theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalWordTemplate.template_lengthline 687 - theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalWordTemplate.evalTemplate_lengthline 692 - theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalWordTemplate.eval_blankTemplateline 696 - theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalWordTemplate.eval_singleTemplateline 700 - theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalWordTemplate.eval_fullTemplateline 706 - theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalWordTemplate.eval_templateline 713Source documentation
The template evaluates to the exact existing canonical-record encoding.
theorem eval_template {n m s d : Nat} (names : Fin m → Fin 3 → Fin n) (occurrence : Fin m) (a : Fin 3 → Ambient s d) : evalTemplate (fun j => (names occurrence j).val) occurrence.val (template a) = recordWords (ActualCanonical.record names occurrence a) := by …Mentions: OAI.UniqueGamesTheorem.Reduction.CanonicalWordTemplate.evalTemplate, OAI.UniqueGamesTheorem.Reduction.CanonicalWordTemplate.template, OAI.UniqueGamesTheorem.Reduction.ActualCanonical.record
- theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalWordTemplate.variableTokens_blankTemplateline 720 - theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalWordTemplate.variableTokens_singleTemplateline 722 - theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalWordTemplate.variableTokens_fullTemplateline 726 - theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalWordTemplate.variableTokens_templateline 732Source documentation
Exact input-field profile: blank has none; single reads one selected name; full reads the occurrence identifier. Coefficient values are program constants.
theorem variableTokens_template {s d : Nat} (a : Fin 3 → Ambient s d) : variableTokens (template a) = if a 0 = a 1 then if a 0 = a 2 then [] else [.name 2] else if a 0 = a 2 then [.name 1] else if a 1 = a 2 then [.name 0] else [.occurrence] := by …Mentions: OAI.UniqueGamesTheorem.Reduction.CanonicalWordTemplate.variableTokens, OAI.UniqueGamesTheorem.Reduction.CanonicalWordTemplate.template
- theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalWordTemplate.variableTokens_template_length_le_oneline 742 - theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalWordTemplate.name_mem_variableTokens_iffline 747 - theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalWordTemplate.occurrence_mem_variableTokens_iffline 755 - theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalWordTemplate.flatMap_encodeWordline 763Source documentation
Emitting each token's existing unary-delimited word gives exactly the existing list-of-words serialization, with no alternative encoding.
theorem flatMap_encodeWord (names : Fin 3 → Nat) (occurrence : Nat) (tokens : List Token) : tokens.flatMap (fun token => encodeWord (evalToken names occurrence token)) = encodeWords (evalTemplate names occurrence tokens) := by …Mentions: OAI.UniqueGamesTheorem.Reduction.CanonicalWordTemplate.Token, OAI.UniqueGamesTheorem.Reduction.CanonicalWordTemplate.evalToken, OAI.UniqueGamesTheorem.Reduction.CanonicalWordTemplate.evalTemplate
- theorem
OAI.UniqueGamesTheorem.Reduction.CanonicalWordTemplate.template_bitsline 772