Documentation

LeanPool.LeanModularForms.GeneralizedResidueTheory.Residue.Flatness

Flatness and Higher-Order Pole Conditions (Definition 3.2) #

Flatness of curves at crossing points and conditions (A)/(B) for the generalized residue theorem with higher-order poles.

Main Definitions #

Main Results #

Reference: Hungerbuhler-Wasem, arXiv:1808.00997v2, Definition 3.2.

Orthogonal projection in C (viewed as R^2) #

noncomputable def orthogonalProjectionComplex (w L : ) :

The orthogonal projection of w onto the real line spanned by L in C, where C is viewed as R^2. This computes (Re(w * conj L) / ||L||^2) * L.

Equations
Instances For
    noncomputable def tangentDeviation (w L : ) :

    The tangent deviation: the component of w orthogonal to L.

    Equations
    Instances For

      Projection onto a nonzero direction L gives a real multiple of L.

      Projection of a real scalar multiple of L onto L is itself.

      theorem tangentDeviation_real_smul_self (c : ) (L : ) (hL : L 0) :

      Tangent deviation of a real scalar multiple of L vanishes.

      theorem tangentDeviation_add (w₁ w₂ L : ) :

      Tangent deviation is additive in the first argument.

      Norm bound: ‖tangentDeviation w L‖ ≤ 2 * ‖w‖ for L ≠ 0.

      Flatness of order n (Definition 3.2) #

      A piecewise C^1 curve gamma is flat of order n at a parameter t_0 if the orthogonal deviation from the tangent line at gamma(t_0) is o(||gamma(t) - gamma(t_0)||^n) as t -> t_0, where the tangent line is determined by the one-sided derivative limits.

      structure IsFlatOfOrder (γ : ) (t₀ : ) (n : ) :

      A curve gamma is flat of order n at parameter t_0 if:

      • From the right: the deviation from the right tangent is o(||gamma(t) - gamma(t_0)||^n)
      • From the left: the deviation from the left tangent is o(||gamma(t) - gamma(t_0)||^n)

      This captures Definition 3.2 from Hungerbuhler-Wasem: the curve stays within o(|Gamma(x) - z_1|^n) of the tangent lines at the crossing point z_1.

      Instances For
        theorem IsFlatOfOrder.of_le {γ : } {t₀ : } {m n : } (h : IsFlatOfOrder γ t₀ m) (hmn : n m) (hγ_cont : ContinuousAt γ t₀) :
        IsFlatOfOrder γ t₀ n

        Flatness of order m implies flatness of order n for n <= m. The key point is that o(||w||^m) implies o(||w||^n) when n <= m and ||w|| -> 0.

        Flatness of order 1 is automatic #

        Every piecewise C^1 immersion is flat of order 1 at every point. This is because the derivative approximation gamma(t) - gamma(t_0) ~ gamma'(t_0)(t - t_0) ensures the curve direction is asymptotically aligned with the tangent.

        theorem tangentDeviation_isLittleO_of_hasDerivAt (γ : ) (t₀ : ) (L : ) (hL : L 0) ( : HasDerivAt γ L t₀) :
        (fun (t : ) => tangentDeviation (γ t - γ t₀) L) =o[nhds t₀] fun (t : ) => γ t - γ t₀ ^ 1

        Key lemma: if gamma has derivative L at t_0, then the tangent deviation of gamma(t) - gamma(t_0) from L is o(||gamma(t) - gamma(t_0)||) as t -> t_0. This is the essential content of flatness of order 1.

        The argument: gamma(t) - gamma(t_0) = (t - t_0) * L + o(t - t_0), so the deviation from L is exactly the remainder term, which is o(t - t_0). Meanwhile ||gamma(t) - gamma(t_0)|| >= (||L||/2)|t - t_0| eventually, giving o(t - t_0) = o(||gamma(t) - gamma(t_0)||).

        theorem tangentDeviation_isLittleO_right (γ : ) (t₀ : ) (L : ) (hL : L 0) (hγ_right : Filter.Tendsto (deriv γ) (nhdsWithin t₀ (Set.Ioi t₀)) (nhds L)) (hγ_cont : ContinuousAt γ t₀) (hγ_diff : ∀ᶠ (t : ) in nhdsWithin t₀ (Set.Ioi t₀), DifferentiableAt γ t) :
        (fun (t : ) => tangentDeviation (γ t - γ t₀) L) =o[nhdsWithin t₀ (Set.Ioi t₀)] fun (t : ) => γ t - γ t₀ ^ 1

        Tangent deviation from right derivative limit is o(||gamma(t) - gamma(t_0)||) as t -> t_0+. This is the right-sided version needed for flatness of order 1.

        theorem tangentDeviation_isLittleO_left (γ : ) (t₀ : ) (L : ) (hL : L 0) (hγ_left : Filter.Tendsto (deriv γ) (nhdsWithin t₀ (Set.Iio t₀)) (nhds L)) (hγ_cont : ContinuousAt γ t₀) (hγ_diff : ∀ᶠ (t : ) in nhdsWithin t₀ (Set.Iio t₀), DifferentiableAt γ t) :
        (fun (t : ) => tangentDeviation (γ t - γ t₀) L) =o[nhdsWithin t₀ (Set.Iio t₀)] fun (t : ) => γ t - γ t₀ ^ 1

        Tangent deviation from left derivative limit is o(||gamma(t) - gamma(t_0)||) as t -> t_0-. This is the left-sided version needed for flatness of order 1.

        theorem isFlatOfOrder_one (γ : PiecewiseC1Immersion) (t₀ : ) (ht₀ : t₀ Set.Ioo γ.a γ.b) :

        Every piecewise C^1 immersion is flat of order 1 at any interior point. This is because the first-order Taylor approximation gamma(t) - gamma(t_0) ~ L*(t-t_0) lies exactly on the tangent line, so the deviation is the remainder o(t-t_0) = o(||gamma(t)-gamma(t_0)||).

        Pole order #

        noncomputable def poleOrderAt (f : ) (x : ) :

        The pole order of a meromorphic function at a point, as a natural number. Returns 0 if f is analytic at x (including the case where f is identically zero near x). Returns n if f has a pole of order n (i.e., meromorphicOrderAt f x = -n).

        Equations
        Instances For

          Condition (A): Flatness condition for higher-order poles #

          Condition (A) from Hungerbuhler-Wasem: if z_0 is a pole of order n of f on the curve, then the curve is flat of order n at z_0.

          More precisely: for each singular point s in S_0 and each parameter t_0 where gamma(t_0) = s, if f has a pole of order n at s, then gamma must be flat of order n at t_0.

          For the current formalization, which focuses on simple poles, this is stated using HasSimplePoleAt. The condition is that the curve is flat of order 1 at each crossing, which is automatic (see isFlatOfOrder_one).

          Equations
          Instances For
            def SatisfiesConditionA' (γ : PiecewiseC1Immersion) (S0 : Finset ) (poleOrder : ) :

            Condition (A) for a specific pole order function. Given a function assigning pole orders to singular points, the curve must be flat of the corresponding order at each crossing.

            Equations
            Instances For

              Condition (B): Angle/Laurent compatibility #

              structure SatisfiesConditionB (γ : PiecewiseC1Immersion) (f : ) (S0 : Finset ) :

              Condition (B) from Hungerbuhler-Wasem (Theorem 3.3): at each crossing point, the angle α is a rational multiple of π, and the Laurent coefficients of f satisfy angle compatibility.

              Concretely: if f has a pole of order N at s, then near s we can write f(z) = Res(f,s)/(z-s) + Σ_{k=2}^{N} cₖ/(z-s)^k + g(z) where g is analytic. Condition (B) requires that for each k ≥ 2 with cₖ ≠ 0, the angle α at the crossing satisfies (k-1) · α ∈ 2πℤ. This ensures PV ∮ dz/(z-s)^k = 0 on the model sector curve (equation 3.4 in the paper).

              • angle_rational (s : ) : s S0t₀Set.Icc γ.a γ.b, γ.toFun t₀ = s∀ (ht₀_Ioo : t₀ Set.Ioo γ.a γ.b), ∃ (p : ) (q : ), q 0 p.Coprime q angleAtCrossing γ t₀ ht₀_Ioo = p * Real.pi / q

                The angle at each crossing point on the curve is a rational multiple of π.

              • laurent_compatible (s : ) : s S0t₀Set.Icc γ.a γ.b, γ.toFun t₀ = s∀ (ht₀_Ioo : t₀ Set.Ioo γ.a γ.b), ∃ (N : ) (a : Fin N) (g : ), AnalyticAt g s (∀ᶠ (z : ) in nhdsWithin s {s}, f z = g z + k : Fin N, a k / (z - s) ^ (k + 1)) ∀ (k : Fin N), a k 0k 1∃ (m : ), k * angleAtCrossing γ t₀ ht₀_Ioo = m * (2 * Real.pi)

                Laurent coefficient compatibility: there exists a Laurent decomposition of f near each pole s into f(z) = Σ_{k=1}^{N} aₖ/(z-s)^k + g(z) where g is analytic, and each nonzero coefficient aₖ with k ≥ 2 satisfies (k-1)·α ∈ 2πℤ. This ensures PV ∮ aₖ/(z-s)^k dz = 0 on the model sector.

                For simple poles (N = 0 higher-order terms), this is vacuously true.

              Instances For

                Conditions are automatic for simple poles #

                For simple poles (order 1), both conditions are automatically satisfied:

                theorem satisfiesConditionA_of_simple_poles (γ : PiecewiseC1Immersion) (f : ) (S0 : Finset ) (_hSimplePoles : sS0, HasSimplePoleAt f s) :

                Condition (A) is automatically satisfied when all poles are simple, because every piecewise C^1 curve is flat of order 1.

                theorem satisfiesConditionB_of_simple_poles (γ : PiecewiseC1Immersion) (f : ) (S0 : Finset ) (_hSimplePoles : sS0, HasSimplePoleAt f s) (hAngles : sS0, t₀Set.Icc γ.a γ.b, γ.toFun t₀ = s∀ (ht₀_Ioo : t₀ Set.Ioo γ.a γ.b), t₀ γ.partition∃ (p : ) (q : ), q 0 p.Coprime q angleAtCrossing γ t₀ ht₀_Ioo = p * Real.pi / q) :

                Condition (B) for simple poles requires angle rationality at corner crossings as an explicit hypothesis. The Laurent coefficient condition is vacuously true (the only singular term is k = 1), so any q works; but the angle itself must be expressible as pπ/q. At smooth crossings the angle is π = 1·π/1, so this is automatic. At corner crossings, the angle depends on the curve geometry and is not guaranteed to be rational without additional assumptions.

                Note: For simple poles, the main theorem (Proposition 2.2 / generalizedResidueTheorem') does NOT require condition (B). This lemma is only needed when using the higher-order theorem (Theorem 3.3) with simple poles.

                theorem conditions_automatic_simple_poles (γ : PiecewiseC1Immersion) (f : ) (S0 : Finset ) (hSimplePoles : sS0, HasSimplePoleAt f s) (hAngles : sS0, t₀Set.Icc γ.a γ.b, γ.toFun t₀ = s∀ (ht₀_Ioo : t₀ Set.Ioo γ.a γ.b), t₀ γ.partition∃ (p : ) (q : ), q 0 p.Coprime q angleAtCrossing γ t₀ ht₀_Ioo = p * Real.pi / q) :

                Both conditions (A) and (B) are satisfied for simple poles, provided corner crossing angles are rational multiples of π. Condition (A) is fully automatic; condition (B) requires the angle hypothesis only at corners.

                Note: For simple poles, one should typically use generalizedResidueTheorem' (Proposition 2.2) which requires neither condition.