Research-Stack/0-Core-Formalism/lean/Semantics/Semantics/CodonOTOM.lean

180 lines
4.7 KiB
Text
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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