Pith. sign in

IndisputableMonolith.Foundation.LinkingVanishingLowDim

IndisputableMonolith/Foundation/LinkingVanishingLowDim.lean · 250 lines · 7 declarations

show as:
view math explainer →

open module explainer GitHub source

Explainer status: ready · generated 2026-08-13 00:48:33.425739+00:00

   1import Mathlib.AlgebraicTopology.SingularHomology.Basic
   2import Mathlib.Algebra.Category.ModuleCat.Colimits
   3import Mathlib.Algebra.Homology.ShortComplex.ModuleCat
   4import Mathlib.Topology.Category.TopCat.Sphere
   5import Mathlib.Geometry.Manifold.Instances.Sphere
   6
   7/-!
   8# Linking vanishes in low dimension (D = 0, 1)
   9
  10Mathlib-only leaf module. It restates (verbatim) the content-typed linking
  11object `linkingComplementH1` and detector `DetectsNontrivialLinking` from
  12`IndisputableMonolith.Foundation.PublicSpine`, and proves that the detector
  13fails in dimensions `0` and `1`:
  14
  15* `not_detects_zero`: the `0`-sphere is a finite (two-point) space, hence
  16  totally disconnected, hence so is every subspace; singular homology in
  17  degree `1` of a totally disconnected space vanishes
  18  (`AlgebraicTopology.isZero_singularHomologyFunctor_of_totallyDisconnectedSpace`).
  19* `not_detects_one`: a continuous injection `S¹ → S¹` is surjective (if it
  20  missed a point, stereographic projection would give a continuous injection
  21  `S¹ → ℝ`, impossible since removing the preimage of a middle value keeps
  22  `S¹` connected while disconnecting the image interval); the complement of
  23  an embedded circle in `S¹` is therefore empty, and homology of the empty
  24  space vanishes in degree `1`.
  25
  26The two definitions are restated with the same implicit arguments and
  27universes as the parent module, so the parent can glue by `exact`.
  28-/
  29
  30namespace IndisputableMonolith
  31namespace Foundation
  32namespace LinkingVanishingLowDim
  33
  34/-- Verbatim restatement of `PublicSpine.linkingComplementH1`. -/
  35noncomputable def linkingComplementH1 (D : ℕ)
  36    (f : C(TopCat.sphere.{0} 1, TopCat.sphere.{0} D)) : ModuleCat ℤ :=
  37  ((AlgebraicTopology.singularHomologyFunctor (ModuleCat ℤ) 1).obj
  38    (ModuleCat.of ℤ ℤ)).obj
  39    (TopCat.of {x : TopCat.sphere.{0} D // x ∉ Set.range f})
  40
  41/-- Verbatim restatement of `PublicSpine.DetectsNontrivialLinking`. -/
  42def DetectsNontrivialLinking (D : ℕ) : Prop :=
  43  ∃ f : C(TopCat.sphere.{0} 1, TopCat.sphere.{0} D),
  44    Topology.IsEmbedding f ∧
  45      ¬ CategoryTheory.Limits.IsZero (linkingComplementH1 D f)
  46
  47/-! ## Dimension 0: the 0-sphere is a two-point space -/
  48
  49/-- The unit sphere in `ℝ¹` is contained in the two-point set `{e, -e}`. -/
  50lemma sphere_fin_one_finite :
  51    (Metric.sphere (0 : EuclideanSpace ℝ (Fin 1)) 1).Finite := by
  52  have hsub : Metric.sphere (0 : EuclideanSpace ℝ (Fin 1)) 1 ⊆
  53      {EuclideanSpace.single (0 : Fin 1) (1 : ℝ),
  54        EuclideanSpace.single (0 : Fin 1) (-1 : ℝ)} := by
  55    intro x hx
  56    rw [EuclideanSpace.sphere_zero_eq _ zero_le_one, Set.mem_setOf_eq,
  57      Fin.sum_univ_one] at hx
  58    have h0 : (x 0 - 1) * (x 0 + 1) = 0 := by nlinarith
  59    rcases mul_eq_zero.mp h0 with h | h
  60    · left
  61      ext i
  62      obtain rfl : i = (0 : Fin 1) := Subsingleton.elim _ _
  63      rw [EuclideanSpace.single_apply, if_pos rfl]
  64      linarith
  65    · right
  66      ext i
  67      obtain rfl : i = (0 : Fin 1) := Subsingleton.elim _ _
  68      rw [EuclideanSpace.single_apply, if_pos rfl]
  69      linarith
  70  exact ((Set.finite_singleton _).insert _).subset hsub
  71
  72instance : Finite ↥(Metric.sphere (0 : EuclideanSpace ℝ (Fin 1)) 1) :=
  73  sphere_fin_one_finite.to_subtype
  74
  75/-- No embedded circle in the 0-sphere has homologically nontrivial
  76complement: every subspace of the two-point space `S⁰` is totally
  77disconnected, so its first singular homology vanishes. -/
  78theorem not_detects_zero : ¬ DetectsNontrivialLinking 0 := by
  79  rintro ⟨f, -, hH⟩
  80  apply hH
  81  haveI hTD : TotallyDisconnectedSpace ↥(TopCat.sphere.{0} 0) := by
  82    show TotallyDisconnectedSpace
  83      (ULift.{0} ↥(Metric.sphere (0 : EuclideanSpace ℝ (Fin 1)) 1))
  84    infer_instance
  85  haveI : TotallyDisconnectedSpace
  86      ↥(TopCat.of {x : TopCat.sphere.{0} 0 // x ∉ Set.range f}) :=
  87    (inferInstance :
  88      TotallyDisconnectedSpace {x : TopCat.sphere.{0} 0 // x ∉ Set.range f})
  89  exact AlgebraicTopology.isZero_singularHomologyFunctor_of_totallyDisconnectedSpace
  90    (ModuleCat ℤ) 1 (ModuleCat.of ℤ ℤ)
  91    (TopCat.of {x : TopCat.sphere.{0} 0 // x ∉ Set.range f}) one_ne_zero
  92
  93/-! ## Dimension 1: an embedded circle fills the whole 1-sphere -/
  94
  95/-- There is no continuous injection from the metric circle into `ℝ`:
  96removing the preimage of a strictly-middle value leaves the circle connected
  97(stereographic projection identifies it with `ℝ¹`), while the image must be
  98an order-connected set that omits a middle point between two attained
  99values. -/
 100theorem no_continuous_injective_circle_to_real
 101    (g : ↥(Metric.sphere (0 : EuclideanSpace ℝ (Fin 2)) 1) → ℝ)
 102    (hgc : Continuous g) (hginj : Function.Injective g) : False := by
 103  -- three distinct points on the circle
 104  have mem1 : EuclideanSpace.single (0 : Fin 2) (1 : ℝ) ∈
 105      Metric.sphere (0 : EuclideanSpace ℝ (Fin 2)) 1 := by
 106    rw [mem_sphere_zero_iff_norm, EuclideanSpace.norm_single]; norm_num
 107  have mem2 : EuclideanSpace.single (1 : Fin 2) (1 : ℝ) ∈
 108      Metric.sphere (0 : EuclideanSpace ℝ (Fin 2)) 1 := by
 109    rw [mem_sphere_zero_iff_norm, EuclideanSpace.norm_single]; norm_num
 110  have mem3 : EuclideanSpace.single (0 : Fin 2) (-1 : ℝ) ∈
 111      Metric.sphere (0 : EuclideanSpace ℝ (Fin 2)) 1 := by
 112    rw [mem_sphere_zero_iff_norm, EuclideanSpace.norm_single]; norm_num
 113  set a : ↥(Metric.sphere (0 : EuclideanSpace ℝ (Fin 2)) 1) := ⟨_, mem1⟩ with ha
 114  set b : ↥(Metric.sphere (0 : EuclideanSpace ℝ (Fin 2)) 1) := ⟨_, mem2⟩ with hb
 115  set c : ↥(Metric.sphere (0 : EuclideanSpace ℝ (Fin 2)) 1) := ⟨_, mem3⟩ with hc
 116  have hab : a ≠ b := by
 117    intro h
 118    have h0 := congrArg (fun v : ↥(Metric.sphere (0 : EuclideanSpace ℝ (Fin 2)) 1) =>
 119      (v : EuclideanSpace ℝ (Fin 2)) 0) h
 120    simp only [ha, hb, EuclideanSpace.single_apply] at h0
 121    norm_num at h0
 122  have hac : a ≠ c := by
 123    intro h
 124    have h0 := congrArg (fun v : ↥(Metric.sphere (0 : EuclideanSpace ℝ (Fin 2)) 1) =>
 125      (v : EuclideanSpace ℝ (Fin 2)) 0) h
 126    simp only [ha, hc, EuclideanSpace.single_apply] at h0
 127    norm_num at h0
 128  have hbc : b ≠ c := by
 129    intro h
 130    have h0 := congrArg (fun v : ↥(Metric.sphere (0 : EuclideanSpace ℝ (Fin 2)) 1) =>
 131      (v : EuclideanSpace ℝ (Fin 2)) 0) h
 132    simp only [hb, hc, EuclideanSpace.single_apply] at h0
 133    norm_num at h0
 134  -- among the three (distinct) values pick the strictly-middle one
 135  have hgab : g a ≠ g b := fun h => hab (hginj h)
 136  have hgac : g a ≠ g c := fun h => hac (hginj h)
 137  have hgbc : g b ≠ g c := fun h => hbc (hginj h)
 138  obtain ⟨x0, y1, y2, hy1, hy2, hlt1, hlt2⟩ :
 139      ∃ x0 y1 y2 : ↥(Metric.sphere (0 : EuclideanSpace ℝ (Fin 2)) 1),
 140        y1 ≠ x0 ∧ y2 ≠ x0 ∧ g y1 < g x0 ∧ g x0 < g y2 := by
 141    rcases hgab.lt_or_gt with h1 | h1
 142    · rcases hgbc.lt_or_gt with h2 | h2
 143      · exact ⟨b, a, c, hab, hbc.symm, h1, h2⟩
 144      · rcases hgac.lt_or_gt with h3 | h3
 145        · exact ⟨c, a, b, hac, hbc, h3, h2⟩
 146        · exact ⟨a, c, b, hac.symm, hab.symm, h3, h1⟩
 147    · rcases hgac.lt_or_gt with h3 | h3
 148      · exact ⟨a, b, c, hab.symm, hac.symm, h1, h3⟩
 149      · rcases hgbc.lt_or_gt with h2 | h2
 150        · exact ⟨c, b, a, hbc, hac, h2, h3⟩
 151        · exact ⟨b, c, a, hbc.symm, hab, h2, h1⟩
 152  -- the circle minus the middle point is connected (stereographic projection)
 153  haveI fact2 : Fact (Module.finrank ℝ (EuclideanSpace ℝ (Fin 2)) = 1 + 1) :=
 154    ⟨by norm_num [finrank_euclideanSpace_fin]⟩
 155  have hconn :
 156      IsConnected ({x0}ᶜ : Set ↥(Metric.sphere (0 : EuclideanSpace ℝ (Fin 2)) 1)) := by
 157    haveI hct : ConnectedSpace ((stereographic' (1 : ℕ) x0).target) := by
 158      rw [stereographic'_target]
 159      exact (Homeomorph.Set.univ (EuclideanSpace ℝ (Fin 1))).symm.surjective.connectedSpace
 160        (Homeomorph.Set.univ (EuclideanSpace ℝ (Fin 1))).symm.continuous
 161    haveI hcs : ConnectedSpace ((stereographic' (1 : ℕ) x0).source) :=
 162      (stereographic' (1 : ℕ) x0).toHomeomorphSourceTarget.symm.surjective.connectedSpace
 163        (stereographic' (1 : ℕ) x0).toHomeomorphSourceTarget.symm.continuous
 164    rw [← stereographic'_source (n := 1) x0]
 165    exact isConnected_iff_connectedSpace.mpr hcs
 166  -- its image omits the middle value, contradicting order-connectedness
 167  have hy1m : y1 ∈ ({x0}ᶜ : Set ↥(Metric.sphere (0 : EuclideanSpace ℝ (Fin 2)) 1)) :=
 168    Set.mem_compl_singleton_iff.mpr hy1
 169  have hy2m : y2 ∈ ({x0}ᶜ : Set ↥(Metric.sphere (0 : EuclideanSpace ℝ (Fin 2)) 1)) :=
 170    Set.mem_compl_singleton_iff.mpr hy2
 171  have himg : IsPreconnected (g '' ({x0}ᶜ)) :=
 172    hconn.isPreconnected.image g hgc.continuousOn
 173  have hmid : g x0 ∈ g '' ({x0}ᶜ) :=
 174    himg.Icc_subset ⟨y1, hy1m, rfl⟩ ⟨y2, hy2m, rfl⟩ ⟨hlt1.le, hlt2.le⟩
 175  obtain ⟨z, hz, hzeq⟩ := hmid
 176  exact Set.mem_compl_singleton_iff.mp hz (hginj hzeq)
 177
 178/-- A continuous injection of the metric circle into itself is surjective:
 179if it missed a point, composing with the stereographic projection from that
 180point would give a continuous injection of the circle into `ℝ¹`. -/
 181theorem continuous_injective_circle_self_surjective
 182    (f₀ : ↥(Metric.sphere (0 : EuclideanSpace ℝ (Fin 2)) 1) →
 183      ↥(Metric.sphere (0 : EuclideanSpace ℝ (Fin 2)) 1))
 184    (hc : Continuous f₀) (hinj : Function.Injective f₀) :
 185    Function.Surjective f₀ := by
 186  intro p
 187  by_contra hp
 188  push_neg at hp
 189  haveI fact2 : Fact (Module.finrank ℝ (EuclideanSpace ℝ (Fin 2)) = 1 + 1) :=
 190    ⟨by norm_num [finrank_euclideanSpace_fin]⟩
 191  set φ := stereographic' (1 : ℕ) p with hφ
 192  have hmem : ∀ x, f₀ x ∈ φ.source := by
 193    intro x
 194    rw [hφ, stereographic'_source]
 195    exact Set.mem_compl_singleton_iff.mpr (hp x)
 196  have hφc : Continuous fun x => φ (f₀ x) :=
 197    φ.continuousOn.comp_continuous hc hmem
 198  set g : ↥(Metric.sphere (0 : EuclideanSpace ℝ (Fin 2)) 1) → ℝ :=
 199    fun x => (φ (f₀ x)) 0 with hg
 200  have hgc : Continuous g :=
 201    (EuclideanSpace.proj (0 : Fin 1)).continuous.comp hφc
 202  have hginj : Function.Injective g := by
 203    intro x y hxy
 204    apply hinj
 205    apply φ.injOn (hmem x) (hmem y)
 206    ext i
 207    obtain rfl : i = (0 : Fin 1) := Subsingleton.elim _ _
 208    exact hxy
 209  exact (no_continuous_injective_circle_to_real g hgc hginj).elim
 210
 211/-- No embedded circle in the 1-sphere has homologically nontrivial
 212complement: the embedding is surjective, so the complement is empty, and
 213singular homology of the empty space vanishes in degree `1`. -/
 214theorem not_detects_one : ¬ DetectsNontrivialLinking 1 := by
 215  rintro ⟨f, hemb, hH⟩
 216  apply hH
 217  -- the underlying self-map of the metric circle
 218  set f₀ : ↥(Metric.sphere (0 : EuclideanSpace ℝ (Fin 2)) 1) →
 219      ↥(Metric.sphere (0 : EuclideanSpace ℝ (Fin 2)) 1) :=
 220    fun x =>
 221      (show ULift.{0} ↥(Metric.sphere (0 : EuclideanSpace ℝ (Fin 2)) 1) from
 222        f (show ↥(TopCat.sphere.{0} 1) from ULift.up x)).down with hf₀
 223  have hc : Continuous f₀ := by
 224    exact continuous_uliftDown.comp (f.continuous.comp continuous_uliftUp)
 225  have hinj : Function.Injective f₀ := by
 226    intro x y h
 227    have h2 : f (ULift.up x) = f (ULift.up y) := ULift.down_injective h
 228    have h3 := hemb.injective h2
 229    exact congrArg ULift.down h3
 230  have hsurj := continuous_injective_circle_self_surjective f₀ hc hinj
 231  haveI hE : IsEmpty {x : TopCat.sphere.{0} 1 // x ∉ Set.range f} := by
 232    constructor
 233    rintro ⟨x, hx⟩
 234    obtain ⟨y, hy⟩ := hsurj
 235      (show ULift.{0} ↥(Metric.sphere (0 : EuclideanSpace ℝ (Fin 2)) 1) from x).down
 236    exact hx ⟨ULift.up y, ULift.down_injective hy⟩
 237  haveI hTD : TotallyDisconnectedSpace {x : TopCat.sphere.{0} 1 // x ∉ Set.range f} := by
 238    constructor
 239    intro t _ _ x hx
 240    exact (hE.false x).elim
 241  haveI : TotallyDisconnectedSpace
 242      ↥(TopCat.of {x : TopCat.sphere.{0} 1 // x ∉ Set.range f}) := hTD
 243  exact AlgebraicTopology.isZero_singularHomologyFunctor_of_totallyDisconnectedSpace
 244    (ModuleCat ℤ) 1 (ModuleCat.of ℤ ℤ)
 245    (TopCat.of {x : TopCat.sphere.{0} 1 // x ∉ Set.range f}) one_ne_zero
 246
 247end LinkingVanishingLowDim
 248end Foundation
 249end IndisputableMonolith
 250

source mirrored from github.com/jonwashburn/shape-of-logic