The lines of the Lean statement that state the theorem, then the definitions in the file that it uses.
Local definitions the statement names, followed through the definitions they name in turn. The match is by name in the source text, so a name reached only through notation can be missed; the full file is below.
definition OAI.BinPackingGames.Foundations.Complexity.encodeWord line 9
def encodeWord (n : Nat) : List Bool := List.replicate n true ++ [false]
definition OAI.BinPackingGames.Foundations.Complexity.MachineFiniteAlphabet.FiniteAlphabet line 17
def FiniteAlphabet (M : FinTM2) : Prop := ∀ k, Finite (M.Γ k)
definition OAI.BinPackingGames.Foundations.Complexity.CookLevin.pairBits line 23
def pairBits (input : List Bool × List Bool) : List Bool := encodeWord input.1.length ++ input.1 ++ input.2
structure OAI.BinPackingGames.Foundations.Complexity.CookLevin.NPVerifier line 26
structure NPVerifier where witnessBound : Polynomial Nat verify : (List Bool × List Bool) → Bool computation : Turing.TM2ComputableInPolyTime pairBits (fun bit => [bit]) verify finiteAlphabet : (k : computation.tm.K) → Fintype (computation.tm.Γ k)
definition OAI.BinPackingGames.Foundations.Complexity.CookLevin.NPVerifier.Accepts line 32
def NPVerifier.Accepts (verifier : NPVerifier) (input : List Bool) : Prop := ∃ witness : List Bool, witness.length ≤ verifier.witnessBound.eval input.length ∧ verifier.verify (input, witness) = true
definition OAI.BinPackingGames.Foundations.Complexity.CookLevin.InNP line 37
def InNP (language : List Bool → Prop) : Prop := ∃ verifier : NPVerifier, ∀ input, language input ↔ verifier.Accepts input
definition OAI.BinPackingCompleteness.BinaryEncoding.bitsValue line 44
def bitsValue : List Bool → Nat | [] => 0 | b :: bits => Nat.bit b (bitsValue bits)
definition OAI.BinPackingCompleteness.BinaryEncoding.frame line 48
def frame : List Bool → List Bool | [] => [false] | b :: bits => true :: b :: frame bits
definition OAI.BinPackingCompleteness.BinaryEncoding.parseFrame line 52
def parseFrame : List Bool → Option (List Bool × List Bool) | false :: rest => some ([], rest) | true :: b :: rest => do let (bits, trailing) ← parseFrame rest return (b :: bits, trailing) | _ => none
definition OAI.BinPackingCompleteness.BinaryEncoding.nameBits line 59
def nameBits (name : Nat) : List Bool := frame name.bits
definition OAI.BinPackingCompleteness.BinaryEncoding.parseName line 61
def parseName (input : List Bool) : Option (Nat × List Bool) := do let (digits, rest) ← parseFrame input let name := bitsValue digits if digits = name.bits then some (name, rest) else none
structure OAI.BinPackingGap.Instance line 72
structure Instance where n : ℕ size : Fin n → ℚ size_pos : ∀ i, 0 < size i size_le_one : ∀ i, size i ≤ 1
abbreviation OAI.BinPackingGap.Instance.Item line 80
abbrev Item (I : Instance) := Fin I.n
structure OAI.BinPackingGap.Packing line 84
structure Packing (I : Instance) (b : ℕ) where assignment : I.Item → Fin b capacity : ∀ j, (∑ i, if assignment i = j then I.size i else 0) ≤ 1
definition OAI.BinPackingGap.HasPacking line 88
def HasPacking (I : Instance) (b : ℕ) : Prop := Nonempty (Packing I b)
definition OAI.BinPackingGap.opt line 106
noncomputable def opt (I : Instance) : ℕ := by classical exact Nat.find (exists_packing I)
definition OAI.BinPackingGap.IndividualConfiguration line 110
def IndividualConfiguration (I : Instance) := {H : Finset I.Item // ∑ i ∈ H, I.size i ≤ 1}
definition OAI.BinPackingGap.NumericalSize line 116
def NumericalSize (I : Instance) := ↥(Finset.univ.image I.size)
definition OAI.BinPackingGap.NumericalSize.multiplicity line 130
def multiplicity (s : NumericalSize I) : ℕ := (Finset.univ.filter fun i : I.Item => I.size i = s.val).card
definition OAI.BinPackingGap.TypeConfiguration line 141
def TypeConfiguration (I : Instance) := {c : NumericalSize I → ℕ // ∑ s, s.val * (c s : ℚ) ≤ 1}
definition OAI.BinPackingGap.FractionalCover.Feasible line 183
def Feasible (a : C → I → ℝ) (d : I → ℝ) (w : C → ℝ) : Prop := (∀ c, 0 ≤ w c) ∧ ∀ i, d i ≤ ∑ c, a c i * w c
definition OAI.BinPackingGap.FractionalCover.objective line 186
def objective (w : C → ℝ) : ℝ := ∑ c, w c
definition OAI.BinPackingGap.FractionalCover.objectiveSet line 188
def objectiveSet (a : C → I → ℝ) (d : I → ℝ) : Set ℝ := {v | ∃ w, Feasible a d w ∧ objective w = v}
definition OAI.BinPackingGap.FractionalCover.value line 191
def value (a : C → I → ℝ) (d : I → ℝ) : ℝ := sInf (objectiveSet a d)
34 more definitions are reached the same way; the full file lists them.