Working…

This commit is contained in:
Stefan Kebekus 2024-12-16 17:17:43 +01:00
parent 12397c3055
commit 309724de36
5 changed files with 163 additions and 35 deletions

View File

@ -0,0 +1,11 @@
import Mathlib.Topology.DiscreteSubset
theorem codiscreteWithin_congr
{X : Type u_1} [TopologicalSpace X]
{S T U : Set X}
(hST : S ∩ U = T ∩ U) :
S ∈ Filter.codiscreteWithin U ↔ T ∈ Filter.codiscreteWithin U := by
repeat rw [mem_codiscreteWithin]
rw [← Set.diff_inter_self_eq_diff (t := S)]
rw [← Set.diff_inter_self_eq_diff (t := T)]
rw [hST]

View File

@ -107,40 +107,79 @@ theorem MeromorphicOn.clopen_of_order_eq_top
theorem MeromorphicOn.order_ne_top'
{f : }
{U : Set }
(hU : IsConnected U)
(h₁f : MeromorphicOn f U)
(h₂f : ∃ u : U, (h₁f u u.2).order ≠ ) :
∀ u : U, (h₁f u u.2).order ≠ := by
(hU : IsConnected U) :
(∃ u : U, (h₁f u u.2).order ≠ ) ↔ (∀ u : U, (h₁f u u.2).order ≠ ) := by
let A := h₁f.clopen_of_order_eq_top
have : PreconnectedSpace U := by
apply isPreconnected_iff_preconnectedSpace.mp
exact IsConnected.isPreconnected hU
rw [isClopen_iff] at A
rcases A with h|h
· intro u
have : u ∉ (∅ : Set U) := by exact fun a => a
rw [← h] at this
simp at this
tauto
· obtain ⟨u, hU⟩ := h₂f
have A : u ∈ Set.univ := by trivial
rw [← h] at A
simp at A
tauto
constructor
· intro h₂f
let A := h₁f.clopen_of_order_eq_top
have : PreconnectedSpace U := by
apply isPreconnected_iff_preconnectedSpace.mp
exact IsConnected.isPreconnected hU
rw [isClopen_iff] at A
rcases A with h|h
· intro u
have : u ∉ (∅ : Set U) := by exact fun a => a
rw [← h] at this
simp at this
tauto
· obtain ⟨u, hU⟩ := h₂f
have A : u ∈ Set.univ := by trivial
rw [← h] at A
simp at A
tauto
· intro h₂f
let A := hU.nonempty
obtain ⟨v, hv⟩ := A
use ⟨v, hv⟩
exact h₂f ⟨v, hv⟩
theorem MeromorphicOn.order_ne_top
theorem StronglyMeromorphicOn.order_ne_top
{f : }
{U : Set }
(hU : IsConnected U)
(h₁f : StronglyMeromorphicOn f U)
(hU : IsConnected U)
(h₂f : ∃ u : U, f u ≠ 0) :
∀ u : U, (h₁f u u.2).meromorphicAt.order ≠ := by
apply MeromorphicOn.order_ne_top' hU h₁f.meromorphicOn
rw [← h₁f.meromorphicOn.order_ne_top' hU]
obtain ⟨u, hu⟩ := h₂f
use u
rw [← (h₁f u u.2).order_eq_zero_iff] at hu
rw [hu]
simp
theorem MeromorphicOn.nonvanish_of_order_ne_top
{f : }
{U : Set }
(h₁f : MeromorphicOn f U)
(h₂f : ∃ u : U, (h₁f u u.2).order ≠ )
(h₁U : IsConnected U)
(h₂U : interior U ≠ ∅) :
∃ u ∈ U, f u ≠ 0 := by
by_contra hCon
push_neg at hCon
have : ∃ u : U, (h₁f u u.2).order = := by
obtain ⟨v, h₁v⟩ := Set.nonempty_iff_ne_empty'.2 h₂U
have h₂v : v ∈ U := by apply interior_subset h₁v
use ⟨v, h₂v⟩
rw [MeromorphicAt.order_eq_top_iff]
rw [eventually_nhdsWithin_iff]
rw [eventually_nhds_iff]
use interior U
constructor
· intro y h₁y h₂y
exact hCon y (interior_subset h₁y)
· simp [h₁v]
let A := h₁f.order_ne_top' h₁U
rw [← not_iff_not] at A
push_neg at A
have B := A.2 this
obtain ⟨u, hu⟩ := h₂f
tauto

View File

@ -163,6 +163,8 @@ theorem MeromorphicOn.divisor_of_makeStronglyMeromorphicOn
-- STRONGLY MEROMORPHIC THINGS
/- Strongly MeromorphicOn of non-negative order is analytic -/
theorem StronglyMeromorphicOn.analyticOnNhd
{f : }
@ -188,16 +190,16 @@ theorem StronglyMeromorphicOn.analyticOnNhd
theorem StronglyMeromorphicOn.support_divisor
{f : }
{U : Set }
(hU : IsConnected U)
(h₁f : StronglyMeromorphicOn f U)
(h₂f : ∃ u : U, f u ≠ 0) :
(h₂f : ∃ u : U, f u ≠ 0)
(hU : IsConnected U) :
U ∩ f⁻¹' {0} = (Function.support h₁f.meromorphicOn.divisor) := by
ext u
constructor
· intro hu
unfold MeromorphicOn.divisor
simp [MeromorphicOn.order_ne_top hU h₁f h₂f ⟨u, hu.1⟩]
simp [h₁f.order_ne_top hU h₂f ⟨u, hu.1⟩]
use hu.1
rw [(h₁f u hu.1).order_eq_zero_iff]
simp

View File

@ -6,6 +6,7 @@ import Nevanlinna.divisor
import Nevanlinna.meromorphicAt
import Nevanlinna.meromorphicOn_divisor
import Nevanlinna.stronglyMeromorphicOn
import Nevanlinna.stronglyMeromorphicOn_eliminate
import Nevanlinna.mathlibAddOn
open scoped Interval Topology
@ -42,7 +43,7 @@ theorem d
theorem integrability_congr_changeDiscrete₀
{f₁ f₂ : }
{f₁ f₂ : }
{U : Set }
{r : }
(hU : Metric.sphere 0 |r| ⊆ U)
@ -68,10 +69,10 @@ theorem integrability_congr_changeDiscrete₀
theorem integrability_congr_changeDiscrete
{f₁ f₂ : }
{f₁ f₂ : }
{U : Set }
{r : }
(hU : Metric.sphere 0 |r| ⊆ U)
(hU : Metric.sphere (0 : ) |r| ⊆ U)
(hf : f₁ =ᶠ[Filter.codiscreteWithin U] f₂) :
IntervalIntegrable (f₁ ∘ (circleMap 0 r)) MeasureTheory.volume 0 (2 * π) ↔ IntervalIntegrable (f₂ ∘ (circleMap 0 r)) MeasureTheory.volume 0 (2 * π) := by
@ -81,7 +82,7 @@ theorem integrability_congr_changeDiscrete
theorem integral_congr_changeDiscrete
{f₁ f₂ : }
{f₁ f₂ : }
{U : Set }
{r : }
(hr : r ≠ 0)
@ -95,3 +96,28 @@ theorem integral_congr_changeDiscrete
constructor
· apply Set.Countable.measure_zero (d hr hU hf)
· tauto
theorem MeromorphicOn.integrable_log_abs_f
{f : }
{r : }
(hr : 0 < r)
(h₁f : MeromorphicOn f (Metric.closedBall (0 : ) r))
(h₂f : ∃ u : (Metric.closedBall (0 : ) r), (h₁f u u.2).order ≠ ) :
IntervalIntegrable (fun z ↦ log ‖f (circleMap 0 r z)‖) MeasureTheory.volume 0 (2 * π) := by
have h₁U : IsCompact (Metric.closedBall (0 : ) r) := by sorry
have h₂U : IsConnected (Metric.closedBall (0 : ) r) := by sorry
have h₃U : interior (Metric.closedBall (0 : ) r) ≠ ∅ := by sorry
obtain ⟨g, h₁g, h₂g, h₃g⟩ := MeromorphicOn.decompose_log h₁U h₂U h₃U h₁f h₂f
have : (fun z ↦ log ‖f (circleMap 0 r z)‖) = (fun z ↦ log ‖f z‖) ∘ (circleMap 0 r) := by
rfl
rw [this]
have : Metric.sphere (0 : ) |r| ⊆ Metric.closedBall (0 : ) r := by
sorry
rw [integrability_congr_changeDiscrete this h₃g]
apply IntervalIntegrable.add
sorry
sorry

View File

@ -1,5 +1,6 @@
import Mathlib.Analysis.Analytic.Meromorphic
import Nevanlinna.analyticAt
import Nevanlinna.codiscreteWithin
import Nevanlinna.divisor
import Nevanlinna.meromorphicAt
import Nevanlinna.meromorphicOn
@ -293,7 +294,6 @@ theorem MeromorphicOn.decompose₂
simpa
theorem MeromorphicOn.decompose₃'
{f : }
{U : Set }
@ -306,7 +306,8 @@ theorem MeromorphicOn.decompose₃'
∧ (∀ u : U, g u ≠ 0)
∧ (f = g * ∏ᶠ u, fun z ↦ (z - u) ^ (h₁f.meromorphicOn.divisor u)) := by
have h₃f : ∀ u : U, (h₁f u u.2).meromorphicAt.order ≠ := MeromorphicOn.order_ne_top h₂U h₁f h₂f
have h₃f : ∀ u : U, (h₁f u u.2).meromorphicAt.order ≠ :=
StronglyMeromorphicOn.order_ne_top h₁f h₂U h₂f
have h₄f : Set.Finite (Function.support h₁f.meromorphicOn.divisor) := h₁f.meromorphicOn.divisor.finiteSupport h₁U
let d := - h₁f.meromorphicOn.divisor.toFun
@ -492,8 +493,7 @@ theorem MeromorphicOn.decompose₃'
tauto
theorem MeromorphicOn.decompose_log
theorem StronglyMeromorphicOn.decompose_log
{f : }
{U : Set }
(h₁U : IsCompact U)
@ -529,8 +529,15 @@ theorem MeromorphicOn.decompose_log
rw [Filter.eventuallyEq_iff_exists_mem]
use {z | f z ≠ 0}
constructor
·
sorry
· have A := h₁f.meromorphicOn.divisor.codiscreteWithin
have : {z | f z ≠ 0} ∩ U = (Function.support h₁f.meromorphicOn.divisor)ᶜ ∩ U := by
rw [← h₁f.support_divisor h₂f h₂U]
ext u
simp; tauto
rw [codiscreteWithin_congr this]
exact A
· intro z hz
nth_rw 1 [h₄g]
simp
@ -588,3 +595,46 @@ theorem MeromorphicOn.decompose_log
let c := b.1
simp_rw [hCon] at c
tauto
exact 0
theorem MeromorphicOn.decompose_log
{f : }
{U : Set }
(h₁U : IsCompact U)
(h₂U : IsConnected U)
(h₃U : interior U ≠ ∅)
(h₁f : MeromorphicOn f U)
(h₂f : ∃ u : U, (h₁f u u.2).order ≠ ) :
∃ g : , (AnalyticOnNhd g U)
∧ (∀ u : U, g u ≠ 0)
∧ (fun z ↦ log ‖f z‖) =ᶠ[Filter.codiscreteWithin U] fun z ↦ log ‖g z‖ + ∑ᶠ s, (h₁f.divisor s) * log ‖z - s‖ := by
let F := h₁f.makeStronglyMeromorphicOn
have h₁F := stronglyMeromorphicOn_of_makeStronglyMeromorphicOn h₁f
have h₂F : ∃ u : U, (h₁F.meromorphicOn u u.2).order ≠ := by
obtain ⟨u, hu⟩ := h₂f
use u
rw [makeStronglyMeromorphicOn_changeOrder h₁f u.2]
assumption
have t₁ : ∃ u : U, F u ≠ 0 := by
let A := h₁F.meromorphicOn.nonvanish_of_order_ne_top h₂F h₂U h₃U
tauto
have t₃ : (fun z ↦ log ‖f z‖) =ᶠ[Filter.codiscreteWithin U] (fun z ↦ log ‖F z‖) := by
-- This would be interesting for a tactic
rw [eventuallyEq_iff_exists_mem]
obtain ⟨s, h₁s, h₂s⟩ := eventuallyEq_iff_exists_mem.1 (makeStronglyMeromorphicOn_changeDiscrete'' h₁f)
use s
tauto
obtain ⟨g, h₁g, h₂g, h₃g, h₄g⟩ := h₁F.decompose_log h₁U h₂U t₁
use g
constructor
· exact h₂g
· constructor
· exact h₃g
· apply t₃.trans
rw [h₁f.divisor_of_makeStronglyMeromorphicOn]
exact h₄g