Skip to content

Commit 1f467e3

Browse files
feat: first main theorem of value distribution theory (#30103)
Establish the first main theorem of value distribution theory in full. This PR completes a major milestone in [Project VD](https://github.com/kebekus/ProjectVD), which aims to formalize Value Distribution Theory for meromorphic functions on the complex plane. Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
1 parent 1dcc303 commit 1f467e3

File tree

2 files changed

+99
-12
lines changed

2 files changed

+99
-12
lines changed

Mathlib/Analysis/Complex/ValueDistribution/FirstMainTheorem.lean

Lines changed: 98 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ Copyright (c) 2025 Stefan Kebekus. All rights reserved.
33
Released under Apache 2.0 license as described in the file LICENSE.
44
Authors: Stefan Kebekus
55
-/
6+
import Mathlib.Analysis.Complex.JensenFormula
67
import Mathlib.Analysis.Complex.ValueDistribution.CharacteristicFunction
78

89
/-!
@@ -22,19 +23,99 @@ of the characteristic function `characteristic f ⊤` under modifications of `f`
2223
See Section VI.2 of [Lang, *Introduction to Complex Hyperbolic Spaces*][MR886677] or Section 1.1 of
2324
[Noguchi-Winkelmann, *Nevanlinna Theory in Several Complex Variables and Diophantine
2425
Approximation*][MR3156076] for a detailed discussion.
26+
-/
27+
namespace ValueDistribution
28+
29+
open Asymptotics Filter Function.locallyFinsuppWithin MeromorphicAt MeromorphicOn Metric Real
30+
31+
section FirstPart
2532

26-
### TODO
33+
variable {f : ℂ → ℂ} {R : ℝ}
2734

28-
- Formalize the first part of the First Main Theorem, which is the more substantial part of the
29-
statement.
35+
/-!
36+
## First Part of the First Main Theorem
3037
-/
31-
namespace ValueDistribution
38+
39+
/--
40+
Helper lemma for the first part of the First Main Theorem: Given a meromorphic function `f`, compute
41+
difference between the characteristic functions of `f` and of its inverse.
42+
-/
43+
lemma characteristic_sub_characteristic_inv (h : MeromorphicOn f ⊤) :
44+
characteristic f ⊤ - characteristic f⁻¹ ⊤ =
45+
circleAverage (log ‖f ·‖) 0 - (divisor f Set.univ).logCounting := by
46+
calc characteristic f ⊤ - characteristic f⁻¹ ⊤
47+
_ = proximity f ⊤ - proximity f⁻¹ ⊤ - (logCounting f⁻¹ ⊤ - logCounting f ⊤) := by
48+
unfold characteristic
49+
ring
50+
_ = circleAverage (log ‖f ·‖) 0 - (logCounting f⁻¹ ⊤ - logCounting f ⊤) := by
51+
rw [proximity_sub_proximity_inv_eq_circleAverage h]
52+
_ = circleAverage (log ‖f ·‖) 0 - (logCounting f 0 - logCounting f ⊤) := by
53+
rw [logCounting_inv]
54+
_ = circleAverage (log ‖f ·‖) 0 - (divisor f Set.univ).logCounting := by
55+
rw [← ValueDistribution.log_counting_zero_sub_logCounting_top]
56+
57+
/--
58+
Helper lemma for the first part of the First Main Theorem: Away from zero, the difference between
59+
the characteristic functions of `f` and `f⁻¹` equals `log ‖meromorphicTrailingCoeffAt f 0‖`.
60+
-/
61+
lemma characteristic_sub_characteristic_inv_of_ne_zero
62+
(hf : MeromorphicOn f Set.univ) (hR : R ≠ 0) :
63+
characteristic f ⊤ R - characteristic f⁻¹ ⊤ R = log ‖meromorphicTrailingCoeffAt f 0‖ := by
64+
calc characteristic f ⊤ R - characteristic f⁻¹ ⊤ R
65+
_ = (characteristic f ⊤ - characteristic f⁻¹ ⊤) R := by simp
66+
_ = circleAverage (log ‖f ·‖) 0 R - (divisor f Set.univ).logCounting R := by
67+
rw [characteristic_sub_characteristic_inv hf]
68+
rfl
69+
_ = log ‖meromorphicTrailingCoeffAt f 0‖ := by
70+
rw [MeromorphicOn.circleAverage_log_norm hR (hf.mono_set (by tauto))]
71+
unfold Function.locallyFinsuppWithin.logCounting
72+
have : (divisor f (closedBall 0 |R|)) = (divisor f Set.univ).toClosedBall R :=
73+
(divisor_restrict hf (by tauto)).symm
74+
simp [this, toClosedBall, restrictMonoidHom, restrict_apply]
75+
76+
/--
77+
Helper lemma for the first part of the First Main Theorem: At 0, the difference between the
78+
characteristic functions of `f` and `f⁻¹` equals `log ‖f 0‖`.
79+
-/
80+
lemma characteristic_sub_characteristic_inv_at_zero (h : MeromorphicOn f Set.univ) :
81+
characteristic f ⊤ 0 - characteristic f⁻¹ ⊤ 0 = log ‖f 0‖ := by
82+
calc characteristic f ⊤ 0 - characteristic f⁻¹ ⊤ 0
83+
_ = (characteristic f ⊤ - characteristic f⁻¹ ⊤) 0 := by simp
84+
_ = circleAverage (log ‖f ·‖) 0 0 - (divisor f Set.univ).logCounting 0 := by
85+
rw [ValueDistribution.characteristic_sub_characteristic_inv h]
86+
rfl
87+
_ = log ‖f 0‖ := by
88+
simp
89+
90+
/--
91+
First part of the First Main Theorem, quantitative version: If `f` is meromorphic on the complex
92+
plane, then the difference between the characteristic functions of `f` and `f⁻¹` is bounded by an
93+
explicit constant.
94+
-/
95+
theorem characteristic_sub_characteristic_inv_le (hf : MeromorphicOn f Set.univ) :
96+
|characteristic f ⊤ R - characteristic f⁻¹ ⊤ R|
97+
≤ max |log ‖f 0‖| |log ‖meromorphicTrailingCoeffAt f 0‖| := by
98+
by_cases h : R = 0
99+
· simp [h, characteristic_sub_characteristic_inv_at_zero hf]
100+
· simp [characteristic_sub_characteristic_inv_of_ne_zero hf h]
101+
102+
/--
103+
First part of the First Main Theorem, qualitative version: If `f` is meromorphic on the complex
104+
plane, then the characteristic functions of `f` and `f⁻¹` agree asymptotically up to a bounded
105+
function.
106+
-/
107+
theorem isBigO_characteristic_sub_characteristic_inv (h : MeromorphicOn f ⊤) :
108+
(characteristic f ⊤ - characteristic f⁻¹ ⊤) =O[atTop] (1 : ℝ → ℝ) :=
109+
isBigO_of_le' (c := max |log ‖f 0‖| |log ‖meromorphicTrailingCoeffAt f 0‖|) _
110+
(fun R ↦ by simpa using characteristic_sub_characteristic_inv_le h (R := R))
111+
112+
end FirstPart
113+
114+
section SecondPart
32115

33116
variable
34117
{E : Type*} [NormedAddCommGroup E] [NormedSpace ℂ E]
35-
{f : ℂ → E} {a₀ : E}
36-
37-
open Asymptotics Filter Real
118+
{a₀ : E} {f : ℂ → E}
38119

39120
/-!
40121
## Second Part of the First Main Theorem
@@ -74,10 +155,15 @@ Second part of the First Main Theorem of Value Distribution Theory, qualitative
74155
meromorphic on the complex plane, then the characteristic functions for the value `⊤` of the
75156
function `f` and `f - a₀` agree asymptotically up to a bounded function.
76157
-/
77-
theorem abs_characteristic_sub_characteristic_shift_eqO (h : MeromorphicOn f ⊤) :
78-
|characteristic f ⊤ - characteristic (f · - a₀) ⊤| =O[atTop] (1 : ℝ → ℝ) := by
79-
simp_rw [isBigO_iff', eventually_atTop]
80-
use log⁺ ‖a₀‖ + log 2, add_pos_of_nonneg_of_pos posLog_nonneg (log_pos one_lt_two), 0
81-
simp [abs_characteristic_sub_characteristic_shift_le h]
158+
theorem isBigO_characteristic_sub_characteristic_shift (h : MeromorphicOn f ⊤) :
159+
(characteristic f ⊤ - characteristic (f · - a₀) ⊤) =O[atTop] (1 : ℝ → ℝ) :=
160+
isBigO_of_le' (c := log⁺ ‖a₀‖ + log 2) _
161+
(fun R ↦ by simpa using abs_characteristic_sub_characteristic_shift_le h)
162+
163+
@[deprecated (since := "2025-10-06")]
164+
alias abs_characteristic_sub_characteristic_shift_eqO :=
165+
isBigO_characteristic_sub_characteristic_shift
166+
167+
end SecondPart
82168

83169
end ValueDistribution

docs/overview.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -362,6 +362,7 @@ Analysis:
362362
removable singularity: 'Complex.differentiableOn_update_limUnder_insert_of_isLittleO'
363363
Phragmen-Lindelöf principle: 'PhragmenLindelof.horizontal_strip'
364364
fundamental theorem of algebra: 'Complex.isAlgClosed'
365+
First Main Theorem of Value Distribution Theory: 'ValueDistribution.characteristic_sub_characteristic_inv_le'
365366

366367
Distribution theory:
367368
Schwartz space: 'SchwartzMap'

0 commit comments

Comments
 (0)