IndisputableMonolith.Chemistry.NucleosideStructureFromConfigDim
IndisputableMonolith/Chemistry/NucleosideStructureFromConfigDim.lean · 46 lines · 7 declarations
show as:
view math explainer →
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