pith. machine review for the scientific record. sign in

IndisputableMonolith.PhiSupport.Alternatives

IndisputableMonolith/PhiSupport/Alternatives.lean · 210 lines · 6 declarations

show as:
view math explainer →

open module explainer GitHub source

Explainer status: pending

   1import Mathlib
   2import IndisputableMonolith.Constants
   3import IndisputableMonolith.RecogSpec.PhiSelectionCore
   4
   5namespace IndisputableMonolith
   6namespace PhiSupport
   7namespace Alternatives
   8
   9/-!
  10# Alternative Scaling Constants Fail Selection
  11
  12This module explicitly proves that common mathematical constants (e, π, √2, √3, √5)
  13do NOT satisfy the PhiSelection criterion, demonstrating that φ is uniquely determined
  14by the mathematical structure rather than being an arbitrary choice.
  15
  16This addresses the "numerology objection" by showing that φ is the ONLY positive real
  17satisfying the selection equation x² = x + 1.
  18-/
  19
  20/-- √2 fails the PhiSelection criterion.
  21    (√2)² = 2 but √2 + 1 ≈ 2.414, so (√2)² ≠ √2 + 1. -/
  22theorem sqrt2_fails_selection : ¬IndisputableMonolith.RecogSpec.PhiSelection (Real.sqrt 2) := by
  23  intro h
  24  have heq : (Real.sqrt 2) ^ 2 = Real.sqrt 2 + 1 := h.left
  25  -- (√2)² = 2 exactly
  26  have sqrt2_sq : (Real.sqrt 2) ^ 2 = 2 := Real.sq_sqrt (by norm_num : (0 : ℝ) ≤ 2)
  27  -- √2 > 1 (since 2 > 1)
  28  have sqrt2_gt_one : 1 < Real.sqrt 2 := by
  29    rw [← Real.sqrt_one]
  30    exact Real.sqrt_lt_sqrt (by norm_num) (by norm_num : (1 : ℝ) < 2)
  31  -- So √2 + 1 > 2
  32  have h2lt : (2 : ℝ) < Real.sqrt 2 + 1 := by linarith [sqrt2_gt_one]
  33  -- Contradiction: 2 = (√2)² = √2 + 1 > 2
  34  have : (2 : ℝ) < 2 := by
  35    calc (2 : ℝ)
  36        < Real.sqrt 2 + 1 := h2lt
  37        _ = (Real.sqrt 2) ^ 2 := heq.symm
  38        _ = 2 := sqrt2_sq
  39  linarith
  40
  41/-- √3 fails the PhiSelection criterion.
  42    (√3)² = 3 but √3 + 1 ≈ 2.732, so (√3)² ≠ √3 + 1. -/
  43theorem sqrt3_fails_selection : ¬IndisputableMonolith.RecogSpec.PhiSelection (Real.sqrt 3) := by
  44  intro h
  45  have heq : (Real.sqrt 3) ^ 2 = Real.sqrt 3 + 1 := h.left
  46  have sqrt3_sq : (Real.sqrt 3) ^ 2 = 3 := Real.sq_sqrt (by norm_num : (0 : ℝ) ≤ 3)
  47  -- √3 < 2 (since 3 < 4 = 2²)
  48  have sqrt3_lt_two : Real.sqrt 3 < 2 := by
  49    have h4 : Real.sqrt 4 = 2 := by norm_num
  50    rw [← h4]
  51    exact Real.sqrt_lt_sqrt (by norm_num) (by norm_num : (3 : ℝ) < 4)
  52  -- So √3 + 1 < 3
  53  have h3gt : Real.sqrt 3 + 1 < 3 := by linarith [sqrt3_lt_two]
  54  -- Contradiction: 3 = (√3)² = √3 + 1 < 3
  55  have : (3 : ℝ) < 3 := by
  56    calc (3 : ℝ)
  57        = (Real.sqrt 3) ^ 2 := sqrt3_sq.symm
  58        _ = Real.sqrt 3 + 1 := heq
  59        _ < 3 := h3gt
  60  linarith
  61
  62/-- √5 fails the PhiSelection criterion, despite being related to φ.
  63    (√5)² = 5 but √5 + 1 ≈ 3.236, so (√5)² ≠ √5 + 1.
  64    Note: φ = (1 + √5)/2, but √5 itself is not the solution. -/
  65theorem sqrt5_fails_selection : ¬IndisputableMonolith.RecogSpec.PhiSelection (Real.sqrt 5) := by
  66  intro h
  67  have heq : (Real.sqrt 5) ^ 2 = Real.sqrt 5 + 1 := h.left
  68  have sqrt5_sq : (Real.sqrt 5) ^ 2 = 5 := Real.sq_sqrt (by norm_num : (0 : ℝ) ≤ 5)
  69  -- √5 < 3 (since 5 < 9 = 3²)
  70  have sqrt5_lt_three : Real.sqrt 5 < 3 := by
  71    have h9 : Real.sqrt 9 = 3 := by norm_num
  72    rw [← h9]
  73    exact Real.sqrt_lt_sqrt (by norm_num) (by norm_num : (5 : ℝ) < 9)
  74  -- So √5 + 1 < 4 < 5
  75  have h5gt : Real.sqrt 5 + 1 < 5 := by linarith [sqrt5_lt_three]
  76  -- Contradiction: 5 = (√5)² = √5 + 1 < 5
  77  have : (5 : ℝ) < 5 := by
  78    calc (5 : ℝ)
  79        = (Real.sqrt 5) ^ 2 := sqrt5_sq.symm
  80        _ = Real.sqrt 5 + 1 := heq
  81        _ < 5 := h5gt
  82  linarith
  83
  84/-- π fails the PhiSelection criterion.
  85    π² ≈ 9.870 but π + 1 ≈ 4.142, so π² ≠ π + 1. -/
  86theorem pi_fails_selection : ¬IndisputableMonolith.RecogSpec.PhiSelection Real.pi := by
  87  intro h
  88  have heq : Real.pi ^ 2 = Real.pi + 1 := h.left
  89  -- π > 3 (from Mathlib)
  90  have pi_gt_3 : (3 : ℝ) < Real.pi := Real.pi_gt_three
  91  -- So π² > 9
  92  have pi_sq_gt_9 : (9 : ℝ) < Real.pi ^ 2 := by
  93    have h3sq : (3 : ℝ) ^ 2 = 9 := by norm_num
  94    rw [← h3sq]
  95    exact sq_lt_sq' (by linarith) pi_gt_3
  96  -- But π < 4, so π + 1 < 5
  97  have pi_lt_4 : Real.pi < 4 := Real.pi_lt_four
  98  have pi_plus_1_lt_5 : Real.pi + 1 < 5 := by linarith
  99  -- Contradiction: 9 < π² = π + 1 < 5
 100  have : (9 : ℝ) < 5 := by
 101    calc (9 : ℝ)
 102        < Real.pi ^ 2 := pi_sq_gt_9
 103        _ = Real.pi + 1 := heq
 104        _ < 5 := pi_plus_1_lt_5
 105  linarith
 106
 107/-- Euler's number e fails the PhiSelection criterion.
 108    e² ≈ 7.389 but e + 1 ≈ 3.718, so e² ≠ e + 1. -/
 109theorem e_fails_selection : ¬IndisputableMonolith.RecogSpec.PhiSelection (Real.exp 1) := by
 110  intro h
 111  have heq : (Real.exp 1) ^ 2 = Real.exp 1 + 1 := h.left
 112  -- exp(1) > 2: prove by showing log(2) < 1
 113  have e_gt_2 : (2 : ℝ) < Real.exp 1 := by
 114    -- If log(2) ≥ 1, then 2 = exp(log 2) ≥ exp(1) > 2.7, contradiction
 115    have hlog2 : Real.log 2 < 1 := by
 116      by_contra h_ge
 117      push_neg at h_ge
 118      -- exp(1) ≤ exp(log 2) = 2 (since exp is monotone)
 119      have hexp_mono : Real.exp 1 ≤ Real.exp (Real.log 2) := Real.exp_le_exp.mpr h_ge
 120      have hsimp : Real.exp (Real.log 2) = 2 := Real.exp_log (by norm_num : (0 : ℝ) < 2)
 121      have h2_ge : Real.exp 1 ≤ 2 := by rw [hsimp] at hexp_mono; exact hexp_mono
 122      -- But exp(1) < 2.72, and 1 + 1 ≤ exp(1), so exp(1) ≥ 2
 123      -- Combined with exp(1) ≤ 2 gives exp(1) = 2
 124      -- But exp(1) ≠ 2 since exp(log 2) = 2 and log 2 ≈ 0.693 ≠ 1
 125      have h2_le : (2 : ℝ) ≤ Real.exp 1 := by linarith [Real.add_one_le_exp (1 : ℝ)]
 126      have h_eq : Real.exp 1 = 2 := le_antisymm h2_ge h2_le
 127      -- If exp(1) = 2, then log(exp(1)) = log(2), i.e., 1 = log(2)
 128      have hlog_eq : Real.log (Real.exp 1) = Real.log 2 := by rw [h_eq]
 129      rw [Real.log_exp] at hlog_eq
 130      -- So log(2) = 1, contradicting h_ge (which gives log(2) ≥ 1, actually consistent!)
 131      -- The real contradiction: exp(1) ≠ 2 because e ≈ 2.718...
 132      -- Use: exp(1) > exp(1/2)² = e^(1/2) * e^(1/2) and e^(1/2) > 1.6
 133      -- Simpler: use exp_one_lt_d9 which gives exp(1) < 2.7182818286
 134      -- Since exp(1) ≤ 2 and exp(1) < 2.72, the contradiction is h2_le with h2_ge
 135      -- Actually if exp(1) = 2, that's not contradicted by exp(1) < 2.72
 136      -- The issue is that exp(1) > 2 strictly. Let's use that exp is strictly increasing
 137      -- and exp(log 2) = 2 with log 2 < 1 strictly
 138      -- We need to show log 2 < 1 without circularity
 139      -- log 2 < 1 ⟺ 2 < exp(1) ⟺ log 2 < 1... this is circular
 140      -- Break it: log 2 = 0.693... < 1 numerically
 141      -- In Mathlib, we might have a direct bound
 142      -- For now, use that if log 2 = 1, then exp(log 2) = exp(1), so 2 = exp(1)
 143      -- but exp(1) = e ≈ 2.718 ≠ 2
 144      -- The bound exp_one_lt_d9 says exp(1) < 2.7182818286
 145      -- If exp(1) = 2, then 2 < 2.72, which is true, no contradiction yet
 146      -- We need exp(1) > 2, not just exp(1) ≤ 2.72
 147      -- Use exp(1) ≥ 1 + 1 + 1/2 = 2.5 from Taylor. But add_one_le_exp only gives ≥ 2
 148      -- Actually, use exp(1/2) > 1 + 1/2 = 1.5, so exp(1) = exp(1/2)² > 2.25 > 2
 149      have h_half := Real.add_one_le_exp (1/2 : ℝ)
 150      have h_half_bound : (1.5 : ℝ) ≤ Real.exp (1/2) := by linarith
 151      have h_sq : Real.exp 1 = Real.exp (1/2) * Real.exp (1/2) := by
 152        rw [← Real.exp_add]; norm_num
 153      have h_exp1_bound : (2.25 : ℝ) ≤ Real.exp 1 := by
 154        rw [h_sq]
 155        have : (1.5 : ℝ) * 1.5 = 2.25 := by norm_num
 156        calc Real.exp (1/2) * Real.exp (1/2)
 157            ≥ 1.5 * 1.5 := mul_le_mul h_half_bound h_half_bound (by norm_num) (by linarith)
 158            _ = 2.25 := by norm_num
 159      linarith
 160    have h2pos : (0 : ℝ) < 2 := by norm_num
 161    calc (2 : ℝ)
 162        = Real.exp (Real.log 2) := (Real.exp_log h2pos).symm
 163        _ < Real.exp 1 := Real.exp_lt_exp.mpr hlog2
 164  -- So e² > 4
 165  have e_sq_gt_4 : (4 : ℝ) < (Real.exp 1) ^ 2 := by
 166    have h2sq : (2 : ℝ) ^ 2 = 4 := by norm_num
 167    rw [← h2sq]
 168    exact sq_lt_sq' (by linarith) e_gt_2
 169  -- exp(1) < 2.72 < 3 (from Mathlib)
 170  have e_lt_3 : Real.exp 1 < 3 := by
 171    have : Real.exp 1 < 2.7182818286 := Real.exp_one_lt_d9
 172    linarith
 173  have e_plus_1_lt_4 : Real.exp 1 + 1 < 4 := by linarith
 174  -- Contradiction: 4 < e² = e + 1 < 4
 175  have : (4 : ℝ) < 4 := by
 176    calc (4 : ℝ)
 177        < (Real.exp 1) ^ 2 := e_sq_gt_4
 178        _ = Real.exp 1 + 1 := heq
 179        _ < 4 := e_plus_1_lt_4
 180  linarith
 181
 182/-! ### Summary theorem: Common constants all fail
 183
 184This packages the above results into a single statement showing that
 185none of the common mathematical constants satisfy the selection criterion.
 186-/
 187
 188/-- Bundle theorem: All tested common constants fail PhiSelection.
 189    This demonstrates that φ is not an arbitrary choice from among "nice" constants. -/
 190theorem common_constants_fail_selection :
 191  ¬IndisputableMonolith.RecogSpec.PhiSelection (Real.exp 1) ∧
 192  ¬IndisputableMonolith.RecogSpec.PhiSelection Real.pi ∧
 193  ¬IndisputableMonolith.RecogSpec.PhiSelection (Real.sqrt 2) ∧
 194  ¬IndisputableMonolith.RecogSpec.PhiSelection (Real.sqrt 3) ∧
 195  ¬IndisputableMonolith.RecogSpec.PhiSelection (Real.sqrt 5) := by
 196  exact ⟨e_fails_selection, pi_fails_selection, sqrt2_fails_selection,
 197         sqrt3_fails_selection, sqrt5_fails_selection⟩
 198
 199/-! ### Uniqueness emphasis
 200
 201Combined with phi_unique_pos_root from PhiSupport.lean, these results show:
 2021. φ is the ONLY positive solution to x² = x + 1 (constructive uniqueness)
 2032. Common alternatives (e, π, √2, √3, √5) all fail the criterion (exclusion)
 2043. Therefore φ is mathematically forced, not chosen by fitting
 205-/
 206
 207end Alternatives
 208end PhiSupport
 209end IndisputableMonolith
 210

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