Documentation

Mathlib.Analysis.Complex.ValueDistribution.CountingFunction

The Logarithmic Counting Function of Value Distribution Theory #

For nontrivially normed fields ๐•œ, this file defines the logarithmic counting function of a meromorphic function defined on ๐•œ. Also known as the Nevanlinna counting function, this is one of the three main functions used in Value Distribution Theory.

The logarithmic counting function of a meromorphic function f is a logarithmically weighted measure of the number of times the function f takes a given value a within the disk โˆฃzโˆฃ โ‰ค r, taking multiplicities into account.

See Section VI.1 of Lang, Introduction to Complex Hyperbolic Spaces or Section 1.1 of Noguchi-Winkelmann, Nevanlinna Theory in Several Complex Variables and Diophantine Approximation for a detailed discussion.

Implementation Notes #

TODO #

Supporting Notation #

Shorthand notation for the restriction of a function with locally finite support within Set.univ to the closed unit ball of radius r.

Equations
Instances For

    The Logarithmic Counting Function of a Function with Locally Finite Support #

    Definition of the logarithmic counting function, as a group morphism mapping functions D with locally finite support to maps โ„ โ†’ โ„. Given D, the result map logCounting D takes r : โ„ to a logarithmically weighted measure of values that D takes within the disk โˆฃzโˆฃ โ‰ค r.

    Implementation Note: In case where z = 0, the term log (r * โ€–zโ€–โปยน) evaluates to zero, which is typically different from log r - log โ€–zโ€– = log r. The summand (D 0) * log r compensates this, producing cleaner formulas when the logarithmic counting function is used in the main theorems of Value Distribution Theory. We refer the reader to page 164 of Lang: Introduction to Complex Hyperbolic Spaces for more details, and to the lemma countingFunction_finsum_eq_finsum_add in Mathlib/Analysis/Complex/JensenFormula.lean for a formal statement.

    Equations
    • One or more equations did not get rendered due to their size.
    Instances For
      @[simp]

      Evaluation of the logarithmic counting function at zero yields zero.

      For 1 โ‰ค r, the logarithmic counting function is non-negative.

      theorem Function.locallyFinsuppWithin.logCounting_le {E : Type u_2} [NormedAddCommGroup E] [ProperSpace E] {fโ‚ fโ‚‚ : locallyFinsuppWithin Set.univ โ„ค} {r : โ„} (h : fโ‚ โ‰ค fโ‚‚) (hr : 1 โ‰ค r) :
      logCounting fโ‚ r โ‰ค logCounting fโ‚‚ r

      For 1 โ‰ค r, the logarithmic counting function respects the โ‰ค relation.

      The logarithmic counting function respects the โ‰ค relation asymptotically.

      @[deprecated Function.locallyFinsuppWithin.logCounting_eventuallyLE (since := "2025-12-11")]

      Alias of Function.locallyFinsuppWithin.logCounting_eventuallyLE.


      The logarithmic counting function respects the โ‰ค relation asymptotically.

      The Logarithmic Counting Function of a Meromorphic Function #

      noncomputable def ValueDistribution.logCounting {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] [ProperSpace ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] (f : ๐•œ โ†’ E) (a : WithTop E) :

      The logarithmic counting function of a meromorphic function.

      If f : ๐•œ โ†’ E is meromorphic and a : WithTop E is any value, this is a logarithmically weighted measure of the number of times the function f takes a given value a within the disk โˆฃzโˆฃ โ‰ค r, taking multiplicities into account. In the special case where a = โŠค, it counts the poles of f.

      Equations
      • One or more equations did not get rendered due to their size.
      Instances For
        theorem ValueDistribution.logCounting_coe {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] [ProperSpace ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {f : ๐•œ โ†’ E} {aโ‚€ : E} :
        logCounting f โ†‘aโ‚€ = Function.locallyFinsuppWithin.logCounting (MeromorphicOn.divisor (fun (z : ๐•œ) => f z - aโ‚€) Set.univ)โบ

        For finite values aโ‚€, the logarithmic counting function logCounting f aโ‚€ is the logarithmic counting function for the zeros of f - aโ‚€.

        theorem ValueDistribution.logCounting_coe_eq_logCounting_sub_const_zero {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] [ProperSpace ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {f : ๐•œ โ†’ E} {aโ‚€ : E} :
        logCounting f โ†‘aโ‚€ = logCounting (f - fun (x : ๐•œ) => aโ‚€) 0

        For finite values aโ‚€, the logarithmic counting function logCounting f aโ‚€ equals the logarithmic counting function for the zeros of f - aโ‚€.

        The logarithmic counting function logCounting f 0 is the logarithmic counting function associated with the zero-divisor of f.

        The logarithmic counting function logCounting f โŠค is the logarithmic counting function associated with the pole-divisor of f.

        @[simp]
        theorem ValueDistribution.logCounting_eval_zero {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] [ProperSpace ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {f : ๐•œ โ†’ E} {a : WithTop E} :
        logCounting f a 0 = 0

        Evaluation of the logarithmic counting function at zero yields zero.

        The logarithmic counting function associated with the divisor of f is the difference between logCounting f 0 and logCounting f โŠค.

        @[simp]
        theorem ValueDistribution.logCounting_const {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] [ProperSpace ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {c : E} {e : WithTop E} :
        logCounting (fun (x : ๐•œ) => c) e = 0

        The logarithmic counting function of a constant function is zero.

        @[simp]
        theorem ValueDistribution.logCounting_const_zero {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] [ProperSpace ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {e : WithTop E} :

        The logarithmic counting function of the constant function zero is zero.

        Elementary Properties of the Logarithmic Counting Function #

        @[simp]
        theorem ValueDistribution.logCounting_inv {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] [ProperSpace ๐•œ] {f : ๐•œ โ†’ ๐•œ} :

        Relation between the logarithmic counting functions of f and of fโปยน.

        theorem ValueDistribution.logCounting_add_analyticOn {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] [ProperSpace ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {f g : ๐•œ โ†’ E} (hf : MeromorphicOn f Set.univ) (hg : AnalyticOn ๐•œ g Set.univ) :

        Adding an analytic function does not change the logarithmic counting function for the poles.

        @[simp]
        theorem ValueDistribution.logCounting_add_const {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] [ProperSpace ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {f : ๐•œ โ†’ E} {aโ‚€ : E} (hf : MeromorphicOn f Set.univ) :
        logCounting (f + fun (x : ๐•œ) => aโ‚€) โŠค = logCounting f โŠค

        Special case of logCounting_add_analyticOn: Adding a constant does not change the logarithmic counting function for the poles.

        @[simp]
        theorem ValueDistribution.logCounting_sub_const {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] [ProperSpace ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {f : ๐•œ โ†’ E} {aโ‚€ : E} (hf : MeromorphicOn f Set.univ) :
        logCounting (f - fun (x : ๐•œ) => aโ‚€) โŠค = logCounting f โŠค

        Special case of logCounting_add_analyticOn: Subtracting a constant does not change the logarithmic counting function for the poles.

        Behaviour under Arithmetic Operations #

        theorem ValueDistribution.logCounting_add_top_le {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] [ProperSpace ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {fโ‚ fโ‚‚ : ๐•œ โ†’ E} {r : โ„} (hโ‚fโ‚ : MeromorphicOn fโ‚ Set.univ) (hโ‚fโ‚‚ : MeromorphicOn fโ‚‚ Set.univ) (hr : 1 โ‰ค r) :
        logCounting (fโ‚ + fโ‚‚) โŠค r โ‰ค (logCounting fโ‚ โŠค + logCounting fโ‚‚ โŠค) r

        For 1 โ‰ค r, the logarithmic counting function for the poles of f + g is less than or equal to the sum of the logarithmic counting functions for the poles of f and g, respectively.

        theorem ValueDistribution.logCounting_add_top_eventuallyLE {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] [ProperSpace ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {fโ‚ fโ‚‚ : ๐•œ โ†’ E} (hโ‚fโ‚ : MeromorphicOn fโ‚ Set.univ) (hโ‚fโ‚‚ : MeromorphicOn fโ‚‚ Set.univ) :

        Asymptotically, the logarithmic counting function for the poles of f + g is less than or equal to the sum of the logarithmic counting functions for the poles of f and g, respectively.

        theorem ValueDistribution.logCounting_sum_top_le {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] [ProperSpace ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {ฮฑ : Type u_3} (s : Finset ฮฑ) (f : ฮฑ โ†’ ๐•œ โ†’ E) {r : โ„} (hโ‚f : โˆ€ (a : ฮฑ), MeromorphicOn (f a) Set.univ) (hr : 1 โ‰ค r) :
        logCounting (โˆ‘ a โˆˆ s, f a) โŠค r โ‰ค (โˆ‘ a โˆˆ s, logCounting (f a) โŠค) r

        For 1 โ‰ค r, the logarithmic counting function for the poles of a sum โˆ‘ a โˆˆ s, f a is less than or equal to the sum of the logarithmic counting functions for the poles of the f ยท.

        theorem ValueDistribution.logCounting_sum_top_eventuallyLE {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] [ProperSpace ๐•œ] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace ๐•œ E] {ฮฑ : Type u_3} (s : Finset ฮฑ) (f : ฮฑ โ†’ ๐•œ โ†’ E) (hโ‚f : โˆ€ (a : ฮฑ), MeromorphicOn (f a) Set.univ) :
        logCounting (โˆ‘ a โˆˆ s, f a) โŠค โ‰คแถ [Filter.atTop] โˆ‘ a โˆˆ s, logCounting (f a) โŠค

        Asymptotically, the logarithmic counting function for the poles of a sum โˆ‘ a โˆˆ s, f a is less than or equal to the sum of the logarithmic counting functions for the poles of the f ยท.

        theorem ValueDistribution.logCounting_mul_zero_le {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] [ProperSpace ๐•œ] {fโ‚ fโ‚‚ : ๐•œ โ†’ ๐•œ} {r : โ„} (hr : 1 โ‰ค r) (hโ‚fโ‚ : MeromorphicOn fโ‚ Set.univ) (hโ‚‚fโ‚ : โˆ€ (z : ๐•œ), meromorphicOrderAt fโ‚ z โ‰  โŠค) (hโ‚fโ‚‚ : MeromorphicOn fโ‚‚ Set.univ) (hโ‚‚fโ‚‚ : โˆ€ (z : ๐•œ), meromorphicOrderAt fโ‚‚ z โ‰  โŠค) :
        logCounting (fโ‚ * fโ‚‚) 0 r โ‰ค (logCounting fโ‚ 0 + logCounting fโ‚‚ 0) r

        For 1 โ‰ค r, the logarithmis counting function for the zeros of f * g is less than or equal to the sum of the logarithmic counting functions for the zeros of f and g, respectively.

        Note: The statement proven here is found at the top of page 169 of Lang: Introduction to Complex Hyperbolic Spaces where it is written as an inequality between functions. This could be interpreted as claiming that the inequality holds for ALL values of r, which is not true. For a counterexample, take fโ‚ : z โ†’ z and fโ‚‚ : z โ†’ zโปยน. Then,

        But log r is negative for small r.

        @[deprecated ValueDistribution.logCounting_mul_zero_le (since := "2025-12-11")]
        theorem ValueDistribution.logCounting_zero_mul_le {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] [ProperSpace ๐•œ] {fโ‚ fโ‚‚ : ๐•œ โ†’ ๐•œ} {r : โ„} (hr : 1 โ‰ค r) (hโ‚fโ‚ : MeromorphicOn fโ‚ Set.univ) (hโ‚‚fโ‚ : โˆ€ (z : ๐•œ), meromorphicOrderAt fโ‚ z โ‰  โŠค) (hโ‚fโ‚‚ : MeromorphicOn fโ‚‚ Set.univ) (hโ‚‚fโ‚‚ : โˆ€ (z : ๐•œ), meromorphicOrderAt fโ‚‚ z โ‰  โŠค) :
        logCounting (fโ‚ * fโ‚‚) 0 r โ‰ค (logCounting fโ‚ 0 + logCounting fโ‚‚ 0) r

        Alias of ValueDistribution.logCounting_mul_zero_le.


        For 1 โ‰ค r, the logarithmis counting function for the zeros of f * g is less than or equal to the sum of the logarithmic counting functions for the zeros of f and g, respectively.

        Note: The statement proven here is found at the top of page 169 of Lang: Introduction to Complex Hyperbolic Spaces where it is written as an inequality between functions. This could be interpreted as claiming that the inequality holds for ALL values of r, which is not true. For a counterexample, take fโ‚ : z โ†’ z and fโ‚‚ : z โ†’ zโปยน. Then,

        But log r is negative for small r.

        theorem ValueDistribution.logCounting_mul_zero_eventuallyLE {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] [ProperSpace ๐•œ] {fโ‚ fโ‚‚ : ๐•œ โ†’ ๐•œ} (hโ‚fโ‚ : MeromorphicOn fโ‚ Set.univ) (hโ‚‚fโ‚ : โˆ€ (z : ๐•œ), meromorphicOrderAt fโ‚ z โ‰  โŠค) (hโ‚fโ‚‚ : MeromorphicOn fโ‚‚ Set.univ) (hโ‚‚fโ‚‚ : โˆ€ (z : ๐•œ), meromorphicOrderAt fโ‚‚ z โ‰  โŠค) :
        logCounting (fโ‚ * fโ‚‚) 0 โ‰คแถ [Filter.atTop] logCounting fโ‚ 0 + logCounting fโ‚‚ 0

        Asymptotically, the logarithmic counting function for the zeros of f * g is less than or equal to the sum of the logarithmic counting functions for the zeros of f and g, respectively.

        @[deprecated ValueDistribution.logCounting_mul_zero_eventuallyLE (since := "2025-12-11")]
        theorem ValueDistribution.logCounting_zero_mul_eventually_le {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] [ProperSpace ๐•œ] {fโ‚ fโ‚‚ : ๐•œ โ†’ ๐•œ} (hโ‚fโ‚ : MeromorphicOn fโ‚ Set.univ) (hโ‚‚fโ‚ : โˆ€ (z : ๐•œ), meromorphicOrderAt fโ‚ z โ‰  โŠค) (hโ‚fโ‚‚ : MeromorphicOn fโ‚‚ Set.univ) (hโ‚‚fโ‚‚ : โˆ€ (z : ๐•œ), meromorphicOrderAt fโ‚‚ z โ‰  โŠค) :
        logCounting (fโ‚ * fโ‚‚) 0 โ‰คแถ [Filter.atTop] logCounting fโ‚ 0 + logCounting fโ‚‚ 0

        Alias of ValueDistribution.logCounting_mul_zero_eventuallyLE.


        Asymptotically, the logarithmic counting function for the zeros of f * g is less than or equal to the sum of the logarithmic counting functions for the zeros of f and g, respectively.

        theorem ValueDistribution.logCounting_mul_top_le {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] [ProperSpace ๐•œ] {fโ‚ fโ‚‚ : ๐•œ โ†’ ๐•œ} {r : โ„} (hr : 1 โ‰ค r) (hโ‚fโ‚ : MeromorphicOn fโ‚ Set.univ) (hโ‚‚fโ‚ : โˆ€ (z : ๐•œ), meromorphicOrderAt fโ‚ z โ‰  โŠค) (hโ‚fโ‚‚ : MeromorphicOn fโ‚‚ Set.univ) (hโ‚‚fโ‚‚ : โˆ€ (z : ๐•œ), meromorphicOrderAt fโ‚‚ z โ‰  โŠค) :
        logCounting (fโ‚ * fโ‚‚) โŠค r โ‰ค (logCounting fโ‚ โŠค + logCounting fโ‚‚ โŠค) r

        For 1 โ‰ค r, the logarithmic counting function for the poles of f * g is less than or equal to the sum of the logarithmic counting functions for the poles of f and g, respectively.

        @[deprecated ValueDistribution.logCounting_mul_top_le (since := "2025-12-11")]
        theorem ValueDistribution.logCounting_top_mul_le {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] [ProperSpace ๐•œ] {fโ‚ fโ‚‚ : ๐•œ โ†’ ๐•œ} {r : โ„} (hr : 1 โ‰ค r) (hโ‚fโ‚ : MeromorphicOn fโ‚ Set.univ) (hโ‚‚fโ‚ : โˆ€ (z : ๐•œ), meromorphicOrderAt fโ‚ z โ‰  โŠค) (hโ‚fโ‚‚ : MeromorphicOn fโ‚‚ Set.univ) (hโ‚‚fโ‚‚ : โˆ€ (z : ๐•œ), meromorphicOrderAt fโ‚‚ z โ‰  โŠค) :
        logCounting (fโ‚ * fโ‚‚) โŠค r โ‰ค (logCounting fโ‚ โŠค + logCounting fโ‚‚ โŠค) r

        Alias of ValueDistribution.logCounting_mul_top_le.


        For 1 โ‰ค r, the logarithmic counting function for the poles of f * g is less than or equal to the sum of the logarithmic counting functions for the poles of f and g, respectively.

        theorem ValueDistribution.logCounting_mul_top_eventuallyLE {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] [ProperSpace ๐•œ] {fโ‚ fโ‚‚ : ๐•œ โ†’ ๐•œ} (hโ‚fโ‚ : MeromorphicOn fโ‚ Set.univ) (hโ‚‚fโ‚ : โˆ€ (z : ๐•œ), meromorphicOrderAt fโ‚ z โ‰  โŠค) (hโ‚fโ‚‚ : MeromorphicOn fโ‚‚ Set.univ) (hโ‚‚fโ‚‚ : โˆ€ (z : ๐•œ), meromorphicOrderAt fโ‚‚ z โ‰  โŠค) :

        Asymptotically, the logarithmic counting function for the zeros of f * g is less than or equal to the sum of the logarithmic counting functions for the zeros of f and g, respectively.

        @[deprecated ValueDistribution.logCounting_mul_top_eventuallyLE (since := "2025-12-11")]
        theorem ValueDistribution.logCounting_top_mul_eventually_le {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] [ProperSpace ๐•œ] {fโ‚ fโ‚‚ : ๐•œ โ†’ ๐•œ} (hโ‚fโ‚ : MeromorphicOn fโ‚ Set.univ) (hโ‚‚fโ‚ : โˆ€ (z : ๐•œ), meromorphicOrderAt fโ‚ z โ‰  โŠค) (hโ‚fโ‚‚ : MeromorphicOn fโ‚‚ Set.univ) (hโ‚‚fโ‚‚ : โˆ€ (z : ๐•œ), meromorphicOrderAt fโ‚‚ z โ‰  โŠค) :

        Alias of ValueDistribution.logCounting_mul_top_eventuallyLE.


        Asymptotically, the logarithmic counting function for the zeros of f * g is less than or equal to the sum of the logarithmic counting functions for the zeros of f and g, respectively.

        @[simp]
        theorem ValueDistribution.logCounting_pow_zero {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] [ProperSpace ๐•œ] {f : ๐•œ โ†’ ๐•œ} {n : โ„•} (hf : MeromorphicOn f Set.univ) :

        For natural numbers n, the logarithmic counting function for the zeros of f ^ n equals n times the logarithmic counting function for the zeros of f.

        @[simp]
        theorem ValueDistribution.logCounting_pow_top {๐•œ : Type u_1} [NontriviallyNormedField ๐•œ] [ProperSpace ๐•œ] {f : ๐•œ โ†’ ๐•œ} {n : โ„•} (hf : MeromorphicOn f Set.univ) :

        For natural numbers n, the logarithmic counting function for the poles of f ^ n equals n times the logarithmic counting function for the poles of f.

        Representation by Integrals #

        For ๐•œ = โ„‚, the theorems below describe the logarithmic counting function in terms of circle averages.

        Over the complex numbers, present the logarithmic counting function attached to the divisor of a meromorphic function f as a circle average over log โ€–f ยทโ€–.

        This is a reformulation of Jensen's formula of complex analysis. See MeromorphicOn.circleAverage_log_norm for Jensen's formula in the original context.