Paper IV · Lean source
QuarticExactZeros.lean
Selected results recorded Coverage and evidence
Compiler/replay evidence is reported for a subset or bounded block. No whole-work coverage is implied.
This viewer reads the retained source; it does not run Lean or assign new claim mappings.
Local imports (1)
KomorebiPaperIV/QuarticExactZeros.lean156 lines
Original source path
Paper_IV_Verification_Closeout_v1.1.0/formalization/lean/KomorebiPaperIV/QuarticExactZeros.leanSkip declarations and read code
1 /-
2 Copyright (c) 2026 Komorebi P. All rights reserved.
3 Authors: Komorebi P.
4 -/
5 import KomorebiPaperIV.ZeroZetaContinuation
6 import Mathlib.Analysis.SpecialFunctions.Trigonometric.DerivHyp
7
8 namespace Komorebi.PaperIV
9 noncomputable section
10 open Complex
11
12 theorem quartic_root_square : ((1 + I) / (Real.sqrt 2 : ℂ)) ^ 2 = I := by
13 have hq : (Real.sqrt 2 : ℂ) ^ 2 = 2 := by
14 norm_cast
15 exact Real.sq_sqrt (by norm_num)
16 rw [div_pow, hq, add_sq, I_sq]
17 ring
18
19 theorem canonicalSignedDenominator_four_eq_cos_cosh (z : ℂ) :
20 canonicalSignedDenominator 4 z = cos (z / (Real.sqrt 2 : ℂ)) * cosh (z / (Real.sqrt 2 : ℂ)) := by
21 have hr : ((1 + I) / (Real.sqrt 2 : ℂ)) ^ 4 = -1 := by
22 rw [show 4 = 2 * 2 by rfl, pow_mul, quartic_root_square, I_sq]
23 rw [canonicalSignedDenominator, entireSigned_independent_roots (by norm_num) (by norm_num)
24 (canonicalPrimitiveRoot_isPrimitive (by norm_num)) isPrimitiveRoot_I
25 (canonicalSignedRoot_pow (by norm_num)) hr, entireSigned_zero_eq_average]
26 norm_num only [Finset.sum_range_succ, Finset.sum_range_zero, pow_zero, pow_one,
27 pow_succ, I_sq, mul_one, zero_add, Nat.cast_ofNat]
28 rw [cos, cosh, div_mul_div_comm, add_mul, mul_add, mul_add]
29 simp only [mul_add, ← exp_add, one_mul, neg_mul]
30 have h1 : (1 + I) / (Real.sqrt 2 : ℂ) * z = z / (Real.sqrt 2 : ℂ) * I + z / (Real.sqrt 2 : ℂ) := by ring
31 have h2 : (1 + I) / (Real.sqrt 2 : ℂ) * I * z = z / (Real.sqrt 2 : ℂ) * I + -(z / (Real.sqrt 2 : ℂ)) := by
32 linear_combination (z / (Real.sqrt 2 : ℂ)) * I_sq
33 have h3 : (1 + I) / (Real.sqrt 2 : ℂ) * (I * I) * z =
34 -(z / (Real.sqrt 2 : ℂ) * I) + -(z / (Real.sqrt 2 : ℂ)) := by
35 rw [I_mul_I]; ring
36 have h4 : (1 + I) / (Real.sqrt 2 : ℂ) * (I * I * I) * z =
37 -(z / (Real.sqrt 2 : ℂ) * I) + z / (Real.sqrt 2 : ℂ) := by
38 rw [I_mul_I]
39 linear_combination -(z / (Real.sqrt 2 : ℂ)) * I_sq
40 rw [h1, h2, h3, h4]
41 ring
42
43 theorem complex_cos_zero_iff_nat {z : ℂ} :
44 cos z = 0 ↔ ∃ m : ℕ, z = ((m : ℂ) + 1 / 2) * (Real.pi : ℂ) ∨
45 z = -(((m : ℂ) + 1 / 2) * (Real.pi : ℂ)) := by
46 rw [← entireSigned_two_eq_cos (IsPrimitiveRoot.neg_one 0 (by decide)) I_sq]
47 exact entireSigned_two_zero_iff_nat (IsPrimitiveRoot.neg_one 0 (by decide)) I_sq
48
49 def quarticPositiveZero (m : ℕ) : ℝ := Real.sqrt 2 * Real.pi * ((m : ℝ) + 1 / 2)
50
51 theorem quarticPositiveZero_pos (m : ℕ) : 0 < quarticPositiveZero m := by
52 unfold quarticPositiveZero
53 positivity
54
55 theorem quarticPositiveZero_div_sqrt (m : ℕ) :
56 (quarticPositiveZero m : ℂ) / (Real.sqrt 2 : ℂ) =
57 ((m : ℂ) + 1 / 2) * (Real.pi : ℂ) := by
58 have hq : (Real.sqrt 2 : ℂ) ≠ 0 := ofReal_ne_zero.mpr (by positivity)
59 unfold quarticPositiveZero
60 push_cast
61 field_simp
62
63 theorem canonicalSignedDenominator_four_zero_iff {z : ℂ} :
64 canonicalSignedDenominator 4 z = 0 ↔ ∃ m : ℕ,
65 z = (quarticPositiveZero m : ℂ) ∨ z = -(quarticPositiveZero m : ℂ) ∨
66 z = I * (quarticPositiveZero m : ℂ) ∨ z = -(I * (quarticPositiveZero m : ℂ)) := by
67 have hq : (Real.sqrt 2 : ℂ) ≠ 0 := ofReal_ne_zero.mpr (by positivity)
68 rw [canonicalSignedDenominator_four_eq_cos_cosh, mul_eq_zero, ← cos_mul_I]
69 constructor
70 · intro hz
71 rcases hz with hc | hc
72 · obtain ⟨m, hm | hm⟩ := complex_cos_zero_iff_nat.mp hc
73 · refine ⟨m, Or.inl ?_⟩
74 apply (div_left_inj' hq).mp
75 rw [quarticPositiveZero_div_sqrt, hm]
76 · refine ⟨m, Or.inr (Or.inl ?_)⟩
77 apply (div_left_inj' hq).mp
78 rw [neg_div, quarticPositiveZero_div_sqrt, hm]
79 · obtain ⟨m, hm | hm⟩ := complex_cos_zero_iff_nat.mp hc
80 · refine ⟨m, Or.inr (Or.inr (Or.inr ?_))⟩
81 have h := congrArg (fun w : ℂ => -(w * I)) hm
82 rw [mul_assoc, I_mul_I, mul_neg_one, neg_neg] at h
83 apply (div_left_inj' hq).mp
84 rw [h, neg_div, mul_div_assoc, quarticPositiveZero_div_sqrt]
85 ring
86 · refine ⟨m, Or.inr (Or.inr (Or.inl ?_))⟩
87 have h := congrArg (fun w : ℂ => -(w * I)) hm
88 rw [mul_assoc, I_mul_I, mul_neg_one, neg_neg] at h
89 apply (div_left_inj' hq).mp
90 rw [h, mul_div_assoc, quarticPositiveZero_div_sqrt]
91 ring
92 · rintro ⟨m, hm | hm | hm | hm⟩
93 · left; rw [hm, quarticPositiveZero_div_sqrt]
94 exact complex_cos_zero_iff_nat.mpr ⟨m, Or.inl rfl⟩
95 · left; rw [hm, neg_div, quarticPositiveZero_div_sqrt, cos_neg]
96 exact complex_cos_zero_iff_nat.mpr ⟨m, Or.inl rfl⟩
97 · right
98 rw [hm, mul_div_assoc, quarticPositiveZero_div_sqrt]
99 have he : I * (((m : ℂ) + 1 / 2) * (Real.pi : ℂ)) * I =
100 -(((m : ℂ) + 1 / 2) * (Real.pi : ℂ)) := by
101 linear_combination (((m : ℂ) + 1 / 2) * (Real.pi : ℂ)) * I_sq
102 rw [he, cos_neg]
103 exact complex_cos_zero_iff_nat.mpr ⟨m, Or.inl rfl⟩
104 · right
105 rw [hm, neg_div, mul_div_assoc, quarticPositiveZero_div_sqrt]
106 have he : -(I * (((m : ℂ) + 1 / 2) * (Real.pi : ℂ))) * I =
107 ((m : ℂ) + 1 / 2) * (Real.pi : ℂ) := by
108 linear_combination -(((m : ℂ) + 1 / 2) * (Real.pi : ℂ)) * I_sq
109 rw [he]
110 exact complex_cos_zero_iff_nat.mpr ⟨m, Or.inl rfl⟩
111
112 theorem quarticPositiveZero_simple (m : ℕ) :
113 analyticOrderAt (canonicalSignedDenominator 4) (quarticPositiveZero m : ℂ) = 1 := by
114 let z : ℂ := quarticPositiveZero m
115 let a : ℂ := Real.sqrt 2
116 have ha : a ≠ 0 := ofReal_ne_zero.mpr (by positivity)
117 have hc : cos (z / a) = 0 := by
118 rw [show z / a = ((m : ℂ) + 1 / 2) * (Real.pi : ℂ) from quarticPositiveZero_div_sqrt m]
119 exact complex_cos_zero_iff_nat.mpr ⟨m, Or.inl rfl⟩
120 have hch : cosh (z / a) ≠ 0 := by
121 rw [show z / a = ((m : ℂ) + 1 / 2) * (Real.pi : ℂ) from quarticPositiveZero_div_sqrt m]
122 have he : ((m : ℂ) + 1 / 2) * (Real.pi : ℂ) = (((m : ℝ) + 1 / 2) * Real.pi : ℝ) := by push_cast; rfl
123 rw [he, ← ofReal_cosh]
124 exact ofReal_ne_zero.mpr (Real.cosh_pos _).ne'
125 have hs : sin (z / a) ≠ 0 := by
126 intro h
127 have he := sin_sq_add_cos_sq (z / a)
128 simp only [h, hc, zero_pow two_ne_zero, zero_add, zero_ne_one] at he
129 have he : canonicalSignedDenominator 4 = fun w => cos (w / a) * cosh (w / a) :=
130 funext canonicalSignedDenominator_four_eq_cos_cosh
131 have hd := ((hasDerivAt_cos (z / a)).comp z ((hasDerivAt_id z).div_const a)).mul
132 ((hasDerivAt_cosh (z / a)).comp z ((hasDerivAt_id z).div_const a))
133 apply (analyticAt_entireSigned 4 0 _ _ _).analyticOrderAt_eq_one_of_zero_deriv_ne_zero
134 · exact canonicalSignedDenominator_four_zero_iff.mpr ⟨m, Or.inl rfl⟩
135 · change deriv (canonicalSignedDenominator 4) z ≠ 0
136 rw [he]
137 erw [hd.deriv]
138 simp only [Function.comp_apply, id_eq, hc, zero_mul, add_zero, one_div]
139 exact mul_ne_zero (mul_ne_zero (neg_ne_zero.mpr hs) (inv_ne_zero ha)) hch
140
141 theorem canonicalSignedDenominator_four_zero_order_one {z : ℂ}
142 (hz : canonicalSignedDenominator 4 z = 0) :
143 analyticOrderAt (canonicalSignedDenominator 4) z = 1 := by
144 obtain ⟨m, hm | hm | hm | hm⟩ := canonicalSignedDenominator_four_zero_iff.mp hz
145 · rw [hm]; exact quarticPositiveZero_simple m
146 · rw [hm, show -(quarticPositiveZero m : ℂ) = (-1 : ℂ) * (quarticPositiveZero m : ℂ) by ring,
147 ← canonicalSignedDenominator_order_rotation (by norm_num) (show (-1 : ℂ) ^ 4 = 1 by norm_num)]
148 exact quarticPositiveZero_simple m
149 · rw [hm, ← canonicalSignedDenominator_order_rotation (by norm_num) isPrimitiveRoot_I.pow_eq_one]
150 exact quarticPositiveZero_simple m
151 · rw [hm, show -(I * (quarticPositiveZero m : ℂ)) = (-I) * (quarticPositiveZero m : ℂ) by ring,
152 ← canonicalSignedDenominator_order_rotation (by norm_num) isPrimitiveRoot_neg_I.pow_eq_one]
153 exact quarticPositiveZero_simple m
154
155 end
156 end Komorebi.PaperIV
Original file and source record
This copy matches the recorded source file. Its publication here does not change the work’s review status.
SHA-256: bda6f38acc01c2eb97d8341f302d6ccfa2efb057d049f5211ea7fffa374c43d0
Back to Paper IV: Cyclic Analytic Functions, Reciprocal Families, and Spectral Zero Data