The Jordan curve theorem to Wolff's lemma…

TheoremThe Jordan curve theorem#

The complement of a Jordan curve in the plane has exactly two connected components: by TauCeti.IsJordanCurve.connectedComponentIn_eq_filledHull_sdiff_or_compl they are its inside filledHull C \ C and its unbounded outside (filledHull C)ᶜ.

TauCeti.IsJordanCurve.natCard_connectedComponents_compl_eq_two {C : Set ℂ}
  (hC : TauCeti.IsJordanCurve C) : Nat.card (ConnectedComponents ↑Cᶜ) = 2
Lean

Formalized in Tau Ceti as TauCeti.IsJordanCurve.natCard_connectedComponents_compl_eq_two.

Other forms

The Jordan curve theorem on the Riemann sphere. Formalized in Tau Ceti as TauCeti.IsJordanCurve.natCard_zerothHomotopy_compl_eq_two_onePoint.

TauCeti.IsJordanCurve.natCard_zerothHomotopy_compl_eq_two_onePoint {J : Set (OnePoint ℂ)}
  (hJ : TauCeti.IsJordanCurve J) : Nat.card (ZerothHomotopy ↑Jᶜ) = 2
Sources
Uses 2 · Used by 2

TheoremThe monodromy theorem#

Let h be a homotopy rel endpoints between two paths from z₀ to z₁ in ℂ, and suppose a germ at z₀ continues along every path h (t, ·) of the homotopy, all the continuations starting from that one germ. Then they all end at one and the same germ at z₁: the result of the continuation depends on the path only through its homotopy class.

This is the rel-endpoints case of TauCeti.monodromy_theorem_of_free_homotopy, whose homotopy is allowed to move the endpoints and whose conclusion is correspondingly a continuation along the path the terminal point sweeps out rather than a single germ at z₁.

TauCeti.monodromy_theorem.{u_1} {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℂ E]
  [CompleteSpace E] {z₀ z₁ : ℂ} {p₀ p₁ : Path z₀ z₁} (h : p₀.Homotopy p₁)
  {f : ↑unitInterval → ↑unitInterval → ℂ → E}
  (hf :
    ∀ (t : ↑unitInterval), TauCeti.IsAnalyticContinuationAlong (f t) (fun x => h (t, x)) Set.univ)
  (hstart : ∀ (t : ↑unitInterval), f t 0 =ᶠ[nhds z₀] f 0 0) (t : ↑unitInterval) :
  f t 1 =ᶠ[nhds z₁] f 0 1
Lean

Formalized in Tau Ceti as TauCeti.monodromy_theorem.

Other forms

The monodromy theorem, in two-way form. Formalized in Tau Ceti as TauCeti.continuesInside_iff_exists_analyticOnNhd.

TauCeti.continuesInside_iff_exists_analyticOnNhd.{u_1} {E : Type u_1} [NormedAddCommGroup E]
  [NormedSpace ℂ E] [CompleteSpace E] {U : Set ℂ} {z₀ : ℂ} {f₀ : ℂ → E} (hUo : IsOpen U)
  (hUc : IsSimplyConnected U) (hz₀ : z₀ ∈ U) :
  TauCeti.ContinuesInside f₀ U z₀ ↔ ∃ F, AnalyticOnNhd ℂ F U ∧ F =ᶠ[nhds z₀] f₀
Sources
Uses 2

TheoremThe monodromy theorem for a free homotopy of paths#

Let h be a continuous map of the square, read as a family of paths h (t, ·) whose endpoints are allowed to move, and suppose a family of germs continues along each of those paths. If the initial germs — the germ of f t 0 at h (t, 0) — themselves continue along the initial edge t ↦ h (t, 0), then the terminal germs continue along the terminal edge t ↦ h (t, 1).

This is the monodromy theorem in the form the deck-group and covering-space consumers need: the continuation of a germ across a homotopy is itself a continuation, along the path the far endpoint sweeps out. Nothing is assumed rel endpoints; TauCeti.monodromy_theorem is the special case in which both edges are constant, where "continues along a constant path" degenerates to "carries one germ throughout".

TauCeti.monodromy_theorem_of_free_homotopy.{u_1} {E : Type u_1} [NormedAddCommGroup E]
  [NormedSpace ℂ E] [CompleteSpace E] {h : ↑unitInterval × ↑unitInterval → ℂ} (hh : Continuous h)
  {f : ↑unitInterval → ↑unitInterval → ℂ → E}
  (hf :
    ∀ (t : ↑unitInterval), TauCeti.IsAnalyticContinuationAlong (f t) (fun x => h (t, x)) Set.univ)
  (hstart : TauCeti.IsAnalyticContinuationAlong (fun t => f t 0) (fun t => h (t, 0)) Set.univ) :
  TauCeti.IsAnalyticContinuationAlong (fun t => f t 1) (fun t => h (t, 1)) Set.univ
Used by 1

TheoremThe monodromy theorem for a simply connected domain#

A germ that continues along every path of a simply connected open set U issuing from z₀ is the germ at z₀ of a single function analytic on all of U.

So on a simply connected domain analytic continuation produces no new branches, and a "multi-valued analytic function" there is single-valued after all.

TauCeti.ContinuesInside.exists_analyticOnNhd.{u_1} {E : Type u_1} [NormedAddCommGroup E]
  [NormedSpace ℂ E] [CompleteSpace E] {U : Set ℂ} {z₀ : ℂ} {f₀ : ℂ → E} (hUo : IsOpen U)
  (hUc : IsSimplyConnected U) (hz₀ : z₀ ∈ U) (H : TauCeti.ContinuesInside f₀ U z₀) :
  ∃ F, AnalyticOnNhd ℂ F U ∧ F =ᶠ[nhds z₀] f₀
