Pith. sign in

IndisputableMonolith.Chemistry.NucleosideStructureFromConfigDim

IndisputableMonolith/Chemistry/NucleosideStructureFromConfigDim.lean · 46 lines · 7 declarations

show as:
view math explainer →

open module explainer GitHub source

Explainer status: pending

   1import Mathlib
   2
   3/-!
   4# Nucleoside Structure from ConfigDim — B5 / Genetics Depth
   5
   6DNA has four canonical nucleotides (A, T, C, G).
   7But with the base-pair complement structure: A-T and G-C.
   8
   9Five canonical nucleoside types (adenine, thymine, cytosine, guanine, uracil)
  10= configDim D = 5 (including uracil for RNA).
  11
  12The canonical D=3 structure: 4 DNA nucleotides = 2² (F₂² space) corresponding
  13to 2 binary axes (purine/pyrimidine, keto/amino).
  14
  15Lean status: 0 sorry, 0 axiom.
  16-/
  17
  18namespace IndisputableMonolith.Chemistry.NucleosideStructureFromConfigDim
  19
  20inductive Nucleoside where
  21  | adenine | thymine | cytosine | guanine | uracil
  22  deriving DecidableEq, Repr, BEq, Fintype
  23
  24theorem nucleosideCount : Fintype.card Nucleoside = 5 := by decide
  25
  26/-- DNA uses 4 of the 5 (excluding uracil). -/
  27def DNANucleoside : Finset Nucleoside :=
  28  {Nucleoside.adenine, Nucleoside.thymine, Nucleoside.cytosine, Nucleoside.guanine}
  29
  30theorem dna_nucleoside_count : DNANucleoside.card = 4 := by decide
  31
  32/-- 4 = 2² (F₂² at D=2). -/
  33theorem dna_equals_F2sq : DNANucleoside.card = 2 ^ 2 := by decide
  34
  35structure NucleostructureCert where
  36  five_total : Fintype.card Nucleoside = 5
  37  four_dna : DNANucleoside.card = 4
  38  f2_structure : DNANucleoside.card = 2 ^ 2
  39
  40def nucleostructureCert : NucleostructureCert where
  41  five_total := nucleosideCount
  42  four_dna := dna_nucleoside_count
  43  f2_structure := dna_equals_F2sq
  44
  45end IndisputableMonolith.Chemistry.NucleosideStructureFromConfigDim
  46

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