2024-09-30 14:12:33 +02:00
|
|
|
|
import Mathlib.Analysis.SpecialFunctions.Integrals
|
|
|
|
|
import Mathlib.Analysis.SpecialFunctions.Log.NegMulLog
|
|
|
|
|
import Mathlib.Analysis.Convex.SpecificFunctions.Deriv
|
2024-09-14 08:38:04 +02:00
|
|
|
|
import Nevanlinna.analyticAt
|
2024-11-06 15:33:48 +01:00
|
|
|
|
import Nevanlinna.mathlibAddOn
|
2024-09-14 08:38:04 +02:00
|
|
|
|
|
2024-10-07 07:56:42 +02:00
|
|
|
|
open Interval Topology
|
2024-09-30 14:12:33 +02:00
|
|
|
|
open Real Filter MeasureTheory intervalIntegral
|
|
|
|
|
|
|
|
|
|
|
2024-10-07 07:56:42 +02:00
|
|
|
|
structure Divisor
|
|
|
|
|
(U : Set ℂ)
|
|
|
|
|
where
|
2024-09-14 08:38:04 +02:00
|
|
|
|
toFun : ℂ → ℤ
|
2024-10-07 07:56:42 +02:00
|
|
|
|
supportInU : toFun.support ⊆ U
|
2024-10-31 16:59:22 +01:00
|
|
|
|
locallyFiniteInU : ∀ x ∈ U, toFun =ᶠ[𝓝[≠] x] 0
|
2024-09-17 11:03:44 +02:00
|
|
|
|
|
2024-10-07 07:56:42 +02:00
|
|
|
|
instance
|
|
|
|
|
(U : Set ℂ) :
|
|
|
|
|
CoeFun (Divisor U) (fun _ ↦ ℂ → ℤ) where
|
|
|
|
|
coe := Divisor.toFun
|
2024-09-17 11:03:44 +02:00
|
|
|
|
|
2024-10-07 07:56:42 +02:00
|
|
|
|
attribute [coe] Divisor.toFun
|
2024-11-06 15:33:48 +01:00
|
|
|
|
|
|
|
|
|
|
2024-11-06 16:08:17 +01:00
|
|
|
|
theorem Divisor.discreteSupport
|
|
|
|
|
{U : Set ℂ}
|
|
|
|
|
(hU : IsClosed U)
|
|
|
|
|
(D : Divisor U) :
|
|
|
|
|
DiscreteTopology D.toFun.support := by
|
|
|
|
|
apply discreteTopology_subtype_iff.mpr
|
|
|
|
|
intro x hx
|
|
|
|
|
apply inf_principal_eq_bot.mpr
|
|
|
|
|
by_cases h₁x : x ∈ U
|
|
|
|
|
· let A := D.locallyFiniteInU x h₁x
|
|
|
|
|
refine mem_nhdsWithin.mpr ?_
|
|
|
|
|
rw [eventuallyEq_nhdsWithin_iff] at A
|
|
|
|
|
obtain ⟨U, h₁U, h₂U, h₃U⟩ := eventually_nhds_iff.1 A
|
|
|
|
|
use U
|
|
|
|
|
constructor
|
|
|
|
|
· exact h₂U
|
|
|
|
|
· constructor
|
|
|
|
|
· exact h₃U
|
|
|
|
|
· intro y hy
|
|
|
|
|
let C := h₁U y hy.1 hy.2
|
|
|
|
|
tauto
|
|
|
|
|
· refine mem_nhdsWithin.mpr ?_
|
|
|
|
|
use Uᶜ
|
|
|
|
|
constructor
|
|
|
|
|
· simpa
|
|
|
|
|
· constructor
|
|
|
|
|
· tauto
|
|
|
|
|
· intro y _
|
|
|
|
|
let A := D.supportInU
|
|
|
|
|
simp at A
|
|
|
|
|
simp
|
|
|
|
|
exact False.elim (h₁x (A x hx))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2024-11-06 15:33:48 +01:00
|
|
|
|
theorem Divisor.closedSupport
|
|
|
|
|
{U : Set ℂ}
|
|
|
|
|
(hU : IsClosed U)
|
|
|
|
|
(D : Divisor U) :
|
|
|
|
|
IsClosed D.toFun.support := by
|
|
|
|
|
|
|
|
|
|
rw [← isOpen_compl_iff]
|
|
|
|
|
rw [isOpen_iff_eventually]
|
|
|
|
|
intro x hx
|
|
|
|
|
by_cases h₁x : x ∈ U
|
|
|
|
|
· have A := D.locallyFiniteInU x h₁x
|
|
|
|
|
simp [A]
|
|
|
|
|
simp at hx
|
|
|
|
|
let B := Mnhds A hx
|
|
|
|
|
simpa
|
|
|
|
|
· rw [eventually_iff_exists_mem]
|
|
|
|
|
use Uᶜ
|
|
|
|
|
constructor
|
|
|
|
|
· exact IsClosed.compl_mem_nhds hU h₁x
|
|
|
|
|
· intro y hy
|
|
|
|
|
simp
|
|
|
|
|
exact Function.nmem_support.mp fun a => hy (D.supportInU a)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
theorem Divisor.finiteSupport
|
|
|
|
|
{U : Set ℂ}
|
|
|
|
|
(hU : IsCompact U)
|
|
|
|
|
(D : Divisor U) :
|
|
|
|
|
Set.Finite D.toFun.support := by
|
2024-11-06 16:15:27 +01:00
|
|
|
|
apply IsCompact.finite
|
|
|
|
|
· apply IsCompact.of_isClosed_subset hU (D.closedSupport hU.isClosed)
|
|
|
|
|
exact D.supportInU
|
|
|
|
|
· exact D.discreteSupport hU.isClosed
|