Used by 1

TheoremMorera's theorem#

A continuous function with values in a complex Banach space, defined on an open set of ℂ and conservative there (its integrals over the boundaries of rectangles in the set vanish), is complex differentiable on that set.

TauCeti.morera.{u_1} {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℂ E] [CompleteSpace E]
  {U : Set ℂ} {f : ℂ → E} (hU : IsOpen U) (hcont : ContinuousOn f U)
  (hcons : Complex.IsConservativeOn f U) : DifferentiableOn ℂ f U

TheoremPoincaré defect identity (norm form)#

The difference of the squared norms of the Moebius denominator and numerator factors is the product of the two hyperbolic defects: ‖1 - conj w * z‖ ^ 2 - ‖z - w‖ ^ 2 = (1 - ‖z‖ ^ 2) * (1 - ‖w‖ ^ 2).

TauCeti.norm_sq_one_sub_conj_mul_sub_norm_sq_sub (z w : ℂ) :
  ‖1 - (starRingEnd ℂ) w * z‖ ^ 2 - ‖z - w‖ ^ 2 = (1 - ‖z‖ ^ 2) * (1 - ‖w‖ ^ 2)
Used by 1

TheoremRouché's theorem for a disc, classical form#

If f and g are holomorphic on the closed disc closedBall c R and ‖f z - g z‖ < ‖f z‖ at every point z of the bounding circle, then f and g have the same number of zeros in ball c R, each counted with multiplicity.

This is the special case of TauCeti.rouche_symm obtained by discarding the nonnegative summand ‖g z‖ from the symmetric hypothesis.

TauCeti.rouche {f g : ℂ → ℂ} {c : ℂ} {R : ℝ} (hf : AnalyticOnNhd ℂ f (Metric.closedBall c R))
  (hg : AnalyticOnNhd ℂ g (Metric.closedBall c R))
  (hs : ∀ z ∈ Metric.sphere c R, ‖f z - g z‖ < ‖f z‖) :
  ∑ᶠ (z : ℂ) (_ : z ∈ Metric.ball c R), analyticOrderNatAt f z =
    ∑ᶠ (z : ℂ) (_ : z ∈ Metric.ball c R), analyticOrderNatAt g z
Lean

Formalized in Tau Ceti as TauCeti.rouche.

Other forms

Rouché's theorem, in the additive phrasing of most textbooks. Formalized in Tau Ceti as TauCeti.rouche_add.

TauCeti.rouche_add {f g : ℂ → ℂ} {c : ℂ} {R : ℝ} (hf : AnalyticOnNhd ℂ f (Metric.closedBall c R))
  (hg : AnalyticOnNhd ℂ g (Metric.closedBall c R)) (hs : ∀ z ∈ Metric.sphere c R, ‖g z‖ < ‖f z‖) :
  ∑ᶠ (z : ℂ) (_ : z ∈ Metric.ball c R), analyticOrderNatAt f z =
    ∑ᶠ (z : ℂ) (_ : z ∈ Metric.ball c R), analyticOrderNatAt (fun w => f w + g w) z

Rouché's theorem as a zero-detection principle, additive form. Formalized in Tau Ceti as TauCeti.rouche_add_exists_eq_zero_iff.

TauCeti.rouche_add_exists_eq_zero_iff {f g : ℂ → ℂ} {c : ℂ} {R : ℝ}
  (hf : AnalyticOnNhd ℂ f (Metric.closedBall c R)) (hg : AnalyticOnNhd ℂ g (Metric.closedBall c R))
  (hs : ∀ z ∈ Metric.sphere c R, ‖g z‖ < ‖f z‖) :
  (∃ z ∈ Metric.ball c R, f z = 0) ↔ ∃ z ∈ Metric.ball c R, f z + g z = 0

Rouché's theorem as a zero-detection principle, classical form. Formalized in Tau Ceti as TauCeti.rouche_exists_eq_zero_iff.

TauCeti.rouche_exists_eq_zero_iff {f g : ℂ → ℂ} {c : ℂ} {R : ℝ}
  (hf : AnalyticOnNhd ℂ f (Metric.closedBall c R)) (hg : AnalyticOnNhd ℂ g (Metric.closedBall c R))
  (hs : ∀ z ∈ Metric.sphere c R, ‖f z - g z‖ < ‖f z‖) :
  (∃ z ∈ Metric.ball c R, f z = 0) ↔ ∃ z ∈ Metric.ball c R, g z = 0

Rouché's theorem as a zero-detection principle, symmetric form. Formalized in Tau Ceti as TauCeti.rouche_symm_exists_eq_zero_iff.

TauCeti.rouche_symm_exists_eq_zero_iff {f g : ℂ → ℂ} {c : ℂ} {R : ℝ}
  (hf : AnalyticOnNhd ℂ f (Metric.closedBall c R)) (hg : AnalyticOnNhd ℂ g (Metric.closedBall c R))
  (hs : ∀ z ∈ Metric.sphere c R, ‖f z - g z‖ < ‖f z‖ + ‖g z‖) :
  (∃ z ∈ Metric.ball c R, f z = 0) ↔ ∃ z ∈ Metric.ball c R, g z = 0

Rouché's theorem as an equality of image winding numbers, classical form. Formalized in Tau Ceti as TauCeti.rouche_windingNumber_comp.

