pith. machine review for the scientific record. sign in

IndisputableMonolith.Numerics.Interval.GalacticBounds

IndisputableMonolith/Numerics/Interval/GalacticBounds.lean · 170 lines · 26 declarations

show as:
view math explainer →

open module explainer GitHub source

Explainer status: ready · generated 2026-05-13 06:26:10.870485+00:00

   1import IndisputableMonolith.Numerics.Interval.Basic
   2import IndisputableMonolith.Numerics.Interval.Pow
   3import IndisputableMonolith.Constants
   4
   5namespace IndisputableMonolith.Numerics
   6
   7open Interval
   8open Real
   9
  10/-- Ratio τ★ / τ₀ ≈ 5.75e29 -/
  11def galactic_ratio_rational : ℚ := 41971608 * 10^24 / 73
  12
  13/-- φ^51 lo > 0 -/
  14lemma phi_pow_51_lo_pos : (0 : ℚ) < phi_pow_51_interval.lo := by
  15  unfold phi_pow_51_interval; norm_num
  16
  17/-- Interval for φ^102 = (φ^51)^2 -/
  18def phi_pow_102_interval : Interval :=
  19  mulPos phi_pow_51_interval phi_pow_51_interval phi_pow_51_lo_pos phi_pow_51_lo_pos
  20
  21/-- φ^16 lo > 0 -/
  22lemma phi_pow_16_lo_pos : (0 : ℚ) < phi_pow_16_interval.lo := by
  23  unfold phi_pow_16_interval; norm_num
  24
  25/-- φ^5 lo > 0 -/
  26lemma phi_pow_5_lo_pos : (0 : ℚ) < phi_pow_5_interval.lo := by
  27  unfold phi_pow_5_interval; norm_num
  28
  29/-- φ lo > 0 -/
  30lemma phi_lo_pos : (0 : ℚ) < phiInterval.lo := by
  31  unfold phiInterval; norm_num
  32
  33/-- Interval for φ^32 = (φ^16)^2 -/
  34def phi_pow_32_interval : Interval :=
  35  mulPos phi_pow_16_interval phi_pow_16_interval phi_pow_16_lo_pos phi_pow_16_lo_pos
  36
  37lemma phi_pow_32_lo_pos : (0 : ℚ) < phi_pow_32_interval.lo := by
  38  unfold phi_pow_32_interval mulPos; dsimp
  39  exact mul_pos phi_pow_16_lo_pos phi_pow_16_lo_pos
  40
  41/-- Interval for φ^37 = φ^32 * φ^5 -/
  42def phi_pow_37_interval : Interval :=
  43  mulPos phi_pow_32_interval phi_pow_5_interval phi_pow_32_lo_pos phi_pow_5_lo_pos
  44
  45lemma phi_pow_37_lo_pos : (0 : ℚ) < phi_pow_37_interval.lo := by
  46  unfold phi_pow_37_interval mulPos; dsimp
  47  exact mul_pos phi_pow_32_lo_pos phi_pow_5_lo_pos
  48
  49/-- Interval for φ^38 = φ^37 * φ^1 -/
  50def phi_pow_38_interval : Interval :=
  51  mulPos phi_pow_37_interval phiInterval phi_pow_37_lo_pos phi_lo_pos
  52
  53lemma phi_pow_102_lo_pos : (0 : ℚ) < phi_pow_102_interval.lo := by
  54  unfold phi_pow_102_interval mulPos; dsimp
  55  exact mul_pos phi_pow_51_lo_pos phi_pow_51_lo_pos
  56
  57lemma phi_pow_38_lo_pos : (0 : ℚ) < phi_pow_38_interval.lo := by
  58  unfold phi_pow_38_interval mulPos; dsimp
  59  exact mul_pos phi_pow_37_lo_pos phi_lo_pos
  60
  61/-- Interval for φ^140 = φ^102 * φ^38 -/
  62def phi_pow_140_interval : Interval :=
  63  mulPos phi_pow_102_interval phi_pow_38_interval phi_pow_102_lo_pos phi_pow_38_lo_pos
  64
  65lemma phi_pow_140_lo_pos : (0 : ℚ) < phi_pow_140_interval.lo := by
  66  unfold phi_pow_140_interval mulPos; dsimp
  67  exact mul_pos phi_pow_102_lo_pos phi_pow_38_lo_pos
  68
  69/-- Interval for φ^145 = φ^140 * φ^5 -/
  70def phi_pow_145_interval : Interval :=
  71  mulPos phi_pow_140_interval phi_pow_5_interval phi_pow_140_lo_pos phi_pow_5_lo_pos
  72
  73theorem phi_pow_140_in_interval : phi_pow_140_interval.contains (goldenRatio ^ (140 : ℝ)) := by
  74  have h_in_51 : phi_pow_51_interval.contains (goldenRatio ^ (51 : ℝ)) := phi_pow_51_in_interval
  75  have h_in_102 : phi_pow_102_interval.contains (goldenRatio ^ (102 : ℝ)) := by
  76    unfold phi_pow_102_interval
  77    have : goldenRatio ^ (102 : ℝ) = goldenRatio ^ (51 : ℝ) * goldenRatio ^ (51 : ℝ) := by
  78      rw [← Real.rpow_add goldenRatio_pos]; norm_num
  79    rw [this]
  80    apply mulPos_contains_mul phi_pow_51_lo_pos phi_pow_51_lo_pos h_in_51 h_in_51
  81
  82  have h_in_16 : phi_pow_16_interval.contains (goldenRatio ^ (16 : ℝ)) := phi_pow_16_in_interval
  83  have h_in_32 : phi_pow_32_interval.contains (goldenRatio ^ (32 : ℝ)) := by
  84    unfold phi_pow_32_interval
  85    have : goldenRatio ^ (32 : ℝ) = goldenRatio ^ (16 : ℝ) * goldenRatio ^ (16 : ℝ) := by
  86      rw [← Real.rpow_add goldenRatio_pos]; norm_num
  87    rw [this]
  88    apply mulPos_contains_mul phi_pow_16_lo_pos phi_pow_16_lo_pos h_in_16 h_in_16
  89
  90  have h_in_5 : phi_pow_5_interval.contains (goldenRatio ^ (5 : ℝ)) := phi_pow_5_in_interval
  91  have h_in_37 : phi_pow_37_interval.contains (goldenRatio ^ (37 : ℝ)) := by
  92    unfold phi_pow_37_interval
  93    have : goldenRatio ^ (37 : ℝ) = goldenRatio ^ (32 : ℝ) * goldenRatio ^ (5 : ℝ) := by
  94      rw [← Real.rpow_add goldenRatio_pos]; norm_num
  95    rw [this]
  96    apply mulPos_contains_mul phi_pow_32_lo_pos phi_pow_5_lo_pos h_in_32 h_in_5
  97
  98  have h_in_1 : phiInterval.contains goldenRatio := phi_in_phiInterval
  99  have h_in_38 : phi_pow_38_interval.contains (goldenRatio ^ (38 : ℝ)) := by
 100    unfold phi_pow_38_interval
 101    have : goldenRatio ^ (38 : ℝ) = goldenRatio ^ (37 : ℝ) * goldenRatio ^ (1 : ℝ) := by
 102      rw [← Real.rpow_add goldenRatio_pos]; norm_num
 103    rw [this, Real.rpow_one]
 104    apply mulPos_contains_mul phi_pow_37_lo_pos phi_lo_pos h_in_37 h_in_1
 105
 106  unfold phi_pow_140_interval
 107  have : goldenRatio ^ (140 : ℝ) = goldenRatio ^ (102 : ℝ) * goldenRatio ^ (38 : ℝ) := by
 108    rw [← Real.rpow_add goldenRatio_pos]; norm_num
 109  rw [this]
 110  apply mulPos_contains_mul phi_pow_102_lo_pos phi_pow_38_lo_pos h_in_102 h_in_38
 111
 112theorem phi_pow_145_in_interval : phi_pow_145_interval.contains (goldenRatio ^ (145 : ℝ)) := by
 113  have h_in_140 := phi_pow_140_in_interval
 114  have h_in_5 : phi_pow_5_interval.contains (goldenRatio ^ (5 : ℝ)) := phi_pow_5_in_interval
 115  unfold phi_pow_145_interval
 116  have : goldenRatio ^ (145 : ℝ) = goldenRatio ^ (140 : ℝ) * goldenRatio ^ (5 : ℝ) := by
 117    rw [← Real.rpow_add goldenRatio_pos]; norm_num
 118  rw [this]
 119  apply mulPos_contains_mul phi_pow_140_lo_pos phi_pow_5_lo_pos h_in_140 h_in_5
 120
 121/-- φ^140 < galactic_ratio -/
 122theorem phi_pow_140_lt_ratio : goldenRatio ^ (140 : ℝ) < (galactic_ratio_rational : ℝ) := by
 123  have h_in_140 := phi_pow_140_in_interval
 124  have h_hi : phi_pow_140_interval.hi < galactic_ratio_rational := by
 125    unfold phi_pow_140_interval phi_pow_102_interval phi_pow_38_interval phi_pow_37_interval phi_pow_32_interval phi_pow_51_interval phi_pow_16_interval phi_pow_5_interval phiInterval mulPos
 126    norm_num
 127  exact lt_of_le_of_lt h_in_140.2 (by exact_mod_cast h_hi)
 128
 129/-- galactic_ratio < φ^145 -/
 130theorem ratio_lt_phi_pow_145 : (galactic_ratio_rational : ℝ) < goldenRatio ^ (145 : ℝ) := by
 131  have h_in_145 := phi_pow_145_in_interval
 132  have h_lo : galactic_ratio_rational < phi_pow_145_interval.lo := by
 133    unfold phi_pow_145_interval phi_pow_140_interval phi_pow_102_interval phi_pow_38_interval phi_pow_37_interval phi_pow_32_interval phi_pow_51_interval phi_pow_16_interval phi_pow_5_interval phiInterval mulPos
 134    norm_num
 135  exact lt_of_lt_of_le (by exact_mod_cast h_lo) h_in_145.1
 136
 137/-- Interval for φ^2 = φ + 1 -/
 138def phi_pow_2_interval : Interval :=
 139  phiInterval.add (Interval.point 1)
 140
 141lemma phi_pow_2_lo_pos : (0 : ℚ) < phi_pow_2_interval.lo := by
 142  unfold phi_pow_2_interval phiInterval; norm_num
 143
 144/-- Interval for φ^142 = φ^140 * φ^2 -/
 145def phi_pow_142_interval : Interval :=
 146  mulPos phi_pow_140_interval phi_pow_2_interval phi_pow_140_lo_pos phi_pow_2_lo_pos
 147
 148theorem phi_pow_142_in_interval : phi_pow_142_interval.contains (goldenRatio ^ (142 : ℝ)) := by
 149  have h_in_140 := phi_pow_140_in_interval
 150  have h_in_2 : phi_pow_2_interval.contains (goldenRatio ^ (2 : ℝ)) := by
 151    unfold phi_pow_2_interval
 152    have h_sq : goldenRatio ^ (2 : ℝ) = goldenRatio + 1 := goldenRatio_sq
 153    rw [h_sq]
 154    apply add_contains_add (phi_in_phiInterval) (contains_point 1)
 155  unfold phi_pow_142_interval
 156  have : goldenRatio ^ (142 : ℝ) = goldenRatio ^ (140 : ℝ) * goldenRatio ^ (2 : ℝ) := by
 157    rw [← Real.rpow_add goldenRatio_pos]; norm_num
 158  rw [this]
 159  apply mulPos_contains_mul phi_pow_140_lo_pos phi_pow_2_lo_pos h_in_140 h_in_2
 160
 161theorem phi_pow_142_lt_ratio_1_3 : phi_pow_142_interval.hi < 13/10 * galactic_ratio_rational := by
 162  unfold phi_pow_142_interval phi_pow_2_interval phi_pow_140_interval phi_pow_102_interval phi_pow_38_interval phi_pow_37_interval phi_pow_32_interval phi_pow_51_interval phi_pow_16_interval phi_pow_5_interval phiInterval mulPos Interval.add Interval.point
 163  norm_num
 164
 165theorem ratio_0_7_lt_phi_pow_142 : 7/10 * galactic_ratio_rational < phi_pow_142_interval.lo := by
 166  unfold phi_pow_142_interval phi_pow_2_interval phi_pow_140_interval phi_pow_102_interval phi_pow_38_interval phi_pow_37_interval phi_pow_32_interval phi_pow_51_interval phi_pow_16_interval phi_pow_5_interval phiInterval mulPos Interval.add Interval.point
 167  norm_num
 168
 169end IndisputableMonolith.Numerics
 170

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