Pith. sign in

IndisputableMonolith.Verification.Exclusivity.RCLDerivation

IndisputableMonolith/Verification/Exclusivity/RCLDerivation.lean · 140 lines · 7 declarations

show as:
view math explainer →

open module explainer GitHub source

Explainer status: pending

   1/-
   2  RCLDerivation.lean — Bridge B2 Scaffold
   3
   4  This file now contains the honest algebraic adapter for Bridge B2.
   5  The raw associativity-only scaffold was inconsistent with the proved
   6  boundary law `f(a,0) = 2a`, so the classification is stated in the
   7  factorization-gate form used by the forcing chain.
   8
   9  What is PROVED (zero sorry):
  10  - The d'Alembert composition rule satisfies the boundary conditions.
  11  - Boundary condition 1: f(0,0) = 0  (from J(1)=0).
  12  - Boundary condition 2: f(a,0) = 2a (from y=1 substitution).
  13  - Associativity of `f` itself contradicts the boundary law.
  14  - Under the factorization gate, the combiner is forced to the RCL polynomial.
  15
  16  Still open in the paper sense:
  17  - derive the factorization gate itself directly from multiplicative
  18    recognition structure, without packaging right-affine response as a
  19    separate hypothesis.
  20
  21  Paper §8.2: Bridge B2.
  22-/
  23
  24import Mathlib
  25import IndisputableMonolith.Foundation.DAlembert.FactorizationForcing
  26import IndisputableMonolith.Verification.Exclusivity.Framework
  27
  28namespace IndisputableMonolith
  29namespace Verification
  30namespace Exclusivity
  31namespace RCLDerivation
  32
  33set_option autoImplicit false
  34
  35open IndisputableMonolith.Foundation.DAlembert.FactorizationForcing
  36
  37/-- A composition rule: a symmetric binary function on ℝ specifying how
  38    compound cost values decompose:  J(xy) + J(x/y) = f(J(x), J(y)). -/
  39structure CompositionRule where
  40  f         : ℝ → ℝ → ℝ
  41  symmetric : ∀ a b, f a b = f b a
  42
  43/-- The d'Alembert composition rule: f(a,b) = 2(a+1)(b+1) - 2.
  44    Equivalently: f(a,b) = 2ab + 2a + 2b. -/
  45noncomputable def dAlembertRule : CompositionRule where
  46  f         := fun a b => 2 * (a + 1) * (b + 1) - 2
  47  symmetric := by intro a b; ring
  48
  49/-- Boundary condition 1 (proved): f(0,0) = 0.
  50    Derivation: set x = y = 1 in J(xy)+J(x/y) = f(J(x),J(y)).
  51    J(1)+J(1) = f(J(1),J(1)) = f(0,0), so f(0,0) = 0. -/
  52theorem composition_rule_f00_eq_zero
  53    (f : CompositionRule) (J : ℝ → ℝ)
  54    (hJ0   : J 1 = 0)
  55    (hComp : ∀ x y, 0 < x → 0 < y →
  56               J (x * y) + J (x / y) = f.f (J x) (J y)) :
  57    f.f 0 0 = 0 := by
  58  have h := hComp 1 1 one_pos one_pos
  59  simp [hJ0] at h
  60  linarith
  61
  62/-- Boundary condition 2 (proved): f(a,0) = 2a.
  63    Derivation: set y = 1.  J(x)+J(x) = f(J(x),0), so f(a,0) = 2a. -/
  64theorem composition_rule_f_at_zero
  65    (f : CompositionRule) (J : ℝ → ℝ)
  66    (hJ0   : J 1 = 0)
  67    (hComp : ∀ x y, 0 < x → 0 < y →
  68               J (x * y) + J (x / y) = f.f (J x) (J y))
  69    (x : ℝ) (hx : 0 < x) :
  70    f.f (J x) 0 = 2 * J x := by
  71  have h := hComp x 1 hx one_pos
  72  simp [hJ0, mul_one, div_one] at h
  73  linarith
  74
  75/-- The d'Alembert rule satisfies both boundary conditions. -/
  76theorem dAlembert_satisfies_boundaries :
  77    dAlembertRule.f 0 0 = 0 ∧ ∀ a, dAlembertRule.f a 0 = 2 * a :=
  78  ⟨by simp [dAlembertRule], by intro a; simp [dAlembertRule]; ring⟩
  79
  80/-- The original associativity-only scaffold is inconsistent with the proved
  81    boundary law `f(a,0) = 2a`.
  82
  83    Indeed, symmetry gives `f(0,1) = 2` and `f(0,2) = 4`, while associativity
  84    at `(0,0,1)` would force `f(0,1) = f(0,2)`. So the old Open Problem B
  85    statement was malformed: the actual closure step cannot be associativity
  86    of `f` itself. -/
  87theorem associativity_contradicts_boundary
  88    (f        : CompositionRule)
  89    (h00      : f.f 0 0 = 0)
  90    (hbdry    : ∀ a, f.f a 0 = 2 * a)
  91    (h_assoc  : ∀ a b c, f.f (f.f a b) c = f.f a (f.f b c)) :
  92    False := by
  93  have h01 : f.f 0 1 = 2 := by
  94    calc
  95      f.f 0 1 = f.f 1 0 := f.symmetric 0 1
  96      _ = 2 * 1 := hbdry 1
  97      _ = 2 := by norm_num
  98  have h02 : f.f 0 2 = 4 := by
  99    calc
 100      f.f 0 2 = f.f 2 0 := f.symmetric 0 2
 101      _ = 2 * 2 := hbdry 2
 102      _ = 4 := by norm_num
 103  have h_assoc001 := h_assoc 0 0 1
 104  rw [h00, h01] at h_assoc001
 105  linarith
 106
 107/-- Bridge B2 classification in the honest form used by the forcing chain.
 108
 109    The RS algebraic closure does not use associativity of `f` itself.
 110    What is actually needed, and already proved elsewhere in the forcing
 111    chain, is the factorization gate:
 112
 113    - symmetry,
 114    - right-affine response in the second argument,
 115    - the zero-boundary law `f(a,0) = 2a`,
 116    - and the canonical normalization `f(1,1) = 6`.
 117
 118    Under those hypotheses the combiner is forced exactly to the RCL
 119    polynomial. -/
 120theorem composition_rule_classification
 121    (f        : CompositionRule)
 122    (hbdry    : ∀ a, f.f a 0 = 2 * a)
 123    (hAffine  : ∀ a, ∃ α β, ∀ b, f.f a b = α * b + β)
 124    (h11      : f.f 1 1 = 6) :
 125    ∀ a b, f.f a b = 2 * (a + 1) * (b + 1) - 2 := by
 126  let hGate : FactorizationAssociativityGate f.f :=
 127    { symmetric := f.symmetric
 128      rightAffine := hAffine
 129      zeroBoundary := hbdry
 130      unitDiagonal := h11 }
 131  intro a b
 132  calc
 133    f.f a b = 2 * a * b + 2 * a + 2 * b := gate_forces_rcl f.f hGate a b
 134    _ = 2 * (a + 1) * (b + 1) - 2 := by ring
 135
 136end RCLDerivation
 137end Exclusivity
 138end Verification
 139end IndisputableMonolith
 140

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