pith. sign in

IndisputableMonolith.RecogGeom.Dimension

IndisputableMonolith/RecogGeom/Dimension.lean · 179 lines · 9 declarations

show as:
view math explainer →

open module explainer GitHub source

Explainer status: ready · generated 2026-05-13 18:33:08.432247+00:00

   1import Mathlib
   2import IndisputableMonolith.RecogGeom.Core
   3import IndisputableMonolith.RecogGeom.Recognizer
   4import IndisputableMonolith.RecogGeom.Indistinguishable
   5import IndisputableMonolith.RecogGeom.Quotient
   6import IndisputableMonolith.RecogGeom.Composition
   7
   8/-!
   9# Recognition Geometry: Dimension Theory
  10
  11This module develops the theory of **recognition dimension** — the key connection
  12between recognizer structure and geometric dimension.
  13
  14## The Central Idea
  15
  16In classical geometry, dimension is defined topologically or algebraically.
  17In Recognition Geometry, dimension has a direct operational meaning:
  18
  19> **The dimension of a recognition geometry is the minimum number of
  20> independent recognizers needed to distinguish all configurations.**
  21
  22This explains WHY spacetime is 4-dimensional: we need exactly 4 independent
  23measurements (x, y, z, t) to locate an event.
  24
  25## Physical Significance
  26
  27- Spacetime dimension = 4 because 4 recognizers (coordinates) separate events
  28- Quantum dimension = number of independent observables
  29- Information dimension = recognizer count for complete description
  30
  31-/
  32
  33namespace IndisputableMonolith
  34namespace RecogGeom
  35
  36variable {C E : Type*} [ConfigSpace C] [EventSpace E]
  37
  38/-! ## Separating Recognizers -/
  39
  40/-- A recognizer **separates** a configuration space if it distinguishes
  41    all configurations (i.e., is injective on C). -/
  42def IsSeparating (r : Recognizer C E) : Prop :=
  43  Function.Injective r.R
  44
  45/-- A recognizer separates iff no two distinct configs are indistinguishable. -/
  46theorem isSeparating_iff (r : Recognizer C E) :
  47    IsSeparating r ↔ ∀ c₁ c₂, Indistinguishable r c₁ c₂ → c₁ = c₂ := by
  48  rfl
  49
  50/-- If a recognizer separates, the quotient is isomorphic to C. -/
  51theorem separating_quotient_bijective (r : Recognizer C E) (h : IsSeparating r) :
  52    Function.Bijective (recognitionQuotientMk r) := by
  53  constructor
  54  · -- Injective
  55    intro c₁ c₂ heq
  56    have hindist : Indistinguishable r c₁ c₂ := (quotientMk_eq_iff r).mp heq
  57    exact h hindist
  58  · -- Surjective
  59    intro q
  60    obtain ⟨c, hc⟩ := Quotient.exists_rep q
  61    use c
  62    simp only [recognitionQuotientMk]
  63    exact hc
  64
  65/-- If a recognizer separates, every resolution cell is a singleton. -/
  66theorem separating_singleton_cells (r : Recognizer C E) (h : IsSeparating r) (c : C) :
  67    ResolutionCell r c = {c} := by
  68  ext x
  69  simp only [ResolutionCell, Set.mem_setOf_eq, Set.mem_singleton_iff]
  70  constructor
  71  · intro hx; exact h hx
  72  · intro hx; subst hx; rfl
  73
  74/-! ## Two-Recognizer Separation -/
  75
  76/-- Two recognizers together separate if their composite distinguishes all configs. -/
  77def PairSeparates {E₁ E₂ : Type*} [EventSpace E₁] [EventSpace E₂]
  78    (r₁ : Recognizer C E₁) (r₂ : Recognizer C E₂) : Prop :=
  79  IsSeparating (r₁ ⊗ r₂)
  80
  81/-- Pair separation is equivalent to: same (e₁, e₂) implies same config. -/
  82theorem pairSeparates_iff {E₁ E₂ : Type*} [EventSpace E₁] [EventSpace E₂]
  83    (r₁ : Recognizer C E₁) (r₂ : Recognizer C E₂) :
  84    PairSeparates r₁ r₂ ↔
  85      ∀ c₁ c₂, (r₁.R c₁ = r₁.R c₂ ∧ r₂.R c₁ = r₂.R c₂) → c₁ = c₂ := by
  86  simp only [PairSeparates, IsSeparating, Function.Injective, composite_R_eq,
  87             Prod.mk.injEq]
  88
  89/-! ## Independence -/
  90
  91/-- Two recognizers are **independent** if each provides information the other doesn't.
  92    This means: ∃ configs distinguished by r₁ but not r₂, and vice versa. -/
  93def IndependentRecognizers {E₁ E₂ : Type*} [EventSpace E₁] [EventSpace E₂]
  94    (r₁ : Recognizer C E₁) (r₂ : Recognizer C E₂) : Prop :=
  95  (∃ c₁ c₂, r₁.R c₁ ≠ r₁.R c₂ ∧ r₂.R c₁ = r₂.R c₂) ∧
  96  (∃ c₁ c₂, r₁.R c₁ = r₁.R c₂ ∧ r₂.R c₁ ≠ r₂.R c₂)
  97
  98/-- If recognizers are independent, their composite strictly refines both. -/
  99theorem independent_strict_refines {E₁ E₂ : Type*} [EventSpace E₁] [EventSpace E₂]
 100    (r₁ : Recognizer C E₁) (r₂ : Recognizer C E₂)
 101    (h : IndependentRecognizers r₁ r₂) :
 102    ¬IsSeparating r₁ ∧ ¬IsSeparating r₂ →
 103      (∃ c₁ c₂, r₁.R c₁ = r₁.R c₂ ∧ (r₁ ⊗ r₂).R c₁ ≠ (r₁ ⊗ r₂).R c₂) := by
 104  intro ⟨_, _⟩
 105  obtain ⟨⟨_, _, _, _⟩, ⟨c₃, c₄, heq, hne⟩⟩ := h
 106  use c₃, c₄, heq
 107  simp only [composite_R_eq]
 108  intro hcontra
 109  rw [Prod.mk.injEq] at hcontra
 110  exact hne hcontra.2
 111
 112/-! ## Physical Interpretation: Spacetime Dimension -/
 113
 114/-- **WHY SPACETIME IS 4-DIMENSIONAL**
 115
 116    In Recognition Geometry, dimension = minimum separating family size.
 117
 118    Spacetime is 4D because exactly 4 independent recognizers are needed:
 119
 120    • x-recognizer: distinguishes left from right
 121    • y-recognizer: distinguishes front from back
 122    • z-recognizer: distinguishes up from down
 123    • t-recognizer: distinguishes before from after
 124
 125    No subset of 3 can separate all events (e.g., 3 spatial coords can't
 126    distinguish events at different times).
 127
 128    This is not arbitrary — it's the recognition dimension of physical space.
 129
 130    The 4D structure emerges from the structure of physical recognizers,
 131    not from some pre-existing geometric fact. -/
 132/-!
 133Spacetime is 4-dimensional because 4 independent recognizers are needed (documentation / TODO).
 134-/
 135
 136/-- **QUANTUM DIMENSION**
 137
 138    In quantum mechanics, the dimension of Hilbert space equals the number
 139    of independent observables (recognizers) needed to specify a state.
 140
 141    • Spin-1/2: 2 independent observables (e.g., Sz, Sx) → 2D Bloch sphere
 142    • Harmonic oscillator: infinitely many (Fock states) → infinite-dimensional
 143
 144    Recognition dimension = quantum dimension = Hilbert space dimension. -/
 145/-!
 146Quantum dimension equals recognition dimension (documentation / TODO).
 147-/
 148
 149/-! ## Module Status -/
 150
 151def dimension_status : String :=
 152  "╔════════════════════════════════════════════════════════════════╗\n" ++
 153  "║              RECOGNITION DIMENSION THEORY                      ║\n" ++
 154  "╠════════════════════════════════════════════════════════════════╣\n" ++
 155  "║                                                                ║\n" ++
 156  "║  DEFINITIONS                                                   ║\n" ++
 157  "║    ✓ IsSeparating: recognizer distinguishes all configs        ║\n" ++
 158  "║    ✓ PairSeparates: two recognizers together separate          ║\n" ++
 159  "║    ✓ IndependentRecognizers: non-redundant information         ║\n" ++
 160  "║                                                                ║\n" ++
 161  "║  THEOREMS                                                      ║\n" ++
 162  "║    ✓ isSeparating_iff: characterization                        ║\n" ++
 163  "║    ✓ separating_quotient_bijective: quotient ≅ C               ║\n" ++
 164  "║    ✓ separating_singleton_cells: cells are singletons          ║\n" ++
 165  "║    ✓ pairSeparates_iff: characterization                       ║\n" ++
 166  "║    ✓ independent_strict_refines: composition strictly refines  ║\n" ++
 167  "║                                                                ║\n" ++
 168  "║  PHYSICAL INTERPRETATION                                       ║\n" ++
 169  "║    Spacetime dimension = 4 independent coordinate recognizers  ║\n" ++
 170  "║    Quantum dimension = independent observable count            ║\n" ++
 171  "║    Recognition dimension explains geometric dimension          ║\n" ++
 172  "║                                                                ║\n" ++
 173  "╚════════════════════════════════════════════════════════════════╝\n"
 174
 175#eval dimension_status
 176
 177end RecogGeom
 178end IndisputableMonolith
 179

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