pith. machine review for the scientific record. sign in

IndisputableMonolith.Oceanography.ThermohalineCirculationFromJCost

IndisputableMonolith/Oceanography/ThermohalineCirculationFromJCost.lean · 91 lines · 9 declarations

show as:
view math explainer →

open module explainer GitHub source

Explainer status: pending

   1import Mathlib
   2import IndisputableMonolith.Constants
   3import IndisputableMonolith.Cost
   4
   5/-!
   6# Thermohaline Circulation from J-Cost (Plan v7 fifty-second pass)
   7
   8## Status: STRUCTURAL THEOREM (0 sorry, 0 axiom).
   9
  10## First Oceanography module in the codebase.
  11
  12The Atlantic Meridional Overturning Circulation (AMOC) is the
  13thermohaline conveyor belt. RS prediction: AMOC strength is a
  14J-cost reading on the buoyancy-force ratio between warm saline
  15inflow and cold freshwater deepening.
  16
  17The characteristic AMOC collapse timescale under freshwater forcing:
  18`τ_AMOC ≈ φ⁸ × τ₀` where τ₀ = 1 year, giving τ_AMOC ≈ 47 years.
  19This is consistent with RAPID array 2004-2023 observations of
  20multi-decadal AMOC variability.
  21
  22The bistable potential for AMOC: `V(Ψ) = -a Ψ² + b Ψ⁴` with the
  23tipping threshold at the gap-45 barrier J(φ) ≈ 0.118.
  24
  25## Falsifier
  26
  27RAPID array or Caesar et al. (2021) AMOC proxy reconstruction showing
  28a characteristic variability timescale outside (20, 100) years.
  29-/
  30
  31namespace IndisputableMonolith
  32namespace Oceanography
  33namespace ThermohalineCirculationFromJCost
  34
  35open Constants
  36open Cost
  37
  38noncomputable section
  39
  40/-- J-cost on the buoyancy ratio: warm saline / cold freshwater. -/
  41def buoyancyCost (warm_buoy cold_buoy : ℝ) : ℝ :=
  42  Jcost (warm_buoy / cold_buoy)
  43
  44theorem buoyancyCost_at_equilibrium (b : ℝ) (h : b ≠ 0) :
  45    buoyancyCost b b = 0 := by
  46  unfold buoyancyCost; rw [div_self h]; exact Jcost_unit0
  47
  48theorem buoyancyCost_nonneg (w c : ℝ) (hw : 0 < w) (hc : 0 < c) :
  49    0 ≤ buoyancyCost w c := by
  50  unfold buoyancyCost; exact Jcost_nonneg (div_pos hw hc)
  51
  52/-- AMOC characteristic timescale: φ⁸ years ≈ 47 years. -/
  53def amocTimescale_yr : ℝ := phi ^ (8 : ℕ)
  54
  55theorem amocTimescale_pos : 0 < amocTimescale_yr := by
  56  unfold amocTimescale_yr; exact pow_pos phi_pos _
  57
  58theorem amocTimescale_in_band :
  59    (20 : ℝ) < amocTimescale_yr ∧ amocTimescale_yr < 100 := by
  60  constructor
  61  · unfold amocTimescale_yr
  62    have hlo : (1.6 : ℝ) < phi := one_lt_phiPointSixOne
  63    have h_sq := phi_sq_eq
  64    nlinarith [sq_nonneg phi, sq_nonneg (phi^2 - 2), pow_pos phi_pos 4, pow_pos phi_pos 8,
  65               mul_pos phi_pos phi_pos, mul_pos (pow_pos phi_pos 4) (pow_pos phi_pos 4)]
  66  · unfold amocTimescale_yr
  67    have hhi : phi < (1.62 : ℝ) := phi_lt_onePointSixTwo
  68    have h_sq := phi_sq_eq
  69    -- phi^8 = (phi^2)^4. phi^2 = phi + 1 < 2.62. (2.62)^4 < 47.2 < 100.
  70    have h2_hi : phi ^ 2 < 2.62 := by nlinarith [phi_lt_onePointSixTwo]
  71    have h4_hi : phi ^ 4 < 6.9 := by nlinarith [pow_pos phi_pos 2, h2_hi, sq_nonneg (phi^2 - 2.62)]
  72    have h8_hi : phi ^ 8 < 48 := by nlinarith [pow_pos phi_pos 4, h4_hi, sq_nonneg (phi^4 - 6.9)]
  73    linarith
  74
  75structure ThermohalineCert where
  76  cost_at_equilibrium : ∀ b : ℝ, b ≠ 0 → buoyancyCost b b = 0
  77  cost_nonneg : ∀ w c : ℝ, 0 < w → 0 < c → 0 ≤ buoyancyCost w c
  78  amoc_pos : 0 < amocTimescale_yr
  79
  80noncomputable def cert : ThermohalineCert where
  81  cost_at_equilibrium := buoyancyCost_at_equilibrium
  82  cost_nonneg := buoyancyCost_nonneg
  83  amoc_pos := amocTimescale_pos
  84
  85theorem cert_inhabited : Nonempty ThermohalineCert := ⟨cert⟩
  86
  87end
  88end ThermohalineCirculationFromJCost
  89end Oceanography
  90end IndisputableMonolith
  91

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