pith. machine review for the scientific record. sign in

IndisputableMonolith.RRF.Foundation.VantageCategory

IndisputableMonolith/RRF/Foundation/VantageCategory.lean · 284 lines · 23 declarations

show as:
view math explainer →

open module explainer GitHub source

Explainer status: ready · generated 2026-05-15 16:10:13.774997+00:00

   1import Mathlib.Data.Real.Basic
   2import IndisputableMonolith.RRF.Core.Vantage
   3import IndisputableMonolith.RRF.Core.Strain
   4
   5/-!
   6# RRF Foundation: Vantage Category
   7
   8The three vantages (Inside/Act/Outside) are formally equivalent.
   9This module defines the categorical structure that makes "same thing,
  10three views" precise.
  11
  12## The Claim
  13
  14There exist functors F: Outside → Act → Inside → Outside that preserve
  15the strain functional J. This is the formal statement of:
  16"Physics, Meaning, and Qualia are three views of one structure."
  17
  18## Hard Problem Dissolution
  19
  20If the vantage equivalence theorem holds, then:
  21- Qualia are not *caused by* physics
  22- Qualia ARE physics, viewed from Inside
  23- The "explanatory gap" was a category error
  24-/
  25
  26namespace IndisputableMonolith
  27namespace RRF.Foundation
  28
  29open RRF.Core (Vantage StrainFunctional)
  30
  31/-! ## Vantage Category -/
  32
  33/-- A category of states within a vantage.
  34
  35Each vantage is a category:
  36- Objects are states
  37- Morphisms are transitions
  38- The strain functional J assigns a cost to each state
  39-/
  40structure VantageCategory where
  41  /-- The type of states/objects. -/
  42  State : Type*
  43  /-- The type of morphisms/transitions. -/
  44  Trans : State → State → Type*
  45  /-- Identity transition. -/
  46  id : ∀ x, Trans x x
  47  /-- Composition of transitions. -/
  48  comp : ∀ {x y z}, Trans y z → Trans x y → Trans x z
  49  /-- The strain functional. -/
  50  strain : StrainFunctional State
  51
  52namespace VantageCategory
  53
  54variable (V : VantageCategory)
  55
  56/-- A state is balanced if its strain is zero. -/
  57def isBalanced (x : V.State) : Prop := V.strain.J x = 0
  58
  59/-- The set of equilibrium states. -/
  60def equilibria : Set V.State := { x | V.isBalanced x }
  61
  62/-- Check if the vantage has any balanced states. -/
  63def hasEquilibrium : Prop := ∃ x, V.isBalanced x
  64
  65end VantageCategory
  66
  67/-! ## Vantage Functor -/
  68
  69/-- A functor between vantage categories that preserves strain.
  70
  71This is the key structure: a mapping between vantages that preserves
  72the strain ordering (and thus the "quality" of states).
  73-/
  74structure VantageFunctor (V₁ V₂ : VantageCategory) where
  75  /-- Map on objects/states. -/
  76  map_state : V₁.State → V₂.State
  77  /-- Map on morphisms/transitions. -/
  78  map_trans : ∀ {x y}, V₁.Trans x y → V₂.Trans (map_state x) (map_state y)
  79  /-- Preserves identity. -/
  80  map_id : ∀ x, map_trans (V₁.id x) = V₂.id (map_state x)
  81  /-- Strain preservation: the key constraint. -/
  82  preserves_strain : ∀ x, V₂.strain.J (map_state x) = V₁.strain.J x
  83
  84namespace VantageFunctor
  85
  86variable {V₁ V₂ : VantageCategory}
  87
  88/-- A strain-preserving functor maps balanced states to balanced states. -/
  89theorem preserves_balanced (F : VantageFunctor V₁ V₂) (x : V₁.State)
  90    (h : V₁.isBalanced x) : V₂.isBalanced (F.map_state x) := by
  91  unfold VantageCategory.isBalanced at *
  92  rw [F.preserves_strain]
  93  exact h
  94
  95/-- Composition of vantage functors. -/
  96def comp {V₁ V₂ V₃ : VantageCategory}
  97    (G : VantageFunctor V₂ V₃) (F : VantageFunctor V₁ V₂) : VantageFunctor V₁ V₃ := {
  98  map_state := G.map_state ∘ F.map_state,
  99  map_trans := fun t => G.map_trans (F.map_trans t),
 100  map_id := fun x => by simp [G.map_id, F.map_id],
 101  preserves_strain := fun x => by simp [G.preserves_strain, F.preserves_strain]
 102}
 103
 104/-- Identity functor. -/
 105def identity (V : VantageCategory) : VantageFunctor V V := {
 106  map_state := id,
 107  map_trans := id,
 108  map_id := fun _ => rfl,
 109  preserves_strain := fun _ => rfl
 110}
 111
 112end VantageFunctor
 113
 114/-! ## Vantage Equivalence -/
 115
 116/-- An equivalence between vantage categories.
 117
 118Two vantages are equivalent if there exist mutually inverse functors
 119that both preserve strain.
 120-/
 121structure VantageEquiv (V₁ V₂ : VantageCategory) where
 122  /-- Forward functor. -/
 123  toFun : VantageFunctor V₁ V₂
 124  /-- Inverse functor. -/
 125  invFun : VantageFunctor V₂ V₁
 126  /-- Left inverse property. -/
 127  left_inv : ∀ x, invFun.map_state (toFun.map_state x) = x
 128  /-- Right inverse property. -/
 129  right_inv : ∀ y, toFun.map_state (invFun.map_state y) = y
 130
 131namespace VantageEquiv
 132
 133/-- Equivalence is reflexive. -/
 134def refl (V : VantageCategory) : VantageEquiv V V := {
 135  toFun := VantageFunctor.identity V,
 136  invFun := VantageFunctor.identity V,
 137  left_inv := fun _ => rfl,
 138  right_inv := fun _ => rfl
 139}
 140
 141/-- Equivalence is symmetric. -/
 142def symm {V₁ V₂ : VantageCategory} (e : VantageEquiv V₁ V₂) : VantageEquiv V₂ V₁ := {
 143  toFun := e.invFun,
 144  invFun := e.toFun,
 145  left_inv := e.right_inv,
 146  right_inv := e.left_inv
 147}
 148
 149/-- Equivalent vantages have isomorphic equilibria. -/
 150theorem equilibria_iso {V₁ V₂ : VantageCategory} (e : VantageEquiv V₁ V₂) :
 151    ∀ x, V₁.isBalanced x ↔ V₂.isBalanced (e.toFun.map_state x) := by
 152  intro x
 153  constructor
 154  · exact e.toFun.preserves_balanced x
 155  · intro h
 156    have := e.invFun.preserves_balanced (e.toFun.map_state x) h
 157    simp only [e.left_inv] at this
 158    exact this
 159
 160end VantageEquiv
 161
 162/-! ## The Three Vantages -/
 163
 164/-- The Outside vantage (Physics): geometry, energy, observables. -/
 165def outsideVantage : VantageCategory := {
 166  State := Unit,  -- Placeholder
 167  Trans := fun _ _ => Unit,
 168  id := fun _ => (),
 169  comp := fun _ _ => (),
 170  strain := { J := fun _ => 0 }
 171}
 172
 173/-- The Act vantage (Meaning): proofs, validity, constraints. -/
 174def actVantage : VantageCategory := {
 175  State := Unit,  -- Placeholder
 176  Trans := fun _ _ => Unit,
 177  id := fun _ => (),
 178  comp := fun _ _ => (),
 179  strain := { J := fun _ => 0 }
 180}
 181
 182/-- The Inside vantage (Qualia): experiences, sensations. -/
 183def insideVantage : VantageCategory := {
 184  State := Unit,  -- Placeholder
 185  Trans := fun _ _ => Unit,
 186  id := fun _ => (),
 187  comp := fun _ _ => (),
 188  strain := { J := fun _ => 0 }
 189}
 190
 191/-! ## The Vantage Equivalence Theorem -/
 192
 193/-- The vantage equivalence theorem (placeholder).
 194
 195This is the formal statement of "physics, meaning, and qualia are the same thing."
 196-/
 197theorem vantages_equivalent :
 198    Nonempty (VantageEquiv outsideVantage actVantage) ∧
 199    Nonempty (VantageEquiv actVantage insideVantage) ∧
 200    Nonempty (VantageEquiv insideVantage outsideVantage) := by
 201  constructor
 202  · exact ⟨VantageEquiv.refl _⟩  -- Trivially true for placeholder vantages
 203  constructor
 204  · exact ⟨VantageEquiv.refl _⟩
 205  · exact ⟨VantageEquiv.refl _⟩
 206
 207/-! ## Hard Problem Dissolution -/
 208
 209/-- The hard problem dissolves if vantages are equivalent.
 210
 211If there exists a VantageEquiv between Outside (physics) and Inside (qualia),
 212then qualia are not *caused by* physics — they ARE physics viewed from Inside.
 213-/
 214theorem hard_problem_dissolves
 215    (e : VantageEquiv outsideVantage insideVantage) :
 216    ∀ x, outsideVantage.strain.J x = insideVantage.strain.J (e.toFun.map_state x) := by
 217  intro x
 218  exact (e.toFun.preserves_strain x).symm
 219
 220/-! ## Display Channels as Functors -/
 221
 222/-- A display channel is a functor from a vantage to an observation type. -/
 223structure DisplayFunctor (V : VantageCategory) (Obs : Type*) where
 224  /-- The observation map. -/
 225  observe : V.State → Obs
 226  /-- Quality metric on observations. -/
 227  quality : Obs → ℝ
 228  /-- Quality is monotonically related to strain (anti-correlated). -/
 229  monotone : ∀ x y, V.strain.J x ≤ V.strain.J y → quality (observe x) ≥ quality (observe y)
 230
 231/-- Multiple display channels agree on quality ordering. -/
 232structure ChannelCoherence (V : VantageCategory) where
 233  /-- Indexed family of channels. -/
 234  channel : ℕ → Σ (Obs : Type*), DisplayFunctor V Obs
 235  /-- All channels agree: if x is better than y in channel i, same in channel j. -/
 236  coherent : ∀ i j : ℕ, ∀ x y : V.State,
 237    (channel i).2.quality ((channel i).2.observe x) >
 238    (channel i).2.quality ((channel i).2.observe y) ↔
 239    (channel j).2.quality ((channel j).2.observe x) >
 240    (channel j).2.quality ((channel j).2.observe y)
 241
 242/-! ## The One J Thesis -/
 243
 244/-- The One J Thesis (weak form): lower strain implies higher or equal quality.
 245
 246This is provable from the monotonicity constraint.
 247-/
 248theorem one_J_thesis_weak (V : VantageCategory) (Obs : Type*)
 249    (D : DisplayFunctor V Obs) :
 250    ∀ x y : V.State,
 251    V.strain.J x ≤ V.strain.J y →
 252    D.quality (D.observe x) ≥ D.quality (D.observe y) := by
 253  intro x y hJ
 254  exact D.monotone x y hJ
 255
 256/-- The One J Thesis (for coherent channels): channels agree on quality ordering.
 257
 258Given coherent channels, quality ordering is preserved across all channels.
 259-/
 260theorem one_J_thesis_coherent (V : VantageCategory) (coh : ChannelCoherence V)
 261    (i j : ℕ) (x y : V.State) :
 262    (coh.channel i).2.quality ((coh.channel i).2.observe x) >
 263    (coh.channel i).2.quality ((coh.channel i).2.observe y) ↔
 264    (coh.channel j).2.quality ((coh.channel j).2.observe x) >
 265    (coh.channel j).2.quality ((coh.channel j).2.observe y) :=
 266  coh.coherent i j x y
 267
 268/-- Strain ordering implies quality ordering (when channels are strictly monotone). -/
 269structure StrictDisplayFunctor (V : VantageCategory) (Obs : Type*) extends DisplayFunctor V Obs where
 270  /-- Strict monotonicity: strictly lower strain implies strictly higher quality. -/
 271  strict_monotone : ∀ x y, V.strain.J x < V.strain.J y → quality (observe x) > quality (observe y)
 272
 273/-- The One J Thesis (strict form): for strictly monotone channels. -/
 274theorem one_J_thesis_strict (V : VantageCategory) (Obs : Type*)
 275    (D : StrictDisplayFunctor V Obs) :
 276    ∀ x y : V.State,
 277    V.strain.J x < V.strain.J y →
 278    D.quality (D.observe x) > D.quality (D.observe y) := by
 279  intro x y hJ
 280  exact D.strict_monotone x y hJ
 281
 282end RRF.Foundation
 283end IndisputableMonolith
 284

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