IndisputableMonolith.Physics.SemiconductorBandStructureFromConfigDim
IndisputableMonolith/Physics/SemiconductorBandStructureFromConfigDim.lean · 50 lines · 7 declarations
show as:
view math explainer →
1import Mathlib
2import IndisputableMonolith.Constants
3
4/-!
5# Semiconductor Band Structure from configDim — B15 Solid-State Depth
6
7Five canonical semiconductor types (= configDim D = 5):
8 intrinsic, n-type doped, p-type doped, compensated, degenerate.
9
10Band-gap energies on the φ-ladder.
11
12Lean status: 0 sorry, 0 axiom.
13-/
14
15namespace IndisputableMonolith.Physics.SemiconductorBandStructureFromConfigDim
16open Constants
17
18inductive SemiconductorType where
19 | intrinsic
20 | nTypeDoped
21 | pTypeDoped
22 | compensated
23 | degenerate
24 deriving DecidableEq, Repr, BEq, Fintype
25
26theorem semiconductorType_count :
27 Fintype.card SemiconductorType = 5 := by decide
28
29noncomputable def bandGap (k : ℕ) : ℝ := phi ^ k
30
31theorem bandGap_ratio (k : ℕ) : bandGap (k + 1) / bandGap k = phi := by
32 unfold bandGap
33 have hpos : (0 : ℝ) < phi ^ k := pow_pos phi_pos k
34 rw [div_eq_iff hpos.ne', pow_succ]
35 ring
36
37theorem bandGap_pos (k : ℕ) : 0 < bandGap k := pow_pos phi_pos k
38
39structure SemiconductorCert where
40 five_types : Fintype.card SemiconductorType = 5
41 phi_ratio : ∀ k, bandGap (k + 1) / bandGap k = phi
42 bandGap_always_pos : ∀ k, 0 < bandGap k
43
44noncomputable def semiconductorCert : SemiconductorCert where
45 five_types := semiconductorType_count
46 phi_ratio := bandGap_ratio
47 bandGap_always_pos := bandGap_pos
48
49end IndisputableMonolith.Physics.SemiconductorBandStructureFromConfigDim
50