Next challenge
Some checks failed
Lean Action CI / build (push) Has been cancelled

This commit is contained in:
Stefan Kebekus
2026-03-16 06:57:02 +01:00
parent 0204554b17
commit fbe5000a26

View File

@@ -1,88 +1,23 @@
import Mathlib
open Complex ComplexConjugate Real
open Complex ComplexConjugate Metric Real
variable {R : } {w : }
variable {R : } {w p : }
/-!
## Blaschke Factors
noncomputable def herglotzRieszKernel (c w z : ) : :=
((z - c) + (w - c)) / ((z - c) - (w - c))
Given `R : ` and `w : `, the Blaschke factor `Blaschke R w : ` is
meromorphic in normal form, has a single pole at `w`, no zeros, and takes values
of norm one on the circle of radius `R`.
-/
lemma herglotzRieszKernel_def (c w z : ) :
herglotzRieszKernel c w z = ((z - c) + (w - c)) / ((z - c) - (w - c)) := by rfl
noncomputable def Blaschke (R : ) (w : ) : :=
fun z (R ^ 2 - (conj w) * z) / (R * (z - w))
lemma meromorphicOn_blaschke (R : ) (w : ) :
MeromorphicOn (Blaschke R w) Set.univ := by
intro x hx
unfold Blaschke
fun_prop
lemma analyticOnNhd_blaschke (R : ) (w : ) (h : 0 < R) :
AnalyticOnNhd (Blaschke R w) {w} := by
intro x hx
have : R * (x - w) 0 := mul_ne_zero (ne_zero_of_re_pos h) (sub_ne_zero_of_ne hx)
unfold Blaschke
fun_prop (disch := aesop)
lemma nonzero_blaschke {z : } (R : ) (w : ) (h : 0 < R) (hz : z w) (h₁ : w R) (h₂ : z R) :
Blaschke R w z 0 := by
-- Since $z \neq w$, the denominator $R(z - w)$ is non-zero. Also, from the given conditions, we know that $R^2 - \overline{w}z$ is not zero because if it were, then $\overline{w}z$ would equal $R^2$, which can't happen given the norms.
have h_denom_ne_zero : R * (z - w) 0 := by
exact mul_ne_zero ( Complex.ofReal_ne_zero.mpr h.ne' ) ( sub_ne_zero.mpr hz );
-- Since $z \neq w$, the denominator $R(z - w)$ is non-zero. Also, from the given conditions, we know that $R^2 - \overline{w}z$ is not zero because if it were, then $\overline{w}z$ would equal $R^2$, which can't happen given the norms. Hence, $Blaschke R w z \neq 0$.
have h_num_ne_zero : R^2 - (conj w) * z 0 := by
contrapose! h_denom_ne_zero; simp_all +decide [ Complex.ext_iff, sq ] ;
norm_num [ Complex.normSq, Complex.norm_def ] at *;
rw [ Real.sqrt_le_iff ] at *;
exact Or.inr by nlinarith [ sq_nonneg ( w.re - z.re ), sq_nonneg ( w.im - z.im ) ], by nlinarith [ sq_nonneg ( w.re - z.re ), sq_nonneg ( w.im - z.im ) ] ;
exact div_ne_zero h_num_ne_zero h_denom_ne_zero
lemma xx (R : ) (w : ) :
MeromorphicAt (Blaschke R w) w := meromorphicOn_blaschke R w w (Set.mem_univ w)
lemma order_blaschke (R : ) (w : ) (h : 0 < R) (h₂ : w R) :
(xx R w).order = -1 := by
unfold Blaschke
rw [MeromorphicAt.order_mul]
-- Use the theorem on dominated convergence to show the following formula for
-- integrals. Show that for ρ sufficiently close to R, the norm of the integrand
-- '((herglotzRieszKernel 0 w (circleMap 0 ρ θ)).re * Real.log ‖circleMap 0 ρ θ - w‖)'
-- is bounded by a constant times
-- '((herglotzRieszKernel 0 w (circleMap 0 R θ)).re * Real.log ‖circleMap 0 R θ - w‖)'
-- and this is integrable.
theorem test (hw : w < R) (hp : p = 1) :
ρ Set.Ioo w R,
θ : in (0)..2 * π, ((herglotzRieszKernel 0 w (circleMap 0 ρ θ)).re * Real.log circleMap 0 ρ θ - w) = 0
θ : in (0)..2 * π, ((herglotzRieszKernel 0 w (circleMap 0 R θ)).re * Real.log circleMap 0 R θ - w) = 0 := by
sorry
lemma meromorphicNFOn_blaschke (R : ) (w : ) (h : 0 < R) :
MeromorphicNFOn (Blaschke R w) Set.univ := by
intro z hz
unfold Blaschke
by_cases h₁ : z = w
· rw [meromorphicNFAt_iff_analyticAt_or]
right
use (meromorphicOn_blaschke R w z (Set.mem_univ z))
constructor
· simp_all only [Set.mem_univ, order_blaschke R w h]
exact sign_eq_neg_one_iff.mp rfl
simp_all
apply (analyticOnNhd_blaschke R w h z h₁).meromorphicNFAt
lemma blaschke_eval_center (R : ) (w : ) :
Blaschke R w w = 0 := by
simp [Blaschke]
lemma blaschke_eval_circle_ne {z : } (R : ) (w : ) (h : 0 < R) (h₂ : z = R) (h₃ : z w) :
Blaschke R w z = 1 := by
-- By definition of Blaschke factor, we have ‖Blaschke R w z‖ = ‖(R² - conj w * z) / (R * (z - w))‖.
simp [Blaschke];
rw [ div_eq_iff ] <;> simp_all +decide [ Complex.normSq, Complex.norm_def ];
· rw [ Real.sqrt_sq_eq_abs ];
rw [ Real.sqrt_mul <| by positivity ]
congr 1
norm_cast
rw [ h₂ ]
rw [ Real.sq_sqrt <| by nlinarith ]
ring;
· exact h.ne', ne_of_gt <| Real.sqrt_pos.mpr <| not_le.mp fun h' => h₃ <| by refine' Complex.ext _ _ <;> nlinarith
lemma log_blaschke_eval_circle {z : } (R : ) (w : ) (h : 0 < R) (h₂ : z = R) (h₃ : z w) :
Real.log Blaschke R w z = 0 := by
by_cases hz : z = w
all_goals simp_all [blaschke_eval_circle_ne]