pith. machine review for the scientific record. sign in

IndisputableMonolith.Physics.QCDRGE.ThresholdMatching

IndisputableMonolith/Physics/QCDRGE/ThresholdMatching.lean · 132 lines · 11 declarations

show as:
view math explainer →

open module explainer GitHub source

Explainer status: pending

   1import Mathlib
   2import IndisputableMonolith.Physics.QCDRGE.TwoLoopAlphaS
   3import IndisputableMonolith.Physics.QCDRGE.MassAnomalousDimension
   4
   5/-!
   6# Heavy Quark Threshold Matching (NLO)
   7
   8When running QCD couplings and quark masses across heavy-quark thresholds, the
   9number of active flavors changes. The matching condition at the quark threshold
  10mu_q (typically chosen as mu_q = m_q^MSbar) relates the (n+1)-flavor coupling
  11to the n-flavor coupling via finite matching coefficients:
  12
  13  alpha_s^(n)(mu_q) = alpha_s^(n+1)(mu_q) * (1 + sum_k c_k a^k)
  14
  15with c_1 = 0 at mu_q = m_q^MSbar (no leading log) and c_2 = 11/72 at NLO in
  16the standard MS-bar decoupling scheme.
  17
  18For quark masses at threshold:
  19
  20  m^(n)(mu_q) = m^(n+1)(mu_q) * (1 + sum_k d_k a^k)
  21
  22with d_1 = 0 at mu_q = m_q and d_2 = -89/432 in MS-bar.
  23
  24This module provides the structural matching infrastructure. It defines
  25the matching coefficients and proves the basic algebraic properties.
  26
  27## Status: 0 sorry, 0 axiom.
  28-/
  29
  30namespace IndisputableMonolith.Physics.QCDRGE.ThresholdMatching
  31
  32open IndisputableMonolith.Physics.QCDRGE.TwoLoopAlphaS
  33open IndisputableMonolith.Physics.QCDRGE.MassAnomalousDimension
  34
  35noncomputable section
  36
  37/-! ## Matching coefficients in MS-bar -/
  38
  39/-- NLO alpha_s matching coefficient at mu = m_q^MSbar.
  40    Standard result: c_2_alpha = 11/72. -/
  41def c_2_alpha : ℝ := 11 / 72
  42
  43/-- NLO mass matching coefficient at mu = m_q^MSbar.
  44    Standard result: d_2_mass = -89/432 (negative; mass slightly decreases). -/
  45def d_2_mass : ℝ := -89 / 432
  46
  47/-- Matching factor for alpha_s at threshold (NLO accuracy).
  48    Returns alpha_s^(n) given alpha_s^(n+1) at the threshold scale. -/
  49def alpha_match (alpha_above : ℝ) : ℝ :=
  50  alpha_above * (1 + c_2_alpha * (alpha_above / Real.pi) ^ 2)
  51
  52/-- Matching factor for the mass at threshold (NLO accuracy).
  53    Returns m^(n) given m^(n+1) at the threshold scale. -/
  54def mass_match (mass_above alpha_at_threshold : ℝ) : ℝ :=
  55  mass_above * (1 + d_2_mass * (alpha_at_threshold / Real.pi) ^ 2)
  56
  57/-! ## Positivity of matching factors
  58
  59For the small alpha values that occur at the heavy-quark thresholds
  60(alpha_s(m_b) ~ 0.22, alpha_s(m_c) ~ 0.38), the corrections are at the
  61percent level and never threaten positivity. We prove this conditionally
  62on the input being positive and the alpha being below 1 (perturbative). -/
  63
  64theorem alpha_match_pos (alpha_above : ℝ)
  65    (h_pos : 0 < alpha_above) (h_lt : alpha_above < 1) :
  66    0 < alpha_match alpha_above := by
  67  unfold alpha_match
  68  apply mul_pos h_pos
  69  have h_a_over_pi_pos : 0 < alpha_above / Real.pi :=
  70    div_pos h_pos Real.pi_pos
  71  have h_a_over_pi_sq_pos : 0 < (alpha_above / Real.pi) ^ 2 :=
  72    pow_pos h_a_over_pi_pos 2
  73  have h_c_pos : 0 < c_2_alpha := by unfold c_2_alpha; norm_num
  74  positivity
  75
  76theorem mass_match_pos (mass_above alpha_at_threshold : ℝ)
  77    (h_mass_pos : 0 < mass_above) (h_alpha_pos : 0 < alpha_at_threshold)
  78    (h_alpha_small : alpha_at_threshold < 1) :
  79    0 < mass_match mass_above alpha_at_threshold := by
  80  unfold mass_match
  81  apply mul_pos h_mass_pos
  82  -- d_2_mass = -89/432 ≈ -0.206. We bound (a/π)^2 < 1, so the correction is > -1.
  83  have h_d_gt : (-1 : ℝ) < d_2_mass := by unfold d_2_mass; norm_num
  84  have h_d_neg : d_2_mass < 0 := by unfold d_2_mass; norm_num
  85  have h_a_pos : 0 < alpha_at_threshold / Real.pi := div_pos h_alpha_pos Real.pi_pos
  86  have h_a_sq_pos : 0 < (alpha_at_threshold / Real.pi) ^ 2 := pow_pos h_a_pos 2
  87  -- Bound (a/π)^2 < 1: a < 1 and π > 1, so a/π < 1, so (a/π)^2 < 1.
  88  have h_pi_gt_one : (1 : ℝ) < Real.pi := by
  89    linarith [Real.pi_gt_three]
  90  have h_a_over_pi_lt_one : alpha_at_threshold / Real.pi < 1 := by
  91    rw [div_lt_one Real.pi_pos]; linarith
  92  have h_a_sq_lt_one : (alpha_at_threshold / Real.pi) ^ 2 < 1 := by
  93    have : (alpha_at_threshold / Real.pi) ^ 2 < 1 ^ 2 := by
  94      apply sq_lt_sq' <;> nlinarith [h_a_pos]
  95    simpa using this
  96  -- d_2_mass * x where x ∈ (0, 1), d_2_mass ∈ (-1, 0), so product ∈ (-1, 0).
  97  have h_prod_gt : -1 < d_2_mass * (alpha_at_threshold / Real.pi) ^ 2 := by
  98    nlinarith [h_d_gt, h_d_neg, h_a_sq_pos, h_a_sq_lt_one]
  99  linarith
 100
 101/-! ## Round-trip: matching plus its inverse is the identity to leading order -/
 102
 103/-- The matching at any threshold is a multiplicative perturbation; its inverse
 104    factor at NLO is `1 - c_2_alpha * (a/pi)^2 + O(a^4)`. We expose this as a
 105    structural definition rather than re-proving the perturbative inverse. -/
 106def alpha_unmatch (alpha_below : ℝ) : ℝ :=
 107  alpha_below * (1 - c_2_alpha * (alpha_below / Real.pi) ^ 2)
 108
 109/-! ## Master cert -/
 110
 111structure ThresholdMatchingCert where
 112  c_2_alpha_pos : 0 < c_2_alpha
 113  d_2_mass_neg : d_2_mass < 0
 114  alpha_match_pos_lemma : ∀ alpha_above : ℝ,
 115      0 < alpha_above → alpha_above < 1 → 0 < alpha_match alpha_above
 116  mass_match_pos_lemma : ∀ mass_above alpha_at_threshold : ℝ,
 117      0 < mass_above → 0 < alpha_at_threshold → alpha_at_threshold < 1 →
 118      0 < mass_match mass_above alpha_at_threshold
 119
 120theorem c_2_alpha_pos : 0 < c_2_alpha := by unfold c_2_alpha; norm_num
 121theorem d_2_mass_neg : d_2_mass < 0 := by unfold d_2_mass; norm_num
 122
 123theorem thresholdMatchingCert_holds : ThresholdMatchingCert :=
 124  { c_2_alpha_pos := c_2_alpha_pos
 125    d_2_mass_neg := d_2_mass_neg
 126    alpha_match_pos_lemma := alpha_match_pos
 127    mass_match_pos_lemma := mass_match_pos }
 128
 129end
 130
 131end IndisputableMonolith.Physics.QCDRGE.ThresholdMatching
 132

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