OAI/Computability/UniqueGames/Machines/MachineBinaryFormulaLemmas.lean
79 declarations, 0 contain sorry, 0 declared as axioms
An explicit ordinary-binary codec for sparse-name three-literal CNF.
A natural name uses its canonical little-endian binary digits. Each payload
digit b is represented by the pair true,b; false terminates the name.
Zero has the empty payload and therefore the one-bit encoding [false].
A literal is its sign bit followed by its name. A clause contains three literal
encodings. A formula contains true followed by each clause, then one final
false. There is no unary expansion of a variable name, declared variable
universe, or deduplication of literal or clause occurrences.
The parser rejects noncanonical name payloads, incomplete literals/clauses, and trailing input. The input length is within a fixed factor of the total ordinary binary name lengths plus signs and clause framing. Machine correspondence and runtime are proved separately; these output-size bounds are not time bounds.
- def
OAI.UniqueGamesTheorem.BinaryFormula.clauseNamesline 18Source documentation
An ordinary conjunction of three-slot clauses with sparse variable names. Repeated names and repeated literals are permitted in every clause.
def clauseNames (c : Clause) : List Nat := …
- def
OAI.UniqueGamesTheorem.BinaryFormula.sourceNamesline 21 - def
OAI.UniqueGamesTheorem.BinaryFormula.activeNamesline 26Source documentation
Explicit list of occurring names, with duplicates removed. The list lengths depend only on occurrences; no interval of natural-number names is enumerated.
def activeNames (F : Formula) : List Nat := …
- theorem
OAI.UniqueGamesTheorem.BinaryFormula.literal_mem_activeline 29 - def
OAI.UniqueGamesTheorem.BinaryFormula.compactIndexline 37 - def
OAI.UniqueGamesTheorem.BinaryFormula.decodeNameline 41 - def
OAI.UniqueGamesTheorem.BinaryFormula.compactLiteralline 44 - def
OAI.UniqueGamesTheorem.BinaryFormula.compactClauseline 48 - def
OAI.UniqueGamesTheorem.BinaryFormula.compactClausesline 54 - def
OAI.UniqueGamesTheorem.BinaryFormula.denseline 57 - def
OAI.UniqueGamesTheorem.BinaryFormula.restrictAssignmentline 61 - def
OAI.UniqueGamesTheorem.BinaryFormula.extendAssignmentline 64 - theorem
OAI.UniqueGamesTheorem.BinaryFormula.decode_compactIndexline 68 - theorem
OAI.UniqueGamesTheorem.BinaryFormula.compactIndex_injectiveline 74Source documentation
Distinct occurring names remain distinct. Repeated occurrences of one name use the same index, since the proof argument of
compactIndexis irrelevant.theorem compactIndex_injective (F : Formula) (u v : Nat) (hu : u ∈ activeNames F) (hv : v ∈ activeNames F) (h : compactIndex F u hu = compactIndex F v hv) : u = v := by …Mentions: OAI.UniqueGamesTheorem.BinaryFormula.Formula, OAI.UniqueGamesTheorem.BinaryFormula.activeNames, OAI.UniqueGamesTheorem.BinaryFormula.compactIndex
- theorem
OAI.UniqueGamesTheorem.BinaryFormula.compactLiteral_positiveline 80 - theorem
OAI.UniqueGamesTheorem.BinaryFormula.eval_compact_restrictline 83 - theorem
OAI.UniqueGamesTheorem.BinaryFormula.eval_compact_extendline 89 - def
OAI.UniqueGamesTheorem.BinaryFormula.evaluationListline 99 - theorem
OAI.UniqueGamesTheorem.BinaryFormula.evaluationList_restrictline 104Source documentation
Evaluation lists retain every clause occurrence, so this is stronger than merely preserving satisfiability or the set of distinct clauses.
theorem evaluationList_restrict (F : Formula) (A : Nat → Bool) : PCP.NameCompaction.evaluationList (dense F) (restrictAssignment F A) = evaluationList F A := by …Mentions: OAI.UniqueGamesTheorem.BinaryFormula.Formula, OAI.UniqueGamesTheorem.BinaryFormula.dense, OAI.UniqueGamesTheorem.BinaryFormula.restrictAssignment, OAI.UniqueGamesTheorem.BinaryFormula.evaluationList
- theorem
OAI.UniqueGamesTheorem.BinaryFormula.evaluationList_extendline 112 - def
OAI.UniqueGamesTheorem.BinaryFormula.failedCountline 126 - theorem
OAI.UniqueGamesTheorem.BinaryFormula.failedCount_restrictline 129 - theorem
OAI.UniqueGamesTheorem.BinaryFormula.failedCount_extendline 133 - theorem
OAI.UniqueGamesTheorem.BinaryFormula.clauseNames_flat_lengthline 137 - theorem
OAI.UniqueGamesTheorem.BinaryFormula.dense_clause_countline 146 - theorem
OAI.UniqueGamesTheorem.BinaryFormula.dense_variable_boundline 152Source documentation
No greatest-name bound occurs: even very large, sparsely used names yield at most three dense variables per explicitly listed clause.
theorem dense_variable_bound (F : Formula) : (dense F).variables ≤ 3 * F.clauses.length := by …Mentions: OAI.UniqueGamesTheorem.BinaryFormula.Formula, OAI.UniqueGamesTheorem.BinaryFormula.dense
- theorem
OAI.UniqueGamesTheorem.BinaryFormula.dense_completenessline 157 - theorem
OAI.UniqueGamesTheorem.BinaryFormula.dense_reflectsline 166 - theorem
OAI.UniqueGamesTheorem.BinaryFormula.dense_satisfiable_iffline 176 - theorem
OAI.UniqueGamesTheorem.BinaryFormula.dense_preserves_gapline 180 - theorem
OAI.UniqueGamesTheorem.BinaryFormula.dense_encoding_boundline 190Source documentation
Size of the reused dense formula encoding, bounded only by the number of explicit clause occurrences. This does not assert a binary input parser or a running-time bound for sparse-to-dense conversion.
theorem dense_encoding_bound (F : Formula) : (Complexity.formulaBits (dense F)).length ≤ 9 * F.clauses.length * F.clauses.length + 10 * F.clauses.length + 2 := by …Mentions: OAI.UniqueGamesTheorem.BinaryFormula.Formula, OAI.UniqueGamesTheorem.BinaryFormula.dense
- theorem
OAI.UniqueGamesTheorem.BinaryEncoding.bitsValue_bitsline 234 - def
OAI.UniqueGamesTheorem.BinaryEncoding.frameline 242Source documentation
Prefix-free framing on the two-symbol input alphabet.
def frame : List Bool → List Bool | [] => [false] | b :: bits => true :: b :: frame bits
- theorem
OAI.UniqueGamesTheorem.BinaryEncoding.parseFrame_encodedline 246 - theorem
OAI.UniqueGamesTheorem.BinaryEncoding.frame_lengthline 252 - def
OAI.UniqueGamesTheorem.BinaryEncoding.nameBitsline 258 - theorem
OAI.UniqueGamesTheorem.BinaryEncoding.parseName_encodedline 262Source documentation
Equality with the canonical digits rejects alternate padded encodings.
@[simp] theorem parseName_encoded (name : Nat) (rest : List Bool) : parseName (nameBits name ++ rest) = some (name, rest) := by …Mentions: OAI.UniqueGamesTheorem.BinaryEncoding.parseName, OAI.UniqueGamesTheorem.BinaryEncoding.nameBits
- theorem
OAI.UniqueGamesTheorem.BinaryEncoding.nameBits_lengthline 266 - theorem
OAI.UniqueGamesTheorem.BinaryEncoding.nameBits_length_le_of_lt_powline 270 - def
OAI.UniqueGamesTheorem.BinaryEncoding.literalBitsline 276 - theorem
OAI.UniqueGamesTheorem.BinaryEncoding.parseLiteral_encodedline 279 - theorem
OAI.UniqueGamesTheorem.BinaryEncoding.literalBits_lengthline 284 - def
OAI.UniqueGamesTheorem.BinaryEncoding.clauseBitsline 288 - theorem
OAI.UniqueGamesTheorem.BinaryEncoding.clause_three_entriesline 291 - theorem
OAI.UniqueGamesTheorem.BinaryEncoding.parseClause_encodedline 297 - def
OAI.UniqueGamesTheorem.BinaryEncoding.clauseNameSizeline 301 - theorem
OAI.UniqueGamesTheorem.BinaryEncoding.clauseBits_lengthline 304 - def
OAI.UniqueGamesTheorem.BinaryEncoding.clausesBitsline 309 - def
OAI.UniqueGamesTheorem.BinaryEncoding.formulaBitsline 313 - def
OAI.UniqueGamesTheorem.BinaryEncoding.namesBitSizeline 315 - theorem
OAI.UniqueGamesTheorem.BinaryEncoding.namesBitSize_nilline 318 - theorem
OAI.UniqueGamesTheorem.BinaryEncoding.namesBitSize_consline 320 - theorem
OAI.UniqueGamesTheorem.BinaryEncoding.clausesBits_lengthline 324 - theorem
OAI.UniqueGamesTheorem.BinaryEncoding.formulaBits_lengthline 333 - theorem
OAI.UniqueGamesTheorem.BinaryEncoding.clauses_length_lt_bitsline 338 - def
OAI.UniqueGamesTheorem.BinaryEncoding.ordinarySizeline 345Source documentation
Binary digits, one sign per literal, and one terminal bit form a natural reference size. The concrete framing adds only a fixed multiplicative factor.
def ordinarySize (formula : Formula) : Nat := …
- theorem
OAI.UniqueGamesTheorem.BinaryEncoding.ordinarySize_le_bitsline 348 - theorem
OAI.UniqueGamesTheorem.BinaryEncoding.bits_le_three_ordinarySizeline 354 - theorem
OAI.UniqueGamesTheorem.BinaryEncoding.parseClauses_encodedline 362Source documentation
Fuel bounds the number of clause iterations, not the size of any name.
@[simp] theorem parseClauses_encoded (clauses : List Clause) (rest : List Bool) (fuel : Nat) (enough : clauses.length < fuel) : parseClauses fuel (clausesBits clauses ++ rest) = some (clauses, rest) := by …Mentions: OAI.UniqueGamesTheorem.BinaryEncoding.parseClauses, OAI.UniqueGamesTheorem.BinaryEncoding.clausesBits
- theorem
OAI.UniqueGamesTheorem.BinaryEncoding.decodeFormula_encodedline 377 - theorem
OAI.UniqueGamesTheorem.BinaryEncoding.formulaBits_injectiveline 387Source documentation
This preserves every literal and clause occurrence, including duplicates.
theorem formulaBits_injective {first second : Formula} (same : formulaBits first = formulaBits second) : first = second := by … - theorem
OAI.UniqueGamesTheorem.BinaryEncoding.dense_encoding_boundline 394Source documentation
The existing dense unary output is polynomial in this ordinary binary input length. This remains an output-size theorem, not a runtime certificate.
theorem dense_encoding_bound (formula : Formula) : (UniqueGamesTheorem.Foundations.Complexity.formulaBits (dense formula)).length ≤ 9 * (formulaBits formula).length * (formulaBits formula).length + 10 * (formulaBits formula).length + 2 := by …Mentions: OAI.UniqueGamesTheorem.Foundations.Complexity.formulaBits, OAI.UniqueGamesTheorem.BinaryEncoding.formulaBits
- theorem
OAI.UniqueGamesTheorem.BinaryOccurrenceRename.literal_mem_namesline 426 - def
OAI.UniqueGamesTheorem.BinaryOccurrenceRename.nameIndexline 433 - def
OAI.UniqueGamesTheorem.BinaryOccurrenceRename.literalline 437 - def
OAI.UniqueGamesTheorem.BinaryOccurrenceRename.clauseline 441 - def
OAI.UniqueGamesTheorem.BinaryOccurrenceRename.renamedline 447 - def
OAI.UniqueGamesTheorem.BinaryOccurrenceRename.restrictAssignmentline 451 - def
OAI.UniqueGamesTheorem.BinaryOccurrenceRename.extendAssignmentline 455 - theorem
OAI.UniqueGamesTheorem.BinaryOccurrenceRename.nameIndex_reads_nameline 458 - theorem
OAI.UniqueGamesTheorem.BinaryOccurrenceRename.clause_eval_restrictline 462 - theorem
OAI.UniqueGamesTheorem.BinaryOccurrenceRename.clause_eval_extendline 467 - theorem
OAI.UniqueGamesTheorem.BinaryOccurrenceRename.renamed_clause_countline 477 - theorem
OAI.UniqueGamesTheorem.BinaryOccurrenceRename.renamed_variable_countline 480 - theorem
OAI.UniqueGamesTheorem.BinaryOccurrenceRename.renamed_satisfiable_iffline 484 - theorem
OAI.UniqueGamesTheorem.BinaryOccurrenceRename.nat_bits_injectiveline 499 - theorem
OAI.UniqueGamesTheorem.BinaryOccurrenceRename.idxOf_binary_payloadsline 506Source documentation
The numerical first occurrence is exactly the index found by comparing binary payload lists. This is the key search-machine correspondence.
theorem idxOf_binary_payloads (names : List Nat) (name : Nat) : (names.map Nat.bits).idxOf name.bits = names.idxOf name := by … - theorem
OAI.UniqueGamesTheorem.BinaryOccurrenceRename.renamed_encoding_boundline 519Source documentation
The fixed unary output codec has quadratic size in the literal count.
theorem renamed_encoding_bound (F : Formula) : (Complexity.formulaBits (renamed F)).length ≤ 9 * F.clauses.length * F.clauses.length + 10 * F.clauses.length + 2 := by …Mentions: OAI.UniqueGamesTheorem.BinaryOccurrenceRename.renamed
- theorem
OAI.UniqueGamesTheorem.BinaryOccurrenceRename.renamed_encoding_bound_bitsline 526