Encyclopedia Foundation Foundation Singular Sphere Geometry
ARTICLE 4 claims 4 theorems
Foundation Singular Sphere Geometry
A machine-checked library builds the geometry of spheres from two poles and an open cover, then proves which homology groups vanish.
The sphere model
In mathematics, an n-dimensional sphere is the set of points at a fixed distance from a center in (n+1)-dimensional space. The circle is the 1-sphere, the surface of a ball is the 2-sphere, and so on. This construction in the Recognition Science framework's machine-checked library of formal theorems builds these spheres as topological spaces and proves their basic separation and contractibility properties. It defines the north and south poles, shows they are distinct, and proves the 0-sphere consists of exactly those two points.
The construction proceeds by an open cover: coverU is the sphere minus the north pole, coverV is the sphere minus the south pole. Both are open sets, and their intersection is the sphere with both poles removed. The construction proves this intersection is homeomorphic to a punctured hyperplane, and that each cover set is contractible. These are the standard ingredients for computing homology via the Mayer-Vietoris sequence.
The central theorem is homology vanishing: for any n-sphere, the k-th homology group is zero whenever k is not 0 or n. This is the formal statement that a sphere has exactly one "hole" in its top dimension and none elsewhere. For the 1-sphere, the construction also proves a specific non-vanishing result: the first homology group is not zero, confirming the circle has a single loop.
In Recognition Science, this sphere geometry is foundational. The framework models recognition events on spheres, and the homology computations provide the topological invariants used in later forcing arguments. The construction establishes these facts once, in a machine-checked form, so that subsequent results can rely on them without re-deriving the topology. The key payoff is that the sphere's homology is now a proved fact in the library, not an assumed one.
THEOREM sphere_homology_vanish · IndisputableMonolith/Foundation/SingularSphereGeometry.lean
/-- **Stage D vanishing.** `H_k(Sⁿ) = 0` for `1 ≤ k`, `k ≠ n`. -/
theorem sphere_homology_vanish :
∀ n k : ℕ, 1 ≤ k → k ≠ n → IsZero (Hgrp (Sph n) k) := by
intro n
induction n with
| zero =>
intro k hk _
exact isZero_sph0 (by omega)
| succ n ih =>
intro k hk hkn
match k, hk with
| 1, _ =>
have hn : n ≠ 0 := by omega
obtain ⟨m, rfl⟩ := Nat.exists_eq_succ_of_ne_zero hn
exact isZero_h1_of_contractible (isOpen_coverU (m + 2))
(isOpen_coverV (m + 2)) (coverU_union_coverV (m + 2))
| (k + 2), _ =>
exact (ih (k + 1) (by omega) (by omega)).of_iso (suspensionIso n k)
THEOREM h1_s1_ne_zero · IndisputableMonolith/Foundation/SingularSphereGeometry.lean
/-- **`H₁(S¹) ≠ 0`.** If it vanished, the Mayer-Vietoris connecting map
out of it would be zero, and exactness would kill the point-difference
class, contradicting its nonzero pairing. -/
theorem h1_s1_ne_zero : ¬ IsZero (Hgrp (Sph 1) 1) := by
intro hZ
have hδ : mvδ (isOpen_coverU 1) (isOpen_coverV 1)
(coverU_union_coverV 1) 0 = 0 :=
hZ.eq_of_src _ _
have hex := mv_exact₁ (isOpen_coverU 1) (isOpen_coverV 1)
(coverU_union_coverV 1) 0
rw [ShortComplex.moduleCat_exact_iff] at hex
have hker : mvPair (coverU 1) (coverV 1) 0 (diffClass (1 : ℤ)) = 0 := by
rw [← ModuleCat.comp_apply, diffClass_mvPair, zeroApp]
obtain ⟨w, hw⟩ := hex (diffClass (1 : ℤ)) hker
have hw' : mvδ (isOpen_coverU 1) (isOpen_coverV 1)
(coverU_union_coverV 1) 0 w = diffClass (1 : ℤ) := hw
rw [hδ, zeroApp] at hw'
have h1 : augH Wc arcA isClopen_arcA (diffClass (1 : ℤ)) = (1 : ℤ) := by
rw [← ModuleCat.comp_apply, diffClass_pairing, ModuleCat.id_apply]
rw [← hw', map_zero] at h1
exact one_ne_zero h1.symm
THEOREM sph0_eq_pole · IndisputableMonolith/Foundation/SingularSphereGeometry.lean
/-- A point of `S⁰` is one of the two poles. -/
lemma sph0_eq_pole (x : ↥(Sph 0)) : x = northP 0 ∨ x = southP 0 := by
have hx : ‖amb x‖ = 1 := norm_amb x
have hsq : amb x 0 ^ 2 = 1 := by
have hs := EuclideanSpace.norm_sq_eq (amb x)
rw [hx, Fin.sum_univ_one, Real.norm_eq_abs, sq_abs] at hs
linarith [hs]
have habs : |amb x 0| = 1 := abs_eq_one_of_sq_eq_one hsq
have hlast : (0 : Fin 1) = Fin.last 0 := by decide
rcases (abs_eq zero_le_one).mp habs with h | h
· left
apply amb_injective
apply esp0_ext
rw [h]
show (1 : ℝ) = northV 0 0
rw [northV, EuclideanSpace.single_apply, if_pos hlast]
· right
apply amb_injective
rw [amb_southP 0]
apply esp0_ext
rw [h]
show (-1 : ℝ) = -(northV 0 0)
rw [northV, EuclideanSpace.single_apply, if_pos hlast]
THEOREM interHomeoPunctured · IndisputableMonolith/Foundation/SingularSphereGeometry.lean
/-- Stereographic projection at the north pole restricts to a homeomorphism
from the doubly punctured sphere onto the punctured hyperplane (the south
pole goes to the origin). -/
noncomputable def interHomeoPunctured (n : ℕ) :
↥(coverU n ∩ coverV n) ≃ₜ ↥(({0}ᶜ : Set (Hyp n))) := by
have hnv : ‖northV n‖ = 1 := norm_northV n
have hsource : ∀ y : ↥(Sph n), y ≠ northP n →
y ∈ (stereographic hnv).source := by
intro y hy
show y ∈ ({(⟨northV n, _⟩ : sphere (0 : Esp n) 1)}ᶜ : Set _)
exact hy
have hst_south : stereographic hnv (southP n) = 0 :=
stereographic_apply_neg (northP n)
refine Homeomorph.mk (Equiv.mk ?_ ?_ ?_ ?_) ?_ ?_
· -- forward map
refine fun x => ⟨stereographic hnv x.1, ?_⟩
obtain ⟨hS, hN⟩ := (mem_inter_iff n x.1).mp x.2
intro h0
apply hS
refine (stereographic hnv).injOn (hsource x.1 hN)
(hsource (southP n) (fun h => northP_ne_southP n h.symm)) ?_
rw [hst_south]
exact h0
· -- inverse map
refine fun y => ⟨(stereographic hnv).symm y.1, ?_⟩
have hmem : (stereographic hnv).symm y.1 ∈ (stereographic hnv).source :=
(stereographic hnv).map_target (by
rw [stereographic_target]; exact Set.mem_univ _)
refine (mem_inter_iff n _).mpr ⟨?_, hmem⟩
intro hS
apply y.2
have := (stereographic hnv).right_inv (x := y.1) (by
rw [stereographic_target]; exact Set.mem_univ _)
rw [← this, hS, hst_south]
rfl
· -- left inverse
intro x
obtain ⟨_, hN⟩ := (mem_inter_iff n x.1).mp x.2
exact Subtype.ext (Subtype.ext (congrArg Subtype.val
((stereographic hnv).left_inv (hsource x.1 hN))))
· -- right inverse
intro y
exact Subtype.ext ((stereographic hnv).right_inv (x := y.1) (by
rw [stereographic_target]; exact Set.mem_univ _))
· -- continuity, forward
refine Continuous.subtype_mk ?_ _
refine ContinuousOn.comp_continuous
(stereographic hnv).continuousOn continuous_subtype_val ?_
intro x
exact hsource x.1 ((mem_inter_iff n x.1).mp x.2).2
· -- continuity, inverse
refine Continuous.subtype_mk ?_ _
refine ContinuousOn.comp_continuous
(stereographic hnv).continuousOn_symm continuous_subtype_val ?_
intro y
rw [stereographic_target]
exact Set.mem_univ _
What this page does not claim
The construction does not prove that physical space is a sphere. The construction does not derive the dimension of space from the sphere's homology. The construction does not define recognition events; it only provides the sphere topology they are modeled on.
Verify this page
Every tagged claim above names its theorem. To check one yourself rather than trust this page, elaborate the source module with Lean 4 and audit its axiom basis:
$ lake env lean IndisputableMonolith/Foundation/SingularSphereGeometry.lean
expected axiom basis: [propext, Classical.choice, Quot.sound] (the Lean kernel's standard three; no RS-specific axioms)
A page whose claims cannot be reproduced this way does not ship. In production, every anchor links to the exact declaration in the public source release, and this block carries the build receipt for the page itself.
Derived articles
This page is generated by a question-recursion engine: the questions its answers raise become the next pages. The current agenda, with open targets marked red:
- How does the sphere's homology connect to the forcing chain that derives spatial dimensions?
- What role does the 1-sphere's non-vanishing first homology play in the recognition cycle?
- How are the poles and open cover used to model recognition events in the framework?
MACHINE LAYER · GROUNDED CLAIM TABLE · CLICK TO EXPAND
THEOREM sphere_homology_vanish · IndisputableMonolith/Foundation/SingularSphereGeometry.lean
/-- **Stage D vanishing.** `H_k(Sⁿ) = 0` for `1 ≤ k`, `k ≠ n`. -/ theorem sphere_homology_vanish : ∀ n k : ℕ, 1 ≤ k → k ≠ n → IsZero (Hgrp (Sph n) k) := by intro n induction n with | zero => intro k hk _ exact isZero_sph0 (by omega) | succ n ih => intro k hk hkn match k, hk with | 1, _ => have hn : n ≠ 0 := by omega obtain ⟨m, rfl⟩ := Nat.exists_eq_succ_of_ne_zero hn exact isZero_h1_of_contractible (isOpen_coverU (m + 2)) (isOpen_coverV (m + 2)) (coverU_union_coverV (m + 2)) | (k + 2), _ => exact (ih (k + 1) (by omega) (by omega)).of_iso (suspensionIso n k)for any n-sphere, the k-th homology group is zero whenever k is not 0 or n sphere_homology_vanish · IndisputableMonolith/Foundation/SingularSphereGeometry.leanTHEOREM h1_s1_ne_zero · IndisputableMonolith/Foundation/SingularSphereGeometry.lean
/-- **`H₁(S¹) ≠ 0`.** If it vanished, the Mayer-Vietoris connecting map out of it would be zero, and exactness would kill the point-difference class, contradicting its nonzero pairing. -/ theorem h1_s1_ne_zero : ¬ IsZero (Hgrp (Sph 1) 1) := by intro hZ have hδ : mvδ (isOpen_coverU 1) (isOpen_coverV 1) (coverU_union_coverV 1) 0 = 0 := hZ.eq_of_src _ _ have hex := mv_exact₁ (isOpen_coverU 1) (isOpen_coverV 1) (coverU_union_coverV 1) 0 rw [ShortComplex.moduleCat_exact_iff] at hex have hker : mvPair (coverU 1) (coverV 1) 0 (diffClass (1 : ℤ)) = 0 := by rw [← ModuleCat.comp_apply, diffClass_mvPair, zeroApp] obtain ⟨w, hw⟩ := hex (diffClass (1 : ℤ)) hker have hw' : mvδ (isOpen_coverU 1) (isOpen_coverV 1) (coverU_union_coverV 1) 0 w = diffClass (1 : ℤ) := hw rw [hδ, zeroApp] at hw' have h1 : augH Wc arcA isClopen_arcA (diffClass (1 : ℤ)) = (1 : ℤ) := by rw [← ModuleCat.comp_apply, diffClass_pairing, ModuleCat.id_apply] rw [← hw', map_zero] at h1 exact one_ne_zero h1.symmthe first homology group of the 1-sphere is not zero h1_s1_ne_zero · IndisputableMonolith/Foundation/SingularSphereGeometry.leanTHEOREM sph0_eq_pole · IndisputableMonolith/Foundation/SingularSphereGeometry.lean
/-- A point of `S⁰` is one of the two poles. -/ lemma sph0_eq_pole (x : ↥(Sph 0)) : x = northP 0 ∨ x = southP 0 := by have hx : ‖amb x‖ = 1 := norm_amb x have hsq : amb x 0 ^ 2 = 1 := by have hs := EuclideanSpace.norm_sq_eq (amb x) rw [hx, Fin.sum_univ_one, Real.norm_eq_abs, sq_abs] at hs linarith [hs] have habs : |amb x 0| = 1 := abs_eq_one_of_sq_eq_one hsq have hlast : (0 : Fin 1) = Fin.last 0 := by decide rcases (abs_eq zero_le_one).mp habs with h | h · left apply amb_injective apply esp0_ext rw [h] show (1 : ℝ) = northV 0 0 rw [northV, EuclideanSpace.single_apply, if_pos hlast] · right apply amb_injective rw [amb_southP 0] apply esp0_ext rw [h] show (-1 : ℝ) = -(northV 0 0) rw [northV, EuclideanSpace.single_apply, if_pos hlast]the 0-sphere consists of exactly those two points sph0_eq_pole · IndisputableMonolith/Foundation/SingularSphereGeometry.leanTHEOREM interHomeoPunctured · IndisputableMonolith/Foundation/SingularSphereGeometry.lean
/-- Stereographic projection at the north pole restricts to a homeomorphism from the doubly punctured sphere onto the punctured hyperplane (the south pole goes to the origin). -/ noncomputable def interHomeoPunctured (n : ℕ) : ↥(coverU n ∩ coverV n) ≃ₜ ↥(({0}ᶜ : Set (Hyp n))) := by have hnv : ‖northV n‖ = 1 := norm_northV n have hsource : ∀ y : ↥(Sph n), y ≠ northP n → y ∈ (stereographic hnv).source := by intro y hy show y ∈ ({(⟨northV n, _⟩ : sphere (0 : Esp n) 1)}ᶜ : Set _) exact hy have hst_south : stereographic hnv (southP n) = 0 := stereographic_apply_neg (northP n) refine Homeomorph.mk (Equiv.mk ?_ ?_ ?_ ?_) ?_ ?_ · -- forward map refine fun x => ⟨stereographic hnv x.1, ?_⟩ obtain ⟨hS, hN⟩ := (mem_inter_iff n x.1).mp x.2 intro h0 apply hS refine (stereographic hnv).injOn (hsource x.1 hN) (hsource (southP n) (fun h => northP_ne_southP n h.symm)) ?_ rw [hst_south] exact h0 · -- inverse map refine fun y => ⟨(stereographic hnv).symm y.1, ?_⟩ have hmem : (stereographic hnv).symm y.1 ∈ (stereographic hnv).source := (stereographic hnv).map_target (by rw [stereographic_target]; exact Set.mem_univ _) refine (mem_inter_iff n _).mpr ⟨?_, hmem⟩ intro hS apply y.2 have := (stereographic hnv).right_inv (x := y.1) (by rw [stereographic_target]; exact Set.mem_univ _) rw [← this, hS, hst_south] rfl · -- left inverse intro x obtain ⟨_, hN⟩ := (mem_inter_iff n x.1).mp x.2 exact Subtype.ext (Subtype.ext (congrArg Subtype.val ((stereographic hnv).left_inv (hsource x.1 hN)))) · -- right inverse intro y exact Subtype.ext ((stereographic hnv).right_inv (x := y.1) (by rw [stereographic_target]; exact Set.mem_univ _)) · -- continuity, forward refine Continuous.subtype_mk ?_ _ refine ContinuousOn.comp_continuous (stereographic hnv).continuousOn continuous_subtype_val ?_ intro x exact hsource x.1 ((mem_inter_iff n x.1).mp x.2).2 · -- continuity, inverse refine Continuous.subtype_mk ?_ _ refine ContinuousOn.comp_continuous (stereographic hnv).continuousOn_symm continuous_subtype_val ?_ intro y rw [stereographic_target] exact Set.mem_univ _the intersection of the two cover sets is homeomorphic to a punctured hyperplane interHomeoPunctured · IndisputableMonolith/Foundation/SingularSphereGeometry.lean