TauCeti.rouche_windingNumber_comp {f g : ℂ → ℂ} {γ : ℝ → ℂ} {a b : ℝ}
  (hγ : TauCeti.IsPiecewiseC1On γ a b) (hclosed : γ a = γ b)
  (hfa : ∀ t ∈ Set.uIcc a b, AnalyticAt ℂ f (γ t)) (hga : ∀ t ∈ Set.uIcc a b, AnalyticAt ℂ g (γ t))
  (hs : ∀ t ∈ Set.uIcc a b, ‖f (γ t) - g (γ t)‖ < ‖f (γ t)‖) :
  TauCeti.Contour.windingNumber (f ∘ γ) a b 0 = TauCeti.Contour.windingNumber (g ∘ γ) a b 0

Rouché's theorem as an equality of image winding numbers, additive form. Formalized in Tau Ceti as TauCeti.rouche_add_windingNumber_comp.

TauCeti.rouche_add_windingNumber_comp {f g : ℂ → ℂ} {γ : ℝ → ℂ} {a b : ℝ}
  (hγ : TauCeti.IsPiecewiseC1On γ a b) (hclosed : γ a = γ b)
  (hfa : ∀ t ∈ Set.uIcc a b, AnalyticAt ℂ f (γ t)) (hga : ∀ t ∈ Set.uIcc a b, AnalyticAt ℂ g (γ t))
  (hs : ∀ t ∈ Set.uIcc a b, ‖g (γ t)‖ < ‖f (γ t)‖) :
  TauCeti.Contour.windingNumber (f ∘ γ) a b 0 =
    TauCeti.Contour.windingNumber ((fun w => f w + g w) ∘ γ) a b 0

Rouché's theorem as an equality of image winding numbers, symmetric form — the "dog on a leash" statement. Formalized in Tau Ceti as TauCeti.rouche_symm_windingNumber_comp.

TauCeti.rouche_symm_windingNumber_comp {f g : ℂ → ℂ} {γ : ℝ → ℂ} {a b : ℝ}
  (hγ : TauCeti.IsPiecewiseC1On γ a b) (hclosed : γ a = γ b)
  (hfa : ∀ t ∈ Set.uIcc a b, AnalyticAt ℂ f (γ t)) (hga : ∀ t ∈ Set.uIcc a b, AnalyticAt ℂ g (γ t))
  (hs : ∀ t ∈ Set.uIcc a b, ‖f (γ t) - g (γ t)‖ < ‖f (γ t)‖ + ‖g (γ t)‖) :
  TauCeti.Contour.windingNumber (f ∘ γ) a b 0 = TauCeti.Contour.windingNumber (g ∘ γ) a b 0

Rouché's theorem for a null-homologous cycle, additive form. Formalized in Tau Ceti as TauCeti.rouche_add_nullHomologous.

TauCeti.rouche_add_nullHomologous {f g : ℂ → ℂ} {U : Set ℂ} {S : Finset ℂ} {γ : ℝ → ℂ} {a b : ℝ}
  (hU : IsOpen U) (hf : AnalyticOnNhd ℂ f U) (hg : AnalyticOnNhd ℂ g U)
  (hfS : ∀ z ∈ U, f z = 0 → z ∈ S) (hsumS : ∀ z ∈ U, f z + g z = 0 → z ∈ S)
  (hγ : TauCeti.IsPiecewiseC1On γ a b) (hγU : ∀ t ∈ Set.uIcc a b, γ t ∈ U) (hclosed : γ a = γ b)
  (hnull : TauCeti.Contour.IsNullHomologous γ a b U)
  (hs : ∀ t ∈ Set.uIcc a b, ‖g (γ t)‖ < ‖f (γ t)‖) :
  ∑ z ∈ S, TauCeti.Contour.windingNumber γ a b z * ↑(analyticOrderNatAt f z) =
    ∑ z ∈ S, TauCeti.Contour.windingNumber γ a b z * ↑(analyticOrderNatAt (fun w => f w + g w) z)

Rouché's theorem for a null-homologous cycle, classical form. Formalized in Tau Ceti as TauCeti.rouche_nullHomologous.

TauCeti.rouche_nullHomologous {f g : ℂ → ℂ} {U : Set ℂ} {S : Finset ℂ} {γ : ℝ → ℂ} {a b : ℝ}
  (hU : IsOpen U) (hf : AnalyticOnNhd ℂ f U) (hg : AnalyticOnNhd ℂ g U)
  (hfS : ∀ z ∈ U, f z = 0 → z ∈ S) (hgS : ∀ z ∈ U, g z = 0 → z ∈ S)
  (hγ : TauCeti.IsPiecewiseC1On γ a b) (hγU : ∀ t ∈ Set.uIcc a b, γ t ∈ U) (hclosed : γ a = γ b)
  (hnull : TauCeti.Contour.IsNullHomologous γ a b U)
  (hs : ∀ t ∈ Set.uIcc a b, ‖f (γ t) - g (γ t)‖ < ‖f (γ t)‖) :
  ∑ z ∈ S, TauCeti.Contour.windingNumber γ a b z * ↑(analyticOrderNatAt f z) =
    ∑ z ∈ S, TauCeti.Contour.windingNumber γ a b z * ↑(analyticOrderNatAt g z)

Rouché's theorem for a null-homologous cycle, holomorphic form. Formalized in Tau Ceti as TauCeti.rouche_symm_nullHomologous_of_analyticOnNhd.

