Paper IV · Lean source

FullZeroCounting.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/FullZeroCounting.lean87 lines

Original source pathPaper_IV_Verification_Closeout_v1.1.0/formalization/lean/KomorebiPaperIV/FullZeroCounting.lean
Skip declarations and read code

Skip source text

1 /-
2 Copyright (c) 2026 Komorebi P. All rights reserved.
3 Authors: Komorebi P.
4 -/
5 import KomorebiPaperIV.ZeroEnumeration
6 
7 namespace Komorebi.PaperIV
8 noncomputable section
9 open Set Metric
10 
11 def SignedZeroEnumeration.orbitDisk {N : ℕ} (e : SignedZeroEnumeration N) (R : ℝ) : Set ℂ :=
12   e.orbit '' (univ ×ˢ {m | e.root m ≤ R})
13 
14 def SignedZeroEnumeration.exceptions {N : ℕ} (e : SignedZeroEnumeration N) : Set ℂ :=
15   zeroDisk (canonicalSignedDenominator N) e.radius \ range e.orbit
16 
17 theorem SignedZeroEnumeration.exceptions_finite {N : ℕ} (hN : 0 < N) (e : SignedZeroEnumeration N) :
18     e.exceptions.Finite := (canonicalSignedDenominator_zeroDisk_finite hN e.radius).sdiff
19 
20 theorem SignedZeroEnumeration.orbitDisk_finite_card {N : ℕ} (hN : 2 ≤ N)
21     (e : SignedZeroEnumeration N) {R : ℝ} (hR : 0 ≤ R) :
22     (e.orbitDisk R).Finite ∧ (e.orbitDisk R).ncard = N * sequenceCounting e.root R := by
23   have hf := (lattice_window_counting (div_pos Real.pi_pos (signed_sine_pos hN)) e.shift e.root e.windows hR).1
24   refine ⟨(finite_univ.prod hf).image e.orbit, ?_⟩
25   rw [SignedZeroEnumeration.orbitDisk, ncard_image_of_injective _ (e.orbit_injective (by omega)), ncard_prod]
26   simp [sequenceCounting]
27 
28 theorem SignedZeroEnumeration.orbitDisk_subset {N : ℕ} (hN : 0 < N)
29     (e : SignedZeroEnumeration N) (R : ℝ) :
30     e.orbitDisk R ⊆ zeroDisk (canonicalSignedDenominator N) R := by
31   rintro z ⟨p, hp, rfl⟩
32   exact ⟨(e.orbit_norm hN p).trans_le hp.2, (e.orbit_zero_simple hN p).1⟩
33 
34 theorem SignedZeroEnumeration.zeroDisk_subset_union {N : ℕ} (hN : 0 < N)
35     (e : SignedZeroEnumeration N) (R : ℝ) :
36     zeroDisk (canonicalSignedDenominator N) R ⊆ e.orbitDisk R ∪ e.exceptions := by
37   classical
38   intro z hz
39   by_cases hr : z ∈ range e.orbit
40   · obtain ⟨p, rfl⟩ := hr
41     apply Or.inl
42     exact ⟨p, ⟨mem_univ _, by change e.root p.2 ≤ R; rw [← e.orbit_norm hN p]; exact hz.1⟩, rfl⟩
43   · apply Or.inr
44     refine ⟨⟨?_, hz.2⟩, hr⟩
45     by_contra hb
46     obtain ⟨k, m, he⟩ := e.exhaustive z (le_of_lt (lt_of_not_ge hb)) hz.2
47     exact hr ⟨(k, m), he.symm⟩
48 
49 theorem SignedZeroEnumeration.weighted_count_bounds {N : ℕ} (hN : 2 ≤ N)
50     (e : SignedZeroEnumeration N) {R : ℝ} (hR : 0 ≤ R) :
51     N * sequenceCounting e.root R ≤ analyticZeroCount (canonicalSignedDenominator N) R ∧
52       analyticZeroCount (canonicalSignedDenominator N) R ≤ N * sequenceCounting e.root R +
53         finiteWeight (analyticOrderNatAt (canonicalSignedDenominator N)) e.exceptions := by
54   obtain ⟨hT, hc⟩ := e.orbitDisk_finite_card hN hR
55   have hw : ∀ z ∈ e.orbitDisk R, analyticOrderNatAt (canonicalSignedDenominator N) z = 1 := by
56     rintro _ ⟨p, _, rfl⟩
57     exact (e.orbit_zero_simple (by omega) p).2
58   have h := finiteWeight_between_tail_and_exceptions (analyticOrderNatAt (canonicalSignedDenominator N))
59     (canonicalSignedDenominator_zeroDisk_finite (by omega) R) hT (e.exceptions_finite (by omega))
60     (e.orbitDisk_subset (by omega) R) (e.zeroDisk_subset_union (by omega) R) hw
61   rwa [hc] at h
62 
63 /-- The full denominator disk count, including every exceptional multiplicity. -/
64 theorem canonicalSignedDenominator_zero_counting {N : ℕ} (hN : 2 ≤ N) :
65     ∃ K : ℝ, 0 < K ∧ ∀ R : ℝ, 0 ≤ R →
66       |(analyticZeroCount (canonicalSignedDenominator N) R : ℝ) -
67         ((N : ℝ) * Real.sin (Real.pi / N) / Real.pi) * R| ≤ K := by
68   let e := canonicalZeroEnumeration hN
69   let W := finiteWeight (analyticOrderNatAt (canonicalSignedDenominator N)) e.exceptions
70   refine ⟨(W : ℝ) + N * ((e.shift : ℝ) + 2) + 1, by positivity, ?_⟩
71   intro R hR
72   have hw := e.weighted_count_bounds hN hR
73   have hl : (N : ℝ) * sequenceCounting e.root R ≤ analyticZeroCount (canonicalSignedDenominator N) R := by
74     exact_mod_cast hw.1
75   have hu : (analyticZeroCount (canonicalSignedDenominator N) R : ℝ) ≤
76       N * sequenceCounting e.root R + W := by exact_mod_cast hw.2
77   have hc := (lattice_window_counting (div_pos Real.pi_pos (signed_sine_pos hN))
78     e.shift e.root e.windows hR).2
79   rw [abs_le] at hc ⊢
80   have he : ((N : ℝ) * Real.sin (Real.pi / N) / Real.pi) * R =
81       N * (R / (Real.pi / Real.sin (Real.pi / N))) := by field_simp
82   rw [he]
83   have hn := Nat.cast_nonneg (α := ℝ) N
84   constructor <;> nlinarith
85 
86 end
87 end Komorebi.PaperIV

Back to source controls

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: 56c556c5b5bdacd17aebda0742ce7274aec4a738efc0514f2bb0a547b65157d7

Original source on GitHub

Back to Paper IV: Cyclic Analytic Functions, Reciprocal Families, and Spectral Zero Data