pith. machine review for the scientific record. sign in

IndisputableMonolith.CrossDomain.PlanetStratification

IndisputableMonolith/CrossDomain/PlanetStratification.lean · 77 lines · 14 declarations

show as:
view math explainer →

open module explainer GitHub source

Explainer status: pending

   1import Mathlib
   2
   3/-!
   4# C2: Planet Stratification — 5+5+5 = 15 — Wave 62 Cross-Domain
   5
   6Structural claim: three nested D = 5 stratifications cover Earth:
   7
   8  AtmosphericLayer ⊕ EarthLayer ⊕ OceanLayer  =  5 + 5 + 5  =  15.
   9
  10Unlike C1 (a product), this is a disjoint sum: the three strata are
  11*nested*, not independent, because they sit at different radial shells of
  12the planet. You cannot be in the atmosphere and in the mantle at the same
  13radius. So the combined stratification is a sum type, not a product.
  14
  15Empirical prediction if this is real: atmospheric wave speeds at
  16tropopause and seismic phase velocities at the asthenosphere boundary
  17should obey a φ-ladder ratio. That is testable; it is not what this Lean
  18file proves. This file proves the combinatorial structure.
  19
  20Lean status: 0 sorry, 0 axiom.
  21-/
  22
  23namespace IndisputableMonolith.CrossDomain.PlanetStratification
  24
  25inductive AtmosphericLayer where
  26  | troposphere | stratosphere | mesosphere | thermosphere | exosphere
  27  deriving DecidableEq, Repr, BEq, Fintype
  28
  29inductive EarthLayer where
  30  | innerCore | outerCore | lowerMantle | upperMantle | crust
  31  deriving DecidableEq, Repr, BEq, Fintype
  32
  33inductive OceanLayer where
  34  | surface | thermocline | intermediate | deep | abyssal
  35  deriving DecidableEq, Repr, BEq, Fintype
  36
  37theorem atmoCount : Fintype.card AtmosphericLayer = 5 := by decide
  38theorem earthCount : Fintype.card EarthLayer = 5 := by decide
  39theorem oceanCount : Fintype.card OceanLayer = 5 := by decide
  40
  41abbrev PlanetStratum : Type := AtmosphericLayer ⊕ EarthLayer ⊕ OceanLayer
  42
  43theorem planetStratumCount : Fintype.card PlanetStratum = 15 := by
  44  simp only [PlanetStratum, Fintype.card_sum, atmoCount, earthCount, oceanCount]
  45
  46/-- The three injections are not surjective: each covers only 5 of 15. -/
  47theorem atmo_is_proper_subset :
  48    Fintype.card PlanetStratum > Fintype.card AtmosphericLayer := by
  49  rw [planetStratumCount, atmoCount]; decide
  50
  51theorem earth_is_proper_subset :
  52    Fintype.card PlanetStratum > Fintype.card EarthLayer := by
  53  rw [planetStratumCount, earthCount]; decide
  54
  55theorem ocean_is_proper_subset :
  56    Fintype.card PlanetStratum > Fintype.card OceanLayer := by
  57  rw [planetStratumCount, oceanCount]; decide
  58
  59/-- 15 = 3 × D (where D = 5). -/
  60theorem planetStratum_three_D : 15 = 3 * 5 := by decide
  61
  62structure PlanetStratificationCert where
  63  stratum_count : Fintype.card PlanetStratum = 15
  64  three_D : 15 = 3 * 5
  65  atmo_sub : Fintype.card PlanetStratum > Fintype.card AtmosphericLayer
  66  earth_sub : Fintype.card PlanetStratum > Fintype.card EarthLayer
  67  ocean_sub : Fintype.card PlanetStratum > Fintype.card OceanLayer
  68
  69def planetStratificationCert : PlanetStratificationCert where
  70  stratum_count := planetStratumCount
  71  three_D := planetStratum_three_D
  72  atmo_sub := atmo_is_proper_subset
  73  earth_sub := earth_is_proper_subset
  74  ocean_sub := ocean_is_proper_subset
  75
  76end IndisputableMonolith.CrossDomain.PlanetStratification
  77

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