pith. machine review for the scientific record. sign in

IndisputableMonolith.Physics.Ising2D

IndisputableMonolith/Physics/Ising2D.lean · 128 lines · 19 declarations

show as:
view math explainer →

open module explainer GitHub source

Explainer status: pending

   1import IndisputableMonolith.Constants
   2
   3/-!
   4# D = 2 Ising Model: Onsager Exact Solution Diagnostic
   5
   6The 2D Ising model is exactly solvable (Onsager, 1944). Its critical exponents
   7are known exactly as rational numbers. This module verifies the Onsager values
   8satisfy the scaling relations and tests whether the RS φ-algebraic formulas
   9extend to D = 2.
  10
  11## Onsager exact exponents (D = 2):
  12  ν = 1, η = 1/4, β = 1/8, γ = 7/4, α = 0 (log divergence), δ = 15
  13
  14## Diagnostic result:
  15  The RS leading-order formula ν₀ = φ⁻¹ does NOT reproduce ν = 1 for D = 2.
  16  This is expected since RS derives D = 3 as the unique physical dimension.
  17-/
  18
  19namespace IndisputableMonolith
  20namespace Physics
  21namespace Ising2D
  22
  23open Constants
  24
  25noncomputable section
  26
  27private lemma phi_gt_1618 : (1.618 : ℝ) < phi := by
  28  simp only [phi]
  29  have h5 : (2.236 : ℝ) < Real.sqrt 5 := by
  30    have h : (2.236 : ℝ) ^ 2 < 5 := by norm_num
  31    rw [← Real.sqrt_sq (by norm_num : (0 : ℝ) ≤ 2.236)]
  32    exact Real.sqrt_lt_sqrt (by norm_num) h
  33  linarith
  34
  35/-! ## Onsager Exact Values -/
  36
  37def D2 : ℝ := 2
  38def nu_onsager : ℝ := 1
  39def eta_onsager : ℝ := 1 / 4
  40def beta_onsager : ℝ := 1 / 8
  41def gamma_onsager : ℝ := 7 / 4
  42def delta_onsager : ℝ := 15
  43
  44/-! ## Scaling Relations for Onsager Values
  45
  46We verify all four scaling relations hold for the exact D = 2 exponents.
  47Note: α = 0 for D = 2 (logarithmic divergence), so we use α = 2 − Dν = 0.
  48-/
  49
  50/-- Onsager α = 2 − 2·1 = 0. -/
  51def alpha_onsager : ℝ := 2 - D2 * nu_onsager
  52
  53theorem alpha_onsager_eq : alpha_onsager = 0 := by
  54  unfold alpha_onsager D2 nu_onsager; ring
  55
  56/-- Rushbrooke: α + 2β + γ = 0 + 2·(1/8) + 7/4 = 0 + 1/4 + 7/4 = 2. -/
  57theorem rushbrooke_onsager : alpha_onsager + 2 * beta_onsager + gamma_onsager = 2 := by
  58  unfold alpha_onsager beta_onsager gamma_onsager D2 nu_onsager; ring
  59
  60/-- Fisher: γ = ν(2 − η) = 1·(2 − 1/4) = 7/4. -/
  61theorem fisher_onsager : gamma_onsager = nu_onsager * (2 - eta_onsager) := by
  62  unfold gamma_onsager nu_onsager eta_onsager; ring
  63
  64/-- Hyperscaling (D = 2): Dν = 2 − α → 2·1 = 2 − 0 = 2. -/
  65theorem hyperscaling_onsager : D2 * nu_onsager = 2 - alpha_onsager := by
  66  simp only [D2, nu_onsager, alpha_onsager]; ring
  67
  68/-- Widom: γ = β(δ − 1) = (1/8)·14 = 14/8 = 7/4. -/
  69theorem widom_onsager : gamma_onsager = beta_onsager * (delta_onsager - 1) := by
  70  unfold gamma_onsager beta_onsager delta_onsager; ring
  71
  72/-- β from scaling: β = ν(D − 2 + η)/2 = 1·(0 + 1/4)/2 = 1/8. -/
  73theorem beta_from_scaling : beta_onsager = nu_onsager * (D2 - 2 + eta_onsager) / 2 := by
  74  unfold beta_onsager nu_onsager D2 eta_onsager; ring
  75
  76/-- δ from scaling: δ = (D + 2 − η)/(D − 2 + η) = (4 − 1/4)/(0 + 1/4) = (15/4)/(1/4) = 15. -/
  77theorem delta_from_scaling : delta_onsager = (D2 + 2 - eta_onsager) / (D2 - 2 + eta_onsager) := by
  78  unfold delta_onsager D2 eta_onsager; norm_num
  79
  80/-! ## RS Leading-Order Fails for D = 2
  81
  82The RS leading-order ν₀ = φ⁻¹ ≈ 0.618 does not equal the Onsager ν = 1.
  83This is expected: RS derives D = 3 as the unique physical dimension.
  84The D = 2 result is a diagnostic, not a contradiction.
  85-/
  86
  87/-- RS leading-order ν₀ = φ⁻¹ < 1 = ν_Onsager. -/
  88theorem rs_leading_order_below_onsager : 1 / phi < nu_onsager := by
  89  unfold nu_onsager
  90  have h := one_lt_phi
  91  have hp := phi_pos
  92  have : 1 / phi < 1 / 1 := by
  93    exact (one_div_lt_one_div phi_pos (by norm_num : (0:ℝ) < 1)).mpr h
  94  linarith
  95
  96/-- The gap: ν_Onsager − ν₀ > 0.38 (a 38% discrepancy). -/
  97theorem onsager_rs_gap : (0.38 : ℝ) < nu_onsager - 1 / phi := by
  98  unfold nu_onsager
  99  have h_upper : 1 / phi < (0.619 : ℝ) :=
 100    calc 1 / phi < 1 / (1.618 : ℝ) :=
 101        (one_div_lt_one_div phi_pos (by norm_num : (0:ℝ) < 1.618)).mpr phi_gt_1618
 102      _ < (0.619 : ℝ) := by norm_num
 103  linarith
 104
 105/-! ## Certificate -/
 106
 107structure Ising2DCert where
 108  rushbrooke : alpha_onsager + 2 * beta_onsager + gamma_onsager = 2
 109  fisher : gamma_onsager = nu_onsager * (2 - eta_onsager)
 110  widom : gamma_onsager = beta_onsager * (delta_onsager - 1)
 111  hyperscaling : D2 * nu_onsager = 2 - alpha_onsager
 112  alpha_zero : alpha_onsager = 0
 113  rs_fails : 1 / phi < nu_onsager
 114
 115def ising2DCert : Ising2DCert where
 116  rushbrooke := rushbrooke_onsager
 117  fisher := fisher_onsager
 118  widom := widom_onsager
 119  hyperscaling := hyperscaling_onsager
 120  alpha_zero := alpha_onsager_eq
 121  rs_fails := rs_leading_order_below_onsager
 122
 123end
 124
 125end Ising2D
 126end Physics
 127end IndisputableMonolith
 128

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