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.
structure OAI.HyperbolicObstruction.FiniteComplex line 26
structure FiniteComplex where n : ℕ complex : AbstractSimplicialComplex (Fin n)
abbreviation OAI.HyperbolicObstruction.FiniteComplex.Vertex line 32
abbrev Vertex (K : FiniteComplex) := Fin K.n
definition OAI.HyperbolicObstruction.FiniteComplex.Carrier line 34
def Carrier (K : FiniteComplex) := {x : K.Vertex → ℝ // (∀ i, 0 ≤ x i) ∧ (∑ i, x i) = 1 ∧ ∃ s ∈ K.complex.faces, ∀ i, i ∉ s → x i = 0}
definition OAI.HyperbolicObstruction.FiniteComplex.Edge line 41
def Edge (K : FiniteComplex) (a b : K.Vertex) : Prop := {a, b} ∈ K.complex.faces
definition OAI.HyperbolicObstruction.FiniteComplex.EdgePath line 44
def EdgePath (K : FiniteComplex) : List K.Vertex → Prop | [] => False | [_] => True | a :: b :: t => K.Edge a b ∧ K.EdgePath (b :: t)
definition OAI.HyperbolicObstruction.FiniteComplex.Closed line 49
def Closed (K : FiniteComplex) (p : List K.Vertex) : Prop := ∃ a t, p = a :: (t ++ [a]) ∨ p = [a]
inductive type OAI.HyperbolicObstruction.FiniteComplex.DiskMove line 54
inductive DiskMove (K : FiniteComplex) : List K.Vertex → List K.Vertex → ℕ → Prop | stutter (l r) (a) : DiskMove K (l ++ [a, a] ++ r) (l ++ [a] ++ r) 0 | spur (l r) (a b) (h : K.Edge a b) : DiskMove K (l ++ [a, b, a] ++ r) (l ++ [a] ++ r) 0 | triangle (l r) (a b c) (h : {a, b, c} ∈ K.complex.faces) (hne : ({a, b, c} : Finset K.Vertex).card = 3) : DiskMove K (l ++ [a, b, c] ++ r) (l ++ [a, c] ++ r) 1
inductive type OAI.HyperbolicObstruction.FiniteComplex.DiskHomotopy line 65
inductive DiskHomotopy (K : FiniteComplex) : List K.Vertex → List K.Vertex → ℕ → Prop | refl (p) : DiskHomotopy K p p 0 | move {p q n} : DiskMove K p q n → DiskHomotopy K p q n | symm {p q n} : DiskHomotopy K p q n → DiskHomotopy K q p n | trans {p q r m n} : DiskHomotopy K p q m → DiskHomotopy K q r n → DiskHomotopy K p r (m + n)
definition OAI.HyperbolicObstruction.FiniteComplex.Disk line 72
def Disk (K : FiniteComplex) (p : List K.Vertex) (faces : ℕ) : Prop := ∃ a, K.DiskHomotopy p [a] faces
definition OAI.HyperbolicObstruction.FiniteComplex.LinearDiskFilling line 75
def LinearDiskFilling (K : FiniteComplex) (C : ℝ) : Prop := ∀ p, K.EdgePath p → K.Closed p → (∃ a, K.Disk p a) → ∃ a, K.Disk p a ∧ (a : ℝ) ≤ C * (p.length - 1 : ℕ)
definition OAI.HyperbolicObstruction.FiniteComplex.Aspherical line 79
def Aspherical (K : FiniteComplex) (x : K.Carrier) : Prop := ∀ n : ℕ, Subsingleton (HomotopyGroup.Pi (n + 2) K.Carrier x)
definition OAI.HyperbolicObstruction.IsSegment line 85
def IsSegment {X : Type*} [MetricSpace X] (γ : ℝ → X) (x y : X) : Prop := γ 0 = x ∧ γ 1 = y ∧ ∀ s ∈ Set.Icc (0 : ℝ) 1, ∀ t ∈ Set.Icc (0 : ℝ) 1, dist (γ s) (γ t) = |s - t| * dist x y
definition OAI.HyperbolicObstruction.IsGeodesic line 90
def IsGeodesic (X : Type*) [MetricSpace X] : Prop := ∀ x y : X, ∃ γ, IsSegment γ x y
definition OAI.HyperbolicObstruction.CATZero line 94
def CATZero (X : Type*) [MetricSpace X] : Prop := ∀ x y : X, ∃ γ, IsSegment γ x y ∧ ∀ z : X, ∀ t ∈ Set.Icc (0 : ℝ) 1, dist z (γ t) ^ 2 ≤ (1 - t) * dist z x ^ 2 + t * dist z y ^ 2 - t * (1 - t) * dist x y ^ 2
definition OAI.HyperbolicObstruction.CATNegOne line 101
def CATNegOne (X : Type*) [MetricSpace X] : Prop := ∀ x y : X, ∃ γ, IsSegment γ x y ∧ ∀ z : X, Real.cosh (dist z (γ (1 / 2))) ≤ (Real.cosh (dist z x) + Real.cosh (dist z y)) / (2 * Real.cosh (dist x y / 2))
structure OAI.HyperbolicObstruction.GeometricAction line 108
structure GeometricAction (G X : Type*) [Group G] [MetricSpace X] where act : G →* (X ≃ᵢ X) proper : ∀ C : Set X, IsCompact C → {g : G | ∃ x ∈ C, act g x ∈ C}.Finite cocompact : ∃ C : Set X, IsCompact C ∧ ∀ x : X, ∃ g : G, ∃ y ∈ C, act g y = x
definition OAI.HyperbolicObstruction.NoGeometricCATZeroAction line 116
def NoGeometricCATZeroAction (G : Type*) [Group G] : Prop := ∀ (X : Type u) (_ : MetricSpace X), Nonempty X → ProperSpace X → CompleteSpace X → CATZero X → IsEmpty (GeometricAction G X)
definition OAI.HyperbolicObstruction.WordLength line 120
def WordLength {G : Type*} [Group G] (S : Finset G) (g : G) : ℕ := sInf {n | ∃ w : List G, w.length = n ∧ (∀ a ∈ w, a ∈ S ∨ a⁻¹ ∈ S) ∧ w.prod = g}
definition OAI.HyperbolicObstruction.WordDistance line 124
def WordDistance {G : Type*} [Group G] (S : Finset G) (g h : G) : ℝ := WordLength S (g⁻¹ * h)
definition OAI.HyperbolicObstruction.WordHyperbolic line 128
def WordHyperbolic (G : Type*) [Group G] : Prop := ∃ S : Finset G, Subgroup.closure (S : Set G) = ⊤ ∧ ∃ δ : ℝ, 0 ≤ δ ∧ ∀ a b c d : G, WordDistance S a c + WordDistance S b d ≤ max (WordDistance S a b + WordDistance S c d) (WordDistance S a d + WordDistance S b c) + 2 * δ
definition OAI.HyperbolicObstruction.CompatibleLocallyCATNegOne line 136
def CompatibleLocallyCATNegOne (K : FiniteComplex) : Prop := ∃ m : MetricSpace K.Carrier, m.toUniformSpace.toTopologicalSpace = (inferInstance : TopologicalSpace K.Carrier) ∧ (letI := m IsGeodesic K.Carrier ∧ ∀ x : K.Carrier, ∃ r : ℝ, 0 < r ∧ CATNegOne (Metric.ball x r))
definition OAI.HyperbolicObstruction.MainStatement line 145
def MainStatement : Prop := ∃ K : FiniteComplex, ∃ x : K.Carrier, ∃ C : ℝ, ConnectedSpace K.Carrier ∧ K.Aspherical x ∧ 0 ≤ C ∧ K.LinearDiskFilling C ∧ NoGeometricCATZeroAction.{u} (FundamentalGroup K.Carrier x) ∧ WordHyperbolic (FundamentalGroup K.Carrier x) ∧ ∀ L : FiniteComplex, Nonempty (K.Carrier ≃ₕ L.Carrier) → ¬ CompatibleLocallyCATNegOne L