TauCeti.rouche_symm_nullHomologous_of_analyticOnNhd {f g : ℂ → ℂ} {U : Set ℂ} {S : Finset ℂ}
  {γ : ℝ → ℂ} {a b : ℝ} (hU : IsOpen U) (hf : AnalyticOnNhd ℂ f U) (hg : AnalyticOnNhd ℂ g U)
  (hfS : ∀ z ∈ U, f z = 0 → z ∈ S) (hgS : ∀ z ∈ U, g z = 0 → z ∈ S)
  (hγ : TauCeti.IsPiecewiseC1On γ a b) (hγU : ∀ t ∈ Set.uIcc a b, γ t ∈ U) (hclosed : γ a = γ b)
  (hnull : TauCeti.Contour.IsNullHomologous γ a b U)
  (hs : ∀ t ∈ Set.uIcc a b, ‖f (γ t) - g (γ t)‖ < ‖f (γ t)‖ + ‖g (γ t)‖) :
  ∑ z ∈ S, TauCeti.Contour.windingNumber γ a b z * ↑(analyticOrderNatAt f z) =
    ∑ z ∈ S, TauCeti.Contour.windingNumber γ a b z * ↑(analyticOrderNatAt g z)

Rouché's theorem for a null-homologous cycle, symmetric form (Estermann). Formalized in Tau Ceti as TauCeti.rouche_symm_nullHomologous.

TauCeti.rouche_symm_nullHomologous {f g : ℂ → ℂ} {U : Set ℂ} {S : Finset ℂ} {γ : ℝ → ℂ} {a b : ℝ}
  {ordf ordg : ℂ → ℤ} (hU : IsOpen U) (hfoff : ∀ z ∈ U, z ∉ S → AnalyticAt ℂ f z ∧ f z ≠ 0)
  (hgoff : ∀ z ∈ U, z ∉ S → AnalyticAt ℂ g z ∧ g z ≠ 0)
  (hfmero : ∀ s ∈ S, s ∈ U → MeromorphicAt f s) (hgmero : ∀ s ∈ S, s ∈ U → MeromorphicAt g s)
  (hford : ∀ s ∈ S, s ∈ U → meromorphicOrderAt f s = ↑(ordf s))
  (hgord : ∀ s ∈ S, s ∈ U → meromorphicOrderAt g s = ↑(ordg s)) (hγ : TauCeti.IsPiecewiseC1On γ a b)
  (hγU : ∀ t ∈ Set.uIcc a b, γ t ∈ U) (hclosed : γ a = γ b) (hγoff : ∀ t ∈ Set.uIcc a b, γ t ∉ ↑S)
  (hnull : TauCeti.Contour.IsNullHomologous γ a b U)
  (hs : ∀ t ∈ Set.uIcc a b, ‖f (γ t) - g (γ t)‖ < ‖f (γ t)‖ + ‖g (γ t)‖) :
  ∑ z ∈ S, TauCeti.Contour.windingNumber γ a b z * ↑(ordf z) =
    ∑ z ∈ S, TauCeti.Contour.windingNumber γ a b z * ↑(ordg z)

Rouché's theorem, symmetric form (Estermann). Formalized in Tau Ceti as TauCeti.rouche_symm.

TauCeti.rouche_symm {f g : ℂ → ℂ} {c : ℂ} {R : ℝ} (hf : AnalyticOnNhd ℂ f (Metric.closedBall c R))
  (hg : AnalyticOnNhd ℂ g (Metric.closedBall c R))
  (hs : ∀ z ∈ Metric.sphere c R, ‖f z - g z‖ < ‖f z‖ + ‖g z‖) :
  ∑ᶠ (z : ℂ) (_ : z ∈ Metric.ball c R), analyticOrderNatAt f z =
    ∑ᶠ (z : ℂ) (_ : z ∈ Metric.ball c R), analyticOrderNatAt g z
Sources
Uses 3 · Used by 18

TheoremThe Schwarz--Christoffel formula#

Let f be holomorphic with nonvanishing derivative on the upper half-plane. Assume that away from the distinct real prevertices a i its boundary values run along affine lines with the upper half-plane on one side, and that each a i is carried to a vertex of one of four kinds: * a finite vertex: f opens the sector of angle (e i + 1) * π at f (a i), with boundary values on the two bounding rays, where -1 < e i < 1; * a vertex at infinity of opening β * π with 0 < β < 2, where e i = -β - 1: the inverted map b / (f - c) extends across a i with value 0, opens the sector of angle β * π there, and has its other boundary values on the two bounding rays; * a vertex at infinity between two parallel sides, where e i = -1: the exponential exp ((f - c) / b) extends across a i with value 0, injectively, with real boundary values and upper half-plane values above the axis; * a vertex at infinity of opening 2 * π, where e i = -3: f is continuous and injective on the closed upper half-disc about a i with a i removed, tends to infinity at a i, and far out the image of the open upper half-disc is the exterior of the closed half-strip {0 ≤ re ((w - c) / b), 0 ≤ im ((w - c) / b) ≤ π}.

Assume finally that z * f''(z) / f'(z) has a finite limit as z tends to infinity in the upper half-plane. Then throughout the upper half-plane

