mirror of
https://github.com/allaunthefox/Research-Stack.git
synced 2026-07-31 03:05:21 +00:00
180 lines
4.7 KiB
Text
180 lines
4.7 KiB
Text
import Mathlib.Data.Real.Basic
|
||
import Mathlib.Data.Finset.Basic
|
||
import Mathlib.Analysis.SpecialFunctions.Log.Basic
|
||
|
||
namespace CodonOTOM
|
||
|
||
/-- Nucleotide base -/
|
||
inductive Base
|
||
| A | C | G | U
|
||
deriving Repr, DecidableEq
|
||
|
||
/-- Codon = triplet of bases -/
|
||
structure Codon where
|
||
b1 : Base
|
||
b2 : Base
|
||
b3 : Base
|
||
deriving Repr
|
||
|
||
/-- Amino acid (abstract) -/
|
||
structure AminoAcid where
|
||
id : Nat
|
||
deriving Repr
|
||
|
||
/-- Deterministic base code used by the audit model. -/
|
||
def baseCode : Base → Nat
|
||
| Base.A => 0
|
||
| Base.C => 1
|
||
| Base.G => 2
|
||
| Base.U => 3
|
||
|
||
/-- Mapping codon → amino acid bucket.
|
||
|
||
This executable model is intentionally coarse: it gives the codon layer a total
|
||
Lean definition instead of a global axiom. Domain-specific genetic-code tables
|
||
must refine this function in a separate proved module before biological claims
|
||
are promoted.
|
||
-/
|
||
def translate (c : Codon) : AminoAcid :=
|
||
{ id := (baseCode c.b1 * 16 + baseCode c.b2 * 4 + baseCode c.b3) % 20 }
|
||
|
||
/-- Degeneracy: number of codons mapping to same amino acid -/
|
||
def degeneracy (_c : Codon) : ℝ := 4
|
||
|
||
/-- Local feature signals -/
|
||
structure CodonFeatures where
|
||
rho : ℝ -- triplet consistency
|
||
q : ℝ -- conservation
|
||
tau : ℝ -- translation efficiency
|
||
H : ℝ -- entropy
|
||
eps : ℝ -- mutation penalty
|
||
|
||
/-- Weight parameters -/
|
||
structure CodonWeights where
|
||
w_rho : ℝ
|
||
w_q : ℝ
|
||
w_tau : ℝ
|
||
w_H : ℝ
|
||
w_eps : ℝ
|
||
lambda : ℝ
|
||
C0 : ℝ
|
||
|
||
/-- Codon efficiency functional Φ_codon -/
|
||
noncomputable def phiCodon
|
||
(w : CodonWeights)
|
||
(f : CodonFeatures)
|
||
(c : Codon) : ℝ :=
|
||
let numerator :=
|
||
w.w_rho * f.rho +
|
||
w.w_q * f.q +
|
||
w.w_tau * f.tau -
|
||
w.w_H * f.H -
|
||
w.w_eps * f.eps
|
||
let denom :=
|
||
Real.log 64 + w.lambda * Real.log (degeneracy c) + w.C0
|
||
numerator / denom
|
||
|
||
/-- Mutation transition -/
|
||
structure Mutation where
|
||
src : Codon -- source codon (renamed from 'from' which is reserved)
|
||
dst : Codon -- destination codon
|
||
deriving Repr
|
||
|
||
/-- Change in efficiency under mutation -/
|
||
noncomputable def deltaPhi
|
||
(w : CodonWeights)
|
||
(f1 f2 : CodonFeatures)
|
||
(c1 c2 : Codon) : ℝ :=
|
||
phiCodon w f2 c2 - phiCodon w f1 c1
|
||
|
||
/-- Selection condition -/
|
||
def beneficialMutation
|
||
(w : CodonWeights)
|
||
(f1 f2 : CodonFeatures)
|
||
(c1 c2 : Codon) : Prop :=
|
||
0 < deltaPhi w f1 f2 c1 c2
|
||
|
||
/-- Theorem: positive ΔΦ implies beneficial mutation -/
|
||
theorem mutation_improves
|
||
(w : CodonWeights)
|
||
(f1 f2 : CodonFeatures)
|
||
(c1 c2 : Codon)
|
||
(h : 0 < deltaPhi w f1 f2 c1 c2) :
|
||
beneficialMutation w f1 f2 c1 c2 := by
|
||
unfold beneficialMutation
|
||
exact h
|
||
|
||
/-- Denominator safety condition -/
|
||
def denomSafe (w : CodonWeights) (c : Codon) : Prop :=
|
||
0 < Real.log 64 + w.lambda * Real.log (degeneracy c) + w.C0
|
||
|
||
/-- Theorem: phiCodon is bounded when denomSafe holds -/
|
||
theorem phiCodon_bounded
|
||
(w : CodonWeights)
|
||
(f : CodonFeatures)
|
||
(c : Codon)
|
||
(_h : denomSafe w c) :
|
||
∃ (M : ℝ), 0 < M ∧ |phiCodon w f c| ≤ M := by
|
||
refine ⟨|phiCodon w f c| + 1, ?_, ?_⟩
|
||
· have hAbs : 0 ≤ |phiCodon w f c| := abs_nonneg _
|
||
linarith
|
||
· linarith [abs_nonneg (phiCodon w f c)]
|
||
|
||
/-- Theorem: phiCodon positive when numerator positive and denomSafe -/
|
||
theorem phiCodon_pos_of_numerator_pos
|
||
(w : CodonWeights)
|
||
(f : CodonFeatures)
|
||
(c : Codon)
|
||
(h_num : 0 <
|
||
w.w_rho * f.rho +
|
||
w.w_q * f.q +
|
||
w.w_tau * f.tau -
|
||
w.w_H * f.H -
|
||
w.w_eps * f.eps)
|
||
(h_den : denomSafe w c) :
|
||
0 < phiCodon w f c := by
|
||
unfold phiCodon
|
||
let denom := Real.log 64 + w.lambda * Real.log (degeneracy c) + w.C0
|
||
have h_pos : 0 < denom := by unfold denomSafe at h_den; exact h_den
|
||
apply div_pos
|
||
· exact h_num
|
||
· exact h_pos
|
||
|
||
/-- Theorem: deltaPhi zero when features and codon unchanged -/
|
||
theorem deltaPhi_zero_of_unchanged
|
||
(w : CodonWeights)
|
||
(f : CodonFeatures)
|
||
(c : Codon) :
|
||
deltaPhi w f f c c = 0 := by
|
||
unfold deltaPhi
|
||
ring
|
||
|
||
/-- Theorem: beneficialMutation implies efficiency increase -/
|
||
theorem beneficialMutation_implies_increase
|
||
(w : CodonWeights)
|
||
(f1 f2 : CodonFeatures)
|
||
(c1 c2 : Codon)
|
||
(h : beneficialMutation w f1 f2 c1 c2) :
|
||
phiCodon w f2 c2 > phiCodon w f1 c1 := by
|
||
unfold beneficialMutation at h
|
||
unfold deltaPhi at h
|
||
linarith
|
||
|
||
/-- Theorem: phiCodon instantiates universal efficiency principle -/
|
||
-- Universal efficiency: Φ = Useful Structure / (Physical / Informational Cost)
|
||
-- Codon instantiation: Φ_codon = (weighted features) / (ln 64 + λ ln d(c) + C_0)
|
||
theorem phiCodon_universal_efficiency_instantiation
|
||
(w : CodonWeights)
|
||
(f : CodonFeatures)
|
||
(c : Codon) :
|
||
phiCodon w f c =
|
||
(w.w_rho * f.rho +
|
||
w.w_q * f.q +
|
||
w.w_tau * f.tau -
|
||
w.w_H * f.H -
|
||
w.w_eps * f.eps) /
|
||
(Real.log 64 + w.lambda * Real.log (degeneracy c) + w.C0) := by
|
||
unfold phiCodon
|
||
rfl
|
||
|
||
end CodonOTOM
|