IndisputableMonolith.Physics.QCDRGE.AlphaRunning
IndisputableMonolith/Physics/QCDRGE/AlphaRunning.lean · 82 lines · 13 declarations
show as:
view math explainer →
1import Mathlib
2import IndisputableMonolith.Constants
3import IndisputableMonolith.Physics.StrongForce
4
5/-!
6# Running of α_s from RS
7
8α_s = 2/17 at M_Z. The one-loop beta function gives the running to nuclear scales.
9b₀ = (11N_c - 2N_f) / (12π) > 0 for N_f < 17 (asymptotic freedom, from N_c = 3).
10
11## Status
12
13All theorems machine-verified (zero sorry, zero axiom).
14-/
15
16namespace IndisputableMonolith
17namespace Physics
18namespace QCDRGE
19namespace AlphaRunning
20
21open Constants Physics.StrongForce
22
23noncomputable section
24
25def N_c : ℕ := 3
26def N_f_Z : ℕ := 5
27
28/-- One-loop beta function coefficient. -/
29def beta0 (N_f : ℕ) : ℝ := (11 * (N_c : ℝ) - 2 * (N_f : ℝ)) / (12 * Real.pi)
30
31/-- b₀ > 0 for N_f ≤ 16 (asymptotic freedom). -/
32theorem beta0_pos (N_f : ℕ) (hNf : N_f ≤ 16) : 0 < beta0 N_f := by
33 unfold beta0 N_c
34 apply div_pos _ (mul_pos (by norm_num : (0:ℝ) < 12) Real.pi_pos)
35 have h : (N_f : ℝ) ≤ 16 := by exact_mod_cast hNf
36 simp only [N_c, Nat.cast_ofNat]
37 nlinarith
38
39/-- At N_f = 5: b₀ = 23/(12π). -/
40theorem beta0_at_Z : beta0 N_f_Z = 23 / (12 * Real.pi) := by
41 unfold beta0 N_c N_f_Z; ring
42
43/-- α_s at M_Z from RS. -/
44def alpha_s_MZ : ℝ := alpha_s_geom
45
46theorem alpha_s_MZ_pos : 0 < alpha_s_MZ := by unfold alpha_s_MZ alpha_s_geom; norm_num
47
48/-- α_s(M_Z) is between 0.11 and 0.12. -/
49theorem alpha_s_MZ_bounds : 0.11 < alpha_s_MZ ∧ alpha_s_MZ < 0.12 := by
50 unfold alpha_s_MZ alpha_s_geom; constructor <;> norm_num
51
52/-- Z boson mass in GeV. -/
53def M_Z_GeV : ℝ := 91.1876
54
55/-- Running α_s at scale Q (one-loop). -/
56def alpha_s_running (Q_GeV : ℝ) : ℝ :=
57 alpha_s_MZ / (1 + beta0 N_f_Z * alpha_s_MZ * Real.log (Q_GeV ^ 2 / M_Z_GeV ^ 2) / (2 * Real.pi))
58
59/-- For Q < M_Z, ln(Q²/M_Z²) < 0, so α_s increases (asymptotic freedom in reverse). -/
60theorem low_Q_log_negative (Q : ℝ) (hQ : 0 < Q) (h : Q < M_Z_GeV) :
61 Real.log (Q ^ 2 / M_Z_GeV ^ 2) < 0 := by
62 apply Real.log_neg
63 · apply div_pos (sq_pos_of_pos hQ)
64 exact sq_pos_of_pos (by unfold M_Z_GeV; norm_num)
65 · rw [div_lt_one (by unfold M_Z_GeV; positivity)]
66 nlinarith [sq_nonneg Q, sq_nonneg M_Z_GeV, sq_abs (Q - M_Z_GeV)]
67
68/-- At Q = M_Z the log vanishes so α_s = α_s(M_Z). -/
69theorem log_at_MZ : Real.log (M_Z_GeV ^ 2 / M_Z_GeV ^ 2) = 0 := by
70 rw [div_self (by unfold M_Z_GeV; positivity)]; exact Real.log_one
71
72/-- Asymptotic freedom: α_s gets STRONGER at lower energies. -/
73theorem asymptotic_freedom :
74 0 < beta0 N_f_Z := beta0_pos N_f_Z (by unfold N_f_Z; norm_num)
75
76end
77
78end AlphaRunning
79end QCDRGE
80end Physics
81end IndisputableMonolith
82