pith. machine review for the scientific record. sign in

IndisputableMonolith.CrossDomain.OncologyLattice

IndisputableMonolith/CrossDomain/OncologyLattice.lean · 85 lines · 14 declarations

show as:
view math explainer →

open module explainer GitHub source

Explainer status: pending

   1import Mathlib
   2
   3/-!
   4# C3: Oncology Lattice — 5 × 5 × 5 = 125 — Wave 62 Cross-Domain
   5
   6Structural claim: cancer therapy searches a three-axis product space:
   7
   8  HallmarkCluster × TreatmentModality × OncogeneFamily  =  125.
   9
  10The three axes are independent because they correspond to three different
  11intervention levers (what the cancer does, how we attack it, which driver
  12mutation it has). Current clinical practice mostly moves along one axis at
  13a time.
  14
  15Empirical prediction if independent: combination therapies indexed on all
  16three axes should show multiplicative — not additive — response. That is
  17testable on TCGA response data.
  18
  19Lean status: 0 sorry, 0 axiom.
  20-/
  21
  22namespace IndisputableMonolith.CrossDomain.OncologyLattice
  23
  24inductive HallmarkCluster where
  25  | proliferation | evasion | invasion | metabolic | genomic
  26  deriving DecidableEq, Repr, BEq, Fintype
  27
  28inductive TreatmentModality where
  29  | surgery | radiation | chemotherapy | immunotherapy | targetedTherapy
  30  deriving DecidableEq, Repr, BEq, Fintype
  31
  32inductive OncogeneFamily where
  33  | ras | myc | egfr | pi3k | bcl2
  34  deriving DecidableEq, Repr, BEq, Fintype
  35
  36theorem hallmarkCount : Fintype.card HallmarkCluster = 5 := by decide
  37theorem modalityCount : Fintype.card TreatmentModality = 5 := by decide
  38theorem oncogeneCount : Fintype.card OncogeneFamily = 5 := by decide
  39
  40abbrev CancerTarget : Type :=
  41  HallmarkCluster × TreatmentModality × OncogeneFamily
  42
  43theorem cancerTargetCount : Fintype.card CancerTarget = 125 := by
  44  simp only [CancerTarget, Fintype.card_prod,
  45    hallmarkCount, modalityCount, oncogeneCount]
  46
  47theorem hallmark_surj : Function.Surjective (fun t : CancerTarget => t.1) := by
  48  intro x
  49  exact ⟨(x, TreatmentModality.surgery, OncogeneFamily.ras), rfl⟩
  50
  51theorem modality_surj :
  52    Function.Surjective (fun t : CancerTarget => t.2.1) := by
  53  intro x
  54  exact ⟨(HallmarkCluster.proliferation, x, OncogeneFamily.ras), rfl⟩
  55
  56theorem oncogene_surj :
  57    Function.Surjective (fun t : CancerTarget => t.2.2) := by
  58  intro x
  59  exact ⟨(HallmarkCluster.proliferation, TreatmentModality.surgery, x), rfl⟩
  60
  61/-- Multiplicative, not additive: 125 > 15 = 5+5+5. -/
  62theorem product_exceeds_sum :
  63    Fintype.card CancerTarget > Fintype.card HallmarkCluster
  64      + Fintype.card TreatmentModality
  65      + Fintype.card OncogeneFamily := by
  66  rw [cancerTargetCount, hallmarkCount, modalityCount, oncogeneCount]
  67  decide
  68
  69structure OncologyLatticeCert where
  70  target_count : Fintype.card CancerTarget = 125
  71  hallmark_surj : Function.Surjective (fun t : CancerTarget => t.1)
  72  modality_surj : Function.Surjective (fun t : CancerTarget => t.2.1)
  73  oncogene_surj : Function.Surjective (fun t : CancerTarget => t.2.2)
  74  multiplicative : Fintype.card CancerTarget > Fintype.card HallmarkCluster
  75    + Fintype.card TreatmentModality + Fintype.card OncogeneFamily
  76
  77def oncologyLatticeCert : OncologyLatticeCert where
  78  target_count := cancerTargetCount
  79  hallmark_surj := hallmark_surj
  80  modality_surj := modality_surj
  81  oncogene_surj := oncogene_surj
  82  multiplicative := product_exceeds_sum
  83
  84end IndisputableMonolith.CrossDomain.OncologyLattice
  85

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