2024-12-05 16:53:48 +01:00
|
|
|
|
import Mathlib.MeasureTheory.Integral.CircleIntegral
|
2024-12-05 13:51:00 +01:00
|
|
|
|
import Nevanlinna.divisor
|
2024-12-05 16:53:48 +01:00
|
|
|
|
import Nevanlinna.stronglyMeromorphicOn
|
|
|
|
|
import Nevanlinna.meromorphicOn_divisor
|
2024-09-13 09:21:57 +02:00
|
|
|
|
|
|
|
|
|
open Real
|
|
|
|
|
|
|
|
|
|
|
2024-12-05 16:53:48 +01:00
|
|
|
|
-- Lang p. 164
|
2024-12-09 19:58:56 +01:00
|
|
|
|
|
|
|
|
|
theorem MeromorphicOn.restrict
|
|
|
|
|
{f : ℂ → ℂ}
|
|
|
|
|
(h₁f : MeromorphicOn f ⊤)
|
|
|
|
|
(r : ℝ) :
|
|
|
|
|
MeromorphicOn f (Metric.closedBall 0 r) := by
|
|
|
|
|
exact fun x a => h₁f x trivial
|
|
|
|
|
|
2024-12-05 16:53:48 +01:00
|
|
|
|
noncomputable def MeromorphicOn.N_zero
|
|
|
|
|
{f : ℂ → ℂ}
|
2024-12-09 19:58:56 +01:00
|
|
|
|
(hf : MeromorphicOn f ⊤) :
|
2024-12-05 16:53:48 +01:00
|
|
|
|
ℝ → ℝ :=
|
2024-12-09 19:58:56 +01:00
|
|
|
|
fun r ↦ ∑ᶠ z, (max 0 ((hf.restrict r).divisor z)) * log (r * ‖z‖⁻¹)
|
2024-12-05 16:53:48 +01:00
|
|
|
|
|
|
|
|
|
noncomputable def MeromorphicOn.N_infty
|
|
|
|
|
{f : ℂ → ℂ}
|
2024-12-09 19:58:56 +01:00
|
|
|
|
(hf : MeromorphicOn f ⊤) :
|
2024-12-05 16:53:48 +01:00
|
|
|
|
ℝ → ℝ :=
|
2024-12-09 19:58:56 +01:00
|
|
|
|
fun r ↦ ∑ᶠ z, (max 0 (-((hf.restrict r).divisor z))) * log (r * ‖z‖⁻¹)
|
2024-12-05 16:53:48 +01:00
|
|
|
|
|
|
|
|
|
theorem Nevanlinna_counting
|
|
|
|
|
{f : ℂ → ℂ}
|
2024-12-09 19:58:56 +01:00
|
|
|
|
(hf : MeromorphicOn f ⊤) :
|
|
|
|
|
hf.N_zero - hf.N_infty = fun r ↦ ∑ᶠ z, ((hf.restrict r).divisor z) * log (r * ‖z‖⁻¹) := by
|
2024-12-09 16:00:26 +01:00
|
|
|
|
|
|
|
|
|
funext r
|
|
|
|
|
simp only [Pi.sub_apply]
|
2024-12-09 19:58:56 +01:00
|
|
|
|
unfold MeromorphicOn.N_zero MeromorphicOn.N_infty
|
|
|
|
|
|
|
|
|
|
let A := (hf.restrict r).divisor.finiteSupport (isCompact_closedBall 0 r)
|
|
|
|
|
repeat
|
|
|
|
|
rw [finsum_eq_sum_of_support_subset (s := A.toFinset)]
|
|
|
|
|
rw [← Finset.sum_sub_distrib]
|
|
|
|
|
simp_rw [← sub_mul]
|
|
|
|
|
congr
|
|
|
|
|
funext x
|
|
|
|
|
congr
|
|
|
|
|
by_cases h : 0 ≤ (hf.restrict r).divisor x
|
|
|
|
|
· simp [h]
|
|
|
|
|
· have h' : 0 ≤ -((hf.restrict r).divisor x) := by
|
|
|
|
|
simp at h
|
|
|
|
|
apply Int.le_neg_of_le_neg
|
|
|
|
|
simp
|
|
|
|
|
exact Int.le_of_lt h
|
|
|
|
|
simp at h
|
|
|
|
|
simp [h']
|
|
|
|
|
linarith
|
|
|
|
|
--
|
|
|
|
|
repeat
|
|
|
|
|
intro x
|
|
|
|
|
contrapose
|
|
|
|
|
simp
|
|
|
|
|
intro hx
|
|
|
|
|
rw [hx]
|
|
|
|
|
tauto
|
2024-12-05 16:53:48 +01:00
|
|
|
|
|
2024-12-09 16:00:26 +01:00
|
|
|
|
noncomputable def logpos : ℝ → ℝ := fun r ↦ max 0 (log r)
|
2024-12-05 16:53:48 +01:00
|
|
|
|
|
2024-12-09 16:00:26 +01:00
|
|
|
|
theorem loglogpos {r : ℝ} : log r = logpos r - logpos r⁻¹ := by
|
2024-12-05 16:53:48 +01:00
|
|
|
|
unfold logpos
|
|
|
|
|
rw [log_inv]
|
|
|
|
|
by_cases h : 0 ≤ log r
|
|
|
|
|
· simp [h]
|
|
|
|
|
· simp at h
|
|
|
|
|
have : 0 ≤ -log r := Left.nonneg_neg_iff.2 (le_of_lt h)
|
|
|
|
|
simp [h, this]
|
|
|
|
|
exact neg_nonneg.mp this
|
2024-09-14 08:38:04 +02:00
|
|
|
|
|
2024-12-05 16:53:48 +01:00
|
|
|
|
--
|
|
|
|
|
|
|
|
|
|
noncomputable def MeromorphicOn.m_infty
|
|
|
|
|
{f : ℂ → ℂ}
|
2024-12-09 19:58:56 +01:00
|
|
|
|
(_ : MeromorphicOn f ⊤) :
|
2024-12-05 16:53:48 +01:00
|
|
|
|
ℝ → ℝ :=
|
|
|
|
|
fun r ↦ (2 * π)⁻¹ * ∫ x in (0)..(2 * π), logpos ‖f (circleMap 0 r x)‖
|
|
|
|
|
|
|
|
|
|
theorem Nevanlinna_proximity
|
|
|
|
|
{f : ℂ → ℂ}
|
|
|
|
|
{r : ℝ}
|
|
|
|
|
(h₁f : MeromorphicOn f ⊤) :
|
|
|
|
|
(2 * π)⁻¹ * ∫ x in (0)..(2 * π), log ‖f (circleMap 0 r x)‖ = (h₁f.m_infty r) - (h₁f.inv.m_infty r) := by
|
|
|
|
|
unfold MeromorphicOn.m_infty
|
|
|
|
|
rw [← mul_sub]; congr
|
|
|
|
|
rw [← intervalIntegral.integral_sub]; congr
|
|
|
|
|
funext x
|
|
|
|
|
simp_rw [loglogpos]; congr
|
|
|
|
|
exact Eq.symm (IsAbsoluteValue.abv_inv Norm.norm (f (circleMap 0 r x)))
|
|
|
|
|
--
|
|
|
|
|
sorry
|
|
|
|
|
|
|
|
|
|
noncomputable def MeromorphicOn.T_infty
|
|
|
|
|
{f : ℂ → ℂ}
|
|
|
|
|
(hf : MeromorphicOn f ⊤) :
|
2024-12-05 13:51:00 +01:00
|
|
|
|
ℝ → ℝ :=
|
2024-12-05 16:53:48 +01:00
|
|
|
|
hf.m_infty + hf.N_infty
|
|
|
|
|
|
|
|
|
|
theorem Nevanlinna_firstMain₁
|
|
|
|
|
{f : ℂ → ℂ}
|
|
|
|
|
(h₁f : MeromorphicOn f ⊤)
|
|
|
|
|
(h₂f : StronglyMeromorphicAt f 0)
|
|
|
|
|
(h₃f : f 0 ≠ 0) :
|
|
|
|
|
(fun r ↦ log ‖f 0‖) + h₁f.inv.T_infty = h₁f.T_infty := by
|
|
|
|
|
funext r
|
|
|
|
|
simp
|
|
|
|
|
unfold MeromorphicOn.T_infty
|
|
|
|
|
unfold MeromorphicOn.N_infty
|
|
|
|
|
unfold MeromorphicOn.m_infty
|
|
|
|
|
simp
|
|
|
|
|
|
|
|
|
|
sorry
|
|
|
|
|
|
|
|
|
|
theorem Nevanlinna_firstMain₂
|
|
|
|
|
{f : ℂ → ℂ}
|
|
|
|
|
{a : ℂ}
|
|
|
|
|
{r : ℝ}
|
|
|
|
|
(h₁f : MeromorphicOn f ⊤) :
|
|
|
|
|
|(h₁f.T_infty r) - ((h₁f.sub (MeromorphicOn.const a)).T_infty r)| ≤ logpos ‖a‖ + log 2 := by
|
|
|
|
|
sorry
|