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.
abbreviation OAI.ParityWL.Bit line 11
abbrev Bit := ZMod 2
abbreviation OAI.ParityWL.MainPair line 12
abbrev MainPair (t : ℕ) := {p : Fin t × Fin t // p.1 < p.2}
abbreviation OAI.ParityWL.Helper line 13
abbrev Helper (t : ℕ) := {q : MainPair t × Fin t // q.2 ≠ q.1.1.1 ∧ q.2 ≠ q.1.1.2}
abbreviation OAI.ParityWL.TemplateVertex line 15
abbrev TemplateVertex (t : ℕ) := Fin t ⊕ Helper t
structure OAI.ParityWL.ChoiceSystem line 17
structure ChoiceSystem (t : ℕ) where Domain : Fin t → Type domainFintype : ∀ i, Fintype (Domain i) Label : MainPair t → Type labelFintype : ∀ p, Fintype (Label p) leftLabel : (p : MainPair t) → Domain p.1.1 → Label p rightLabel : (p : MainPair t) → Domain p.1.2 → Label p
definition OAI.ParityWL.ChoiceSystem.Successful line 27
def ChoiceSystem.Successful {t : ℕ} (C : ChoiceSystem t) : Prop := ∃ d : (i : Fin t) → C.Domain i, ∀ p : MainPair t, C.leftLabel p (d p.1.1) = C.rightLabel p (d p.1.2)
definition OAI.ParityWL.ChoiceSystem.SizeAtMost line 31
def ChoiceSystem.SizeAtMost {t : ℕ} (C : ChoiceSystem t) (A : ℕ) : Prop := (∀ i, Fintype.card (C.Domain i) ≤ A) ∧ (∀ p, Fintype.card (C.Label p) ≤ A)
definition OAI.ParityWL.helperIncident line 34
def helperIncident {t : ℕ} (h : Helper t) (i : Fin t) : Prop := i = h.1.1.1.1 ∨ i = h.1.1.1.2 ∨ i = h.1.2
definition OAI.ParityWL.templateAdj line 37
def templateAdj {t : ℕ} : TemplateVertex t → TemplateVertex t → Prop | .inl i, .inl j => i ≠ j | .inl i, .inr h => helperIncident h i | .inr h, .inl i => helperIncident h i | .inr _, .inr _ => False
definition OAI.ParityWL.template line 43
def template (t : ℕ) : SimpleGraph (TemplateVertex t) where Adj := templateAdj symm := ⟨by intro x y h cases x <;> cases y <;> simp_all [templateAdj, ne_comm]⟩ loopless := ⟨by intro x cases x <;> simp [templateAdj]⟩
abbreviation OAI.ParityWL.BaseVertex line 52
abbrev BaseVertex {t : ℕ} (C : ChoiceSystem t) := ((i : Fin t) × C.Domain i) ⊕ ((h : Helper t) × C.Label h.1.1)
definition OAI.ParityWL.baseType line 55
def baseType {t : ℕ} {C : ChoiceSystem t} : BaseVertex C → TemplateVertex t | .inl x => .inl x.1 | .inr x => .inr x.1
inductive type OAI.ParityWL.BaseArc line 59
inductive BaseArc {t : ℕ} (C : ChoiceSystem t) : BaseVertex C → BaseVertex C → Prop | main (p : MainPair t) (d : C.Domain p.1.1) (e : C.Domain p.1.2) (h : C.leftLabel p d = C.rightLabel p e) : BaseArc C (.inl ⟨p.1.1, d⟩) (.inl ⟨p.1.2, e⟩) | left (h : Helper t) (d : C.Domain h.1.1.1.1) : BaseArc C (.inr ⟨h, C.leftLabel h.1.1 d⟩) (.inl ⟨h.1.1.1.1, d⟩) | right (h : Helper t) (e : C.Domain h.1.1.1.2) : BaseArc C (.inr ⟨h, C.rightLabel h.1.1 e⟩) (.inl ⟨h.1.1.1.2, e⟩) | third (h : Helper t) (q : C.Label h.1.1) (f : C.Domain h.1.2) : BaseArc C (.inr ⟨h, q⟩) (.inl ⟨h.1.2, f⟩)
definition OAI.ParityWL.baseGraph line 70
def baseGraph {t : ℕ} (C : ChoiceSystem t) : SimpleGraph (BaseVertex C) := SimpleGraph.fromRel (BaseArc C)
definition OAI.ParityWL.baseProjection line 73
def baseProjection {t : ℕ} (C : ChoiceSystem t) : baseGraph C →g template t where
Show the remaining 13 lines
toFun := baseType map_rel' := by intro x y h have arc : ∀ u v, BaseArc C u v → (template t).Adj (baseType u) (baseType v) := by intro u v huv cases huv with | main p d e he => exact ne_of_lt p.property | left h d => exact Or.inl rfl | right h e => exact Or.inr (Or.inl rfl) | third h q f => exact Or.inr (Or.inr rfl) rcases h.2 with hxy | hyx · exact arc x y hxy · exact (arc y x hyx).symm
definition OAI.ParityWL.Tag line 92
noncomputable def Tag (b : A → Bit) (a : A) := by classical exact {z : T.neighborSet a → Bit // ∑ v, z v = b a}
abbreviation OAI.ParityWL.LiftVertex line 101
abbrev LiftVertex (τ : G →g T) (b : A → Bit) := (u : V) × Tag T b (τ u)
definition OAI.ParityWL.liftGraph line 103
noncomputable def liftGraph (τ : G →g T) (b : A → Bit) : SimpleGraph (LiftVertex T G τ b) where
Show the remaining 9 lines
Adj u v := ∃ h : G.Adj u.1 v.1, u.2.1 ⟨τ v.1, τ.map_adj h⟩ = v.2.1 ⟨τ u.1, τ.map_adj h.symm⟩ symm := ⟨by intro u v h rcases h with ⟨h, e⟩ exact ⟨h.symm, e.symm⟩⟩ loopless := ⟨by intro u h exact G.irrefl h.1⟩
definition OAI.ParityWL.starParity line 117
noncomputable def starParity (t : ℕ) : TemplateVertex t → Bit := fun a => if ∃ i : Fin t, i.val = 0 ∧ a = .inl i then 1 else 0
definition OAI.ParityWL.zeroLift line 120
noncomputable def zeroLift {t : ℕ} (C : ChoiceSystem t) := liftGraph (template t) (baseGraph C) (baseProjection C) (fun _ => 0)
definition OAI.ParityWL.starLift line 123
noncomputable def starLift {t : ℕ} (C : ChoiceSystem t) := liftGraph (template t) (baseGraph C) (baseProjection C) (starParity t)
inductive type OAI.ParityWL.Convention line 126
inductive Convention | joint | separate deriving DecidableEq
definition OAI.ParityWL.bagParameter line 129
def bagParameter (c : Convention) (k : ℕ) : ℕ := match c with | .joint => k + 1 | .separate => k
definition OAI.ParityWL.detectionRound line 132
def detectionRound : Convention → ℕ | .joint => 2 | .separate => 1
11 more definitions are reached the same way; the full file lists them.