f z = (f'(z₀) / integrand(z₀)) * F z + f z₀,

where F is the normalized Schwarz--Christoffel primitive for the data a and e. So f is an affine image of F, and the two constants are read off from the value and derivative of f at the normalization point z₀.

TauCeti.eqOn_const_mul_schwarzChristoffelPrimitive_add_of_polygonal_boundary.{u_1} {ι : Type u_1}
  [Fintype ι] (a e : ι → ℝ) (ha : Function.Injective a) (z₀ : UpperHalfPlane) {f : ℂ → ℂ}
  (hf : DifferentiableOn ℂ f UpperHalfPlane.upperHalfPlaneSet)
  (hfn : ∀ z ∈ UpperHalfPlane.upperHalfPlaneSet, deriv f z ≠ 0)
  (hside :
    ∀ (x : ℝ),
      (∀ (i : ι), a i ≠ x) →
        ∃ r > 0,
          ∃ q b,
            b ≠ 0 ∧
              ContinuousOn f (Metric.ball (↑x) r ∩ {z | 0 ≤ z.im}) ∧
                Set.InjOn f (Metric.ball (↑x) r ∩ {z | 0 ≤ z.im}) ∧
                  (∀ z ∈ Metric.ball (↑x) r, z.im = 0 → ((f z - q) / b).im = 0) ∧
                    ∀ z ∈ Metric.ball (↑x) r, 0 < z.im → 0 < ((f z - q) / b).im)
  (hvertex :
    ∀ (i : ι),
      (e i ∈ Set.Ioo (-1) 1 ∧
          ∃ r > 0,
            ∃ b,
              b ≠ 0 ∧
                ContinuousOn f (Metric.ball (↑(a i)) r ∩ {z | 0 ≤ z.im}) ∧
                  Set.InjOn f (Metric.ball (↑(a i)) r ∩ {z | 0 ≤ z.im}) ∧
                    (∀ z ∈ Metric.ball (↑(a i)) r,
                        0 < z.im → |((f z - f ↑(a i)) / b).arg| < (e i + 1) * Real.pi / 2) ∧
                      ∀ z ∈ Metric.ball (↑(a i)) r,
                        z.im = 0 →
                          f z ≠ f ↑(a i) → |((f z - f ↑(a i)) / b).arg| = (e i + 1) * Real.pi / 2) ∨
        (e i ∈ Set.Ioo (-3) (-1) ∧
            ∃ r > 0,
              ∃ c b,
                b ≠ 0 ∧
                  ∃ g,
                    Set.EqOn g (fun z => b / (f z - c)) (Metric.ball (↑(a i)) r ∩ {z | 0 < z.im}) ∧
                      g ↑(a i) = 0 ∧
                        ContinuousOn g (Metric.ball (↑(a i)) r ∩ {z | 0 ≤ z.im}) ∧
                          Set.InjOn g (Metric.ball (↑(a i)) r ∩ {z | 0 ≤ z.im}) ∧
                            (∀ z ∈ Metric.ball (↑(a i)) r,
                                0 < z.im → |(g z).arg| < (-e i - 1) * Real.pi / 2) ∧
                              ∀ z ∈ Metric.ball (↑(a i)) r,
                                z.im = 0 → g z ≠ 0 → |(g z).arg| = (-e i - 1) * Real.pi / 2) ∨
          (e i = -1 ∧
              ∃ r > 0,
                ∃ c b,
                  b ≠ 0 ∧
                    ∃ g,
                      Set.EqOn g (fun z => Complex.exp ((f z - c) / b))
                          (Metric.ball (↑(a i)) r ∩ {z | 0 < z.im}) ∧
                        g ↑(a i) = 0 ∧
                          ContinuousOn g (Metric.ball (↑(a i)) r ∩ {z | 0 ≤ z.im}) ∧
                            (∀ z ∈ Metric.ball (↑(a i)) r, z.im = 0 → (g z).im = 0) ∧
                              Set.MapsTo g (Metric.ball (↑(a i)) r ∩ {z | 0 < z.im})
                                  {z | 0 < z.im} ∧
                                Set.InjOn g (Metric.ball (↑(a i)) r ∩ {z | 0 ≤ z.im})) ∨
            e i = -3 ∧
              ∃ r > 0,
                ∃ ρ c b,
                  b ≠ 0 ∧
                    ContinuousOn f ((Metric.closedBall (↑(a i)) r ∩ {z | 0 ≤ z.im}) \ {↑(a i)}) ∧
                      Set.InjOn f ((Metric.closedBall (↑(a i)) r ∩ {z | 0 ≤ z.im}) \ {↑(a i)}) ∧
                        Filter.Tendsto f (nhdsWithin (↑(a i)) ({z | 0 ≤ z.im} \ {↑(a i)}))
                            (Bornology.cobounded ℂ) ∧
                          ∀ (w : ℂ),
                            ρ < ‖w - c‖ →
                              (w ∈
                                  f '' (Metric.ball (↑(a i)) r ∩ UpperHalfPlane.upperHalfPlaneSet) ↔
                                ((w - c) / b).re < 0 ∨ ((w - c) / b).im ∉ Set.Icc 0 Real.pi))
  {L : ℂ}
  (hinfty :
    Filter.Tendsto (fun z => z * logDeriv (deriv f) z)
      (Bornology.cobounded ℂ ⊓ Filter.principal UpperHalfPlane.upperHalfPlaneSet) (nhds L)) :
  Set.EqOn f
    (fun z =>
      deriv f ↑z₀ / TauCeti.schwarzChristoffelIntegrand a e ↑z₀ *
          TauCeti.schwarzChristoffelPrimitive a e z₀ z +
        f ↑z₀)
    UpperHalfPlane.upperHalfPlaneSet
Lean

Formalized in Tau Ceti as TauCeti.eqOn_const_mul_schwarzChristoffelPrimitive_add_of_polygonal_boundary.

Other forms

The Schwarz--Christoffel formula for a conformal map onto a polygonal domain. Formalized in Tau Ceti as TauCeti.eqOn_const_mul_schwarzChristoffelPrimitive_add_of_polygonal_domain.

TauCeti.eqOn_const_mul_schwarzChristoffelPrimitive_add_of_polygonal_domain.{u_1} {U : Set ℂ}
  {f : ℂ → ℂ} {ι : Type u_1} [Fintype ι] (a e : ι → ℝ) (ha : Function.Injective a)
  (he : ∀ (i : ι), e i ∈ Set.Ioo (-1) 1) (z₀ : UpperHalfPlane) {v : ι → ℂ} {p : ℂ}
  (hf : DifferentiableOn ℂ f UpperHalfPlane.upperHalfPlaneSet) (hfc : ContinuousOn f {z | 0 ≤ z.im})
  (hfi : Set.InjOn f {z | 0 ≤ z.im}) (hfU : f '' UpperHalfPlane.upperHalfPlaneSet = U)
  (hfv : ∀ (i : ι), f ↑(a i) = v i)
  (hp : Filter.Tendsto f (Bornology.cobounded ℂ ⊓ Filter.principal {z | 0 ≤ z.im}) (nhds p))
  (hpf : p ∉ f '' {z | 0 ≤ z.im})
  (hside :
    ∀ w ∈ frontier U,
      (∀ (i : ι), w ≠ v i) →
        ∃ ρ > 0, ∃ q b, b ≠ 0 ∧ ∀ z ∈ Metric.ball w ρ, z ∈ U ↔ 0 < ((z - q) / b).im)
  (hcorner :
    ∀ (i : ι),
      ∃ ρ > 0,
        ∃ b,
          b ≠ 0 ∧
            ∀ z ∈ Metric.ball (v i) ρ,
              z ≠ v i → (z ∈ U ↔ |((z - v i) / b).arg| < (e i + 1) * Real.pi / 2)) :
  Set.EqOn f
    (fun z =>
      deriv f ↑z₀ / TauCeti.schwarzChristoffelIntegrand a e ↑z₀ *
          TauCeti.schwarzChristoffelPrimitive a e z₀ z +
        f ↑z₀)
    UpperHalfPlane.upperHalfPlaneSet

The Schwarz--Christoffel formula for a conformal map onto a polygonal domain whose end is the exterior of a half-strip. Formalized in Tau Ceti as TauCeti.eqOn_const_mul_schwarzChristoffelPrimitive_add_of_halfStripExterior_polygonal_domain.

TauCeti.eqOn_const_mul_schwarzChristoffelPrimitive_add_of_halfStripExterior_polygonal_domain.{u_1}
  {U : Set ℂ} {f : ℂ → ℂ} {ι : Type u_1} [Fintype ι] (a e : ι → ℝ) (ha : Function.Injective a)
  (he : ∀ (i : ι), e i ∈ Set.Ioo (-1) 1) (z₀ : UpperHalfPlane) {v : ι → ℂ}
  (hf : DifferentiableOn ℂ f UpperHalfPlane.upperHalfPlaneSet) (hfc : ContinuousOn f {z | 0 ≤ z.im})
  (hfi : Set.InjOn f {z | 0 ≤ z.im}) (hfU : f '' UpperHalfPlane.upperHalfPlaneSet = U)
  (hfv : ∀ (i : ι), f ↑(a i) = v i)
  (hp :
    Filter.Tendsto f (Bornology.cobounded ℂ ⊓ Filter.principal {z | 0 ≤ z.im})
      (Bornology.cobounded ℂ))
  (hside :
    ∀ w ∈ frontier U,
      (∀ (i : ι), w ≠ v i) →
        ∃ ρ > 0, ∃ q b, b ≠ 0 ∧ ∀ z ∈ Metric.ball w ρ, z ∈ U ↔ 0 < ((z - q) / b).im)
  (hcorner :
    ∀ (i : ι),
      ∃ ρ > 0,
        ∃ b,
          b ≠ 0 ∧
            ∀ z ∈ Metric.ball (v i) ρ,
              z ≠ v i → (z ∈ U ↔ |((z - v i) / b).arg| < (e i + 1) * Real.pi / 2))
  (hinfty :
    ∃ ρ c b,
      b ≠ 0 ∧
        ∀ (z : ℂ),
          ρ < ‖z - c‖ → (z ∈ U ↔ ((z - c) / b).re < 0 ∨ ((z - c) / b).im ∉ Set.Icc 0 Real.pi)) :
  Set.EqOn f
    (fun z =>
      deriv f ↑z₀ / TauCeti.schwarzChristoffelIntegrand a e ↑z₀ *
          TauCeti.schwarzChristoffelPrimitive a e z₀ z +
        f ↑z₀)
    UpperHalfPlane.upperHalfPlaneSet

The Schwarz--Christoffel formula for a conformal map onto a polygonal domain with a half-strip end. Formalized in Tau Ceti as TauCeti.eqOn_const_mul_schwarzChristoffelPrimitive_add_of_halfStrip_polygonal_domain.

TauCeti.eqOn_const_mul_schwarzChristoffelPrimitive_add_of_halfStrip_polygonal_domain.{u_1}
  {U : Set ℂ} {f : ℂ → ℂ} {ι : Type u_1} [Fintype ι] (a e : ι → ℝ) (ha : Function.Injective a)
  (he : ∀ (i : ι), e i ∈ Set.Ioo (-1) 1) (z₀ : UpperHalfPlane) {v : ι → ℂ}
  (hf : DifferentiableOn ℂ f UpperHalfPlane.upperHalfPlaneSet) (hfc : ContinuousOn f {z | 0 ≤ z.im})
  (hfi : Set.InjOn f {z | 0 ≤ z.im}) (hfU : f '' UpperHalfPlane.upperHalfPlaneSet = U)
  (hfv : ∀ (i : ι), f ↑(a i) = v i)
  (hp :
    Filter.Tendsto f (Bornology.cobounded ℂ ⊓ Filter.principal {z | 0 ≤ z.im})
      (Bornology.cobounded ℂ))
  (hside :
    ∀ w ∈ frontier U,
      (∀ (i : ι), w ≠ v i) →
        ∃ ρ > 0, ∃ q b, b ≠ 0 ∧ ∀ z ∈ Metric.ball w ρ, z ∈ U ↔ 0 < ((z - q) / b).im)
  (hcorner :
    ∀ (i : ι),
      ∃ ρ > 0,
        ∃ b,
          b ≠ 0 ∧
            ∀ z ∈ Metric.ball (v i) ρ,
              z ≠ v i → (z ∈ U ↔ |((z - v i) / b).arg| < (e i + 1) * Real.pi / 2))
  (hinfty :
    ∃ ρ c b,
      b ≠ 0 ∧
        ∀ (z : ℂ),
          ρ < ‖z - c‖ → (z ∈ U ↔ 0 < ((z - c) / b).re ∧ ((z - c) / b).im ∈ Set.Ioo 0 Real.pi)) :
  Set.EqOn f
    (fun z =>
      deriv f ↑z₀ / TauCeti.schwarzChristoffelIntegrand a e ↑z₀ *
          TauCeti.schwarzChristoffelPrimitive a e z₀ z +
        f ↑z₀)
    UpperHalfPlane.upperHalfPlaneSet

The Schwarz--Christoffel formula for a conformal map onto an unbounded polygonal domain. Formalized in Tau Ceti as TauCeti.eqOn_const_mul_schwarzChristoffelPrimitive_add_of_unbounded_polygonal_domain.

TauCeti.eqOn_const_mul_schwarzChristoffelPrimitive_add_of_unbounded_polygonal_domain.{u_1}
  {U : Set ℂ} {f : ℂ → ℂ} {ι : Type u_1} [Fintype ι] (a e : ι → ℝ) (ha : Function.Injective a)
  (he : ∀ (i : ι), e i ∈ Set.Ioo (-1) 1) (z₀ : UpperHalfPlane) {v : ι → ℂ} {β : ℝ}
  (hβ : β ∈ Set.Ioo 0 2) (hf : DifferentiableOn ℂ f UpperHalfPlane.upperHalfPlaneSet)
  (hfc : ContinuousOn f {z | 0 ≤ z.im}) (hfi : Set.InjOn f {z | 0 ≤ z.im})
  (hfU : f '' UpperHalfPlane.upperHalfPlaneSet = U) (hfv : ∀ (i : ι), f ↑(a i) = v i)
  (hp :
    Filter.Tendsto f (Bornology.cobounded ℂ ⊓ Filter.principal {z | 0 ≤ z.im})
      (Bornology.cobounded ℂ))
  (hside :
    ∀ w ∈ frontier U,
      (∀ (i : ι), w ≠ v i) →
        ∃ ρ > 0, ∃ q b, b ≠ 0 ∧ ∀ z ∈ Metric.ball w ρ, z ∈ U ↔ 0 < ((z - q) / b).im)
  (hcorner :
    ∀ (i : ι),
      ∃ ρ > 0,
        ∃ b,
          b ≠ 0 ∧
            ∀ z ∈ Metric.ball (v i) ρ,
              z ≠ v i → (z ∈ U ↔ |((z - v i) / b).arg| < (e i + 1) * Real.pi / 2))
  (hinfty :
    ∃ ρ c b, b ≠ 0 ∧ ∀ (z : ℂ), ρ < ‖z - c‖ → (z ∈ U ↔ |((z - c) / b).arg| < β * Real.pi / 2)) :
  Set.EqOn f
    (fun z =>
      deriv f ↑z₀ / TauCeti.schwarzChristoffelIntegrand a e ↑z₀ *
          TauCeti.schwarzChristoffelPrimitive a e z₀ z +
        f ↑z₀)
    UpperHalfPlane.upperHalfPlaneSet
Sources
Uses 3 · Used by 3

TheoremStrict Schwarz lemma#

A holomorphic map of ball c R₁ into closedBall (g c) R₂ that is not injective has ‖deriv g c‖ < R₂ / R₁.

Both radii must be positive: for R₂ = 0 the map is constant, so it is not injective and the strict bound fails.

TauCeti.norm_deriv_lt_div_of_not_injOn.{u_1} {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℂ E]
  [StrictConvexSpace ℝ E] {g : ℂ → E} {c : ℂ} {R₁ R₂ : ℝ} (hR₁ : 0 < R₁) (hR₂ : 0 < R₂)
  (hgd : DifferentiableOn ℂ g (Metric.ball c R₁))
  (hgm : Set.MapsTo g (Metric.ball c R₁) (Metric.closedBall (g c) R₂))
  (hgi : ¬Set.InjOn g (Metric.ball c R₁)) : ‖deriv g c‖ < R₂ / R₁
Lean

Formalized in Tau Ceti as TauCeti.norm_deriv_lt_div_of_not_injOn.

Other forms

Strict Schwarz lemma, equal radii. Formalized in Tau Ceti as TauCeti.norm_deriv_lt_one_of_not_injOn.

TauCeti.norm_deriv_lt_one_of_not_injOn.{u_1} {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℂ E]
  [StrictConvexSpace ℝ E] {g : ℂ → E} {c : ℂ} {R : ℝ} (hR : 0 < R)
  (hgd : DifferentiableOn ℂ g (Metric.ball c R))
  (hgm : Set.MapsTo g (Metric.ball c R) (Metric.closedBall (g c) R))
  (hgi : ¬Set.InjOn g (Metric.ball c R)) : ‖deriv g c‖ < 1
Sources
Used by 5

TheoremVitali's convergence theorem#

Let Ω be an open preconnected subset of ℂ. A locally bounded sequence of holomorphic maps from Ω into a proper complex normed space E (for instance ℂ) which converges pointwise on a subset A ⊆ Ω having an accumulation point in Ω converges locally uniformly on Ω to a holomorphic map.

The pointwise limit on A need not be supplied: its existence is enough to determine the holomorphic limit uniquely.

TauCeti.vitali.{u_1} {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℂ E] {Ω A : Set ℂ}
  [ProperSpace E] {F : ℕ → ℂ → E} (hΩ : IsOpen Ω) (hconn : IsPreconnected Ω)
  (hF : ∀ (n : ℕ), DifferentiableOn ℂ (F n) Ω) (hb : TauCeti.IsLocallyBoundedOn F Ω) (hAΩ : A ⊆ Ω)
  {z₀ : ℂ} (hz₀ : z₀ ∈ Ω) (hacc : AccPt z₀ (Filter.principal A))
  (hpoint : ∀ z ∈ A, ∃ w, Filter.Tendsto (fun n => F n z) Filter.atTop (nhds w)) :
  ∃ g, DifferentiableOn ℂ g Ω ∧ TendstoLocallyUniformlyOn F g Filter.atTop Ω
Uses 1 · Used by 1

TheoremVitali's theorem with prescribed pointwise values#

Under the hypotheses of vitali, if the sequence converges pointwise on A to a specified function g, its locally uniform holomorphic limit agrees with g throughout A.

No regularity of g away from A is assumed or concluded; when A is all of Ω the limit is g itself, which is TauCeti.tendstoLocallyUniformlyOn_of_isLocallyBoundedOn_of_forall_tendsto.

TauCeti.vitali_of_tendsto.{u_1} {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℂ E]
  {Ω A : Set ℂ} [ProperSpace E] {F : ℕ → ℂ → E} (hΩ : IsOpen Ω) (hconn : IsPreconnected Ω)
  (hF : ∀ (n : ℕ), DifferentiableOn ℂ (F n) Ω) (hb : TauCeti.IsLocallyBoundedOn F Ω) (hAΩ : A ⊆ Ω)
  {z₀ : ℂ} (hz₀ : z₀ ∈ Ω) (hacc : AccPt z₀ (Filter.principal A)) {g : ℂ → E}
  (hpoint : ∀ z ∈ A, Filter.Tendsto (fun n => F n z) Filter.atTop (nhds (g z))) :
  ∃ q, DifferentiableOn ℂ q Ω ∧ Set.EqOn q g A ∧ TendstoLocallyUniformlyOn F q Filter.atTop Ω
Uses 1

TheoremWolff's lemma (TauCeti.exists_circleImageLength_sq_lt)#

If 2 π times the Dirichlet integral of f over s is smaller than c * log (R / r), then some circle of radius ρ between r and R has ℓ ρ ^ 2 < c.

Since log (R / r) grows without bound as the annulus is made longer while the Dirichlet integral stays fixed, this makes ℓ arbitrarily small at arbitrarily small radii; for a holomorphic f that is the geometric statement that a map of finite Dirichlet integral cannot keep every circular arc about ζ long.

TauCeti.exists_circleImageLength_sq_lt {s : Set ℂ} (f : ℂ → ℂ) (hs : MeasurableSet s) (ζ : ℂ)
  {r R : ℝ} (hr : 0 < r) (hrR : r < R) {c : ENNReal}
  (hc :
    ENNReal.ofReal (2 * Real.pi) * ∫⁻ (z : ℂ) in s, ‖deriv f z‖ₑ ^ 2 <
      c * ENNReal.ofReal (Real.log (R / r))) :
  ∃ ρ ∈ Set.Ioo r R, TauCeti.circleImageLength f s ζ ρ ^ 2 < c
Lean

Formalized in Tau Ceti as TauCeti.exists_circleImageLength_sq_lt.

Other forms

Wolff's lemma, area form. Formalized in Tau Ceti as TauCeti.exists_circleImageLength_sq_lt_of_volume_image.

TauCeti.exists_circleImageLength_sq_lt_of_volume_image {U s : Set ℂ} {f : ℂ → ℂ} (hUo : IsOpen U)
  (hf : DifferentiableOn ℂ f U) (hs : MeasurableSet s) (hsU : s ⊆ U) (hinj : Set.InjOn f s) (ζ : ℂ)
  {r R : ℝ} (hr : 0 < r) (hrR : r < R) {c : ENNReal}
  (hc :
    ENNReal.ofReal (2 * Real.pi) * MeasureTheory.volume (f '' s) <
      c * ENNReal.ofReal (Real.log (R / r))) :
  ∃ ρ ∈ Set.Ioo r R, TauCeti.circleImageLength f s ζ ρ ^ 2 < c
Sources
Uses 1

The dependency explorer needs JavaScript and its graph data.

Download the complete graph data.