IndisputableMonolith.Materials.BatteryChemistryFromPhiLadder
IndisputableMonolith/Materials/BatteryChemistryFromPhiLadder.lean · 51 lines · 7 declarations
show as:
view math explainer →
1import Mathlib
2import IndisputableMonolith.Constants
3
4/-!
5# Battery Chemistry from φ-ladder — Energy Storage Depth
6
7Five canonical battery-chemistry families (= configDim D = 5):
8 lead-acid, nickel-cadmium, nickel-metal-hydride, lithium-ion,
9 solid-state (next-gen).
10
11Adjacent-family energy-density ratio on the φ-ladder.
12
13Lean status: 0 sorry, 0 axiom.
14-/
15
16namespace IndisputableMonolith.Materials.BatteryChemistryFromPhiLadder
17open Constants
18
19inductive BatteryChemistry where
20 | leadAcid
21 | nickelCadmium
22 | nickelMetalHydride
23 | lithiumIon
24 | solidState
25 deriving DecidableEq, Repr, BEq, Fintype
26
27theorem batteryChemistry_count : Fintype.card BatteryChemistry = 5 := by decide
28
29noncomputable def energyDensity (k : ℕ) : ℝ := phi ^ k
30
31theorem density_ratio (k : ℕ) :
32 energyDensity (k + 1) / energyDensity k = phi := by
33 unfold energyDensity
34 have hpos : (0 : ℝ) < phi ^ k := pow_pos phi_pos k
35 rw [div_eq_iff hpos.ne', pow_succ]
36 ring
37
38theorem density_pos (k : ℕ) : 0 < energyDensity k := pow_pos phi_pos k
39
40structure BatteryChemistryCert where
41 five_chemistries : Fintype.card BatteryChemistry = 5
42 phi_ratio : ∀ k, energyDensity (k + 1) / energyDensity k = phi
43 density_always_pos : ∀ k, 0 < energyDensity k
44
45noncomputable def batteryChemistryCert : BatteryChemistryCert where
46 five_chemistries := batteryChemistry_count
47 phi_ratio := density_ratio
48 density_always_pos := density_pos
49
50end IndisputableMonolith.Materials.BatteryChemistryFromPhiLadder
51