Documentation

Mathlib.Analysis.Complex.Schwarz

Schwarz lemma #

In this file we prove several versions of the Schwarz lemma.

Implementation notes #

Traditionally, the Schwarz lemma is formulated for maps f : ℂ → ℂ. We generalize all versions of the lemma to the case of maps to any normed space. For the versions that don't use deriv or dslope, we state it for maps between any two normed spaces.

TODO #

Tags #

Schwarz lemma

theorem Complex.dist_le_mul_div_pow_of_mapsTo_ball_of_isLittleO {E : Type u_1} {F : Type u_2} [NormedAddCommGroup E] [NormedSpace E] [NormedAddCommGroup F] [NormedSpace F] {f : EF} {c z : E} {R₁ R₂ : } {n : } (hd : DifferentiableOn f (Metric.ball c R₁)) (h_maps : Set.MapsTo f (Metric.ball c R₁) (Metric.closedBall (f c) R₂)) (hn : (fun (x : E) => f x - f c) =o[nhds c] fun (w : E) => w - c ^ n) (hz : z Metric.ball c R₁) :
dist (f z) (f c) R₂ * (dist z c / R₁) ^ (n + 1)

Let f : E → F be a complex analytic map sending an open ball of radius R₁ to a closed ball of radius R₂. If f w - f c = o(‖w - c‖ ^ n), then for any z in the ball in the domain, we have dist (f z) (f c) ≤ R₂ * (dist z c / R₁) ^ (n + 1).

For n = 0, this theorem gives a usual Schwarz lemma, see dist_le_div_mul_dist_of_mapsTo_ball below.

theorem Complex.dist_le_div_mul_dist_of_mapsTo_ball {E : Type u_1} {F : Type u_2} [NormedAddCommGroup E] [NormedSpace E] [NormedAddCommGroup F] [NormedSpace F] {R₁ R₂ : } {f : EF} {c z : E} (hd : DifferentiableOn f (Metric.ball c R₁)) (h_maps : Set.MapsTo f (Metric.ball c R₁) (Metric.closedBall (f c) R₂)) (hz : z Metric.ball c R₁) :
dist (f z) (f c) R₂ / R₁ * dist z c

The Schwarz Lemma. Let f : E → F be a complex analytic function on an open ball with center c and radius R₁. If f sends this ball to a closed ball with center f c and radius R₂, then for any z in the former ball we have dist (f z) (f c) ≤ (R₂ / R₁) * dist z c.

theorem Complex.norm_fderiv_le_div_of_mapsTo_ball {E : Type u_1} {F : Type u_2} [NormedAddCommGroup E] [NormedSpace E] [NormedAddCommGroup F] [NormedSpace F] {R₁ R₂ : } {f : EF} {c : E} (hd : DifferentiableOn f (Metric.ball c R₁)) (h_maps : Set.MapsTo f (Metric.ball c R₁) (Metric.closedBall (f c) R₂)) (h₀ : 0 < R₁) :
fderiv f c R₂ / R₁

The Schwarz Lemma. Let f : E → F be a complex analytic function on an open ball with center c and positive radius R₁. If f sends this ball to a closed ball with center f c and radius R₂, then the norm of the Fréchet derivative of f at c is at most R₂ / R₁.

theorem Complex.dist_le_dist_of_mapsTo_ball {E : Type u_1} {F : Type u_2} [NormedAddCommGroup E] [NormedSpace E] [NormedAddCommGroup F] [NormedSpace F] {R : } {f : EF} {c z : E} (hd : DifferentiableOn f (Metric.ball c R)) (h_maps : Set.MapsTo f (Metric.ball c R) (Metric.closedBall (f c) R)) (hz : z Metric.ball c R) :
dist (f z) (f c) dist z c

The Schwarz Lemma. Let f : E → F be a complex analytic function on an open ball with center c. If f sends this ball to a closed ball with center f c and the same radius, then for any z in the former ball we have dist (f z) (f c) ≤ dist z c.

@[deprecated Complex.dist_le_dist_of_mapsTo_ball (since := "2026-01-03")]
theorem Complex.dist_le_dist_of_mapsTo_ball_self {E : Type u_1} {F : Type u_2} [NormedAddCommGroup E] [NormedSpace E] [NormedAddCommGroup F] [NormedSpace F] {R : } {f : EF} {c z : E} (hd : DifferentiableOn f (Metric.ball c R)) (h_maps : Set.MapsTo f (Metric.ball c R) (Metric.closedBall (f c) R)) (hz : z Metric.ball c R) :
dist (f z) (f c) dist z c

Alias of Complex.dist_le_dist_of_mapsTo_ball.


The Schwarz Lemma. Let f : E → F be a complex analytic function on an open ball with center c. If f sends this ball to a closed ball with center f c and the same radius, then for any z in the former ball we have dist (f z) (f c) ≤ dist z c.

theorem Complex.norm_fderiv_le_one_of_mapsTo_ball {E : Type u_1} {F : Type u_2} [NormedAddCommGroup E] [NormedSpace E] [NormedAddCommGroup F] [NormedSpace F] {R : } {f : EF} {c : E} (hd : DifferentiableOn f (Metric.ball c R)) (h_maps : Set.MapsTo f (Metric.ball c R) (Metric.closedBall (f c) R)) (hR : 0 < R) :

The Schwarz Lemma. Let f : E → F be a complex analytic function on an open ball with center c and a positive radius. If f sends this ball to a closed ball with center f c and the same radius, then the norm of the Fréchet derivative of f at c is at most one.

theorem Complex.norm_le_norm_of_mapsTo_ball {E : Type u_1} {F : Type u_2} [NormedAddCommGroup E] [NormedSpace E] [NormedAddCommGroup F] [NormedSpace F] {R : } {f : EF} {z : E} (hd : DifferentiableOn f (Metric.ball 0 R)) (h_maps : Set.MapsTo f (Metric.ball 0 R) (Metric.closedBall 0 R)) (h₀ : f 0 = 0) (hz : z < R) :

The Schwarz Lemma. Let f : E → F be a complex analytic on an open ball with center at the origin. If f sends this ball to the closed ball with center 0 of the same radius and f 0 = 0, then for any point z of this disk we have ‖f z‖ ≤ ‖z‖.

@[deprecated Complex.norm_le_norm_of_mapsTo_ball (since := "2026-01-03")]
theorem Complex.norm_le_norm_of_mapsTo_ball_self {E : Type u_1} {F : Type u_2} [NormedAddCommGroup E] [NormedSpace E] [NormedAddCommGroup F] [NormedSpace F] {R : } {f : EF} {z : E} (hd : DifferentiableOn f (Metric.ball 0 R)) (h_maps : Set.MapsTo f (Metric.ball 0 R) (Metric.closedBall 0 R)) (h₀ : f 0 = 0) (hz : z < R) :

Alias of Complex.norm_le_norm_of_mapsTo_ball.


The Schwarz Lemma. Let f : E → F be a complex analytic on an open ball with center at the origin. If f sends this ball to the closed ball with center 0 of the same radius and f 0 = 0, then for any point z of this disk we have ‖f z‖ ≤ ‖z‖.

theorem Complex.norm_deriv_le_div_of_mapsTo_ball {E : Type u_1} [NormedAddCommGroup E] [NormedSpace E] {R₁ R₂ : } {f : E} {c : } (hd : DifferentiableOn f (Metric.ball c R₁)) (h_maps : Set.MapsTo f (Metric.ball c R₁) (Metric.closedBall (f c) R₂)) (h₀ : 0 < R₁) :
deriv f c R₂ / R₁

The Schwarz Lemma: if f : ℂ → E is complex analytic on an open disk with center c and a positive radius R₁, and it sends this disk to a closed ball with center f c and radius R₂, then the norm of the derivative of f at c is at most the ratio R₂ / R₁.

theorem Complex.norm_deriv_le_one_of_mapsTo_ball {E : Type u_1} [NormedAddCommGroup E] [NormedSpace E] {R : } {f : E} {c : } (hd : DifferentiableOn f (Metric.ball c R)) (h_maps : Set.MapsTo f (Metric.ball c R) (Metric.closedBall (f c) R)) (h₀ : 0 < R) :

The Schwarz Lemma: if f : ℂ → E is complex analytic on an open disk with center c and a positive radius R₁, and it sends this disk to a closed ball with center f c and radius the same radius, then the norm of the derivative of f at the center of this disk is at most 1.

theorem Complex.norm_dslope_le_div_of_mapsTo_ball {E : Type u_1} [NormedAddCommGroup E] [NormedSpace E] {R₁ R₂ : } {f : E} {c z : } (hd : DifferentiableOn f (Metric.ball c R₁)) (h_maps : Set.MapsTo f (Metric.ball c R₁) (Metric.closedBall (f c) R₂)) (hz : z Metric.ball c R₁) :
dslope f c z R₂ / R₁

Two cases of the Schwarz Lemma (derivative and distance), merged together.

If f : ℂ → E is a complex analytic function on an open ball ball c R₁ hat sends it to a closed ball closedBall (f c) R₂, then the norm of dslope f c z, which is defined as (z - c)⁻¹ • (f z - f c) for z ≠ c and as deriv f c for z = c, is not greater than the ratio R₂ / R₁.

theorem Complex.affine_of_mapsTo_ball_of_norm_dslope_eq_div {E : Type u_1} [NormedAddCommGroup E] [NormedSpace E] {R₁ R₂ : } {f : E} {c z₀ : } [StrictConvexSpace E] (hd : DifferentiableOn f (Metric.ball c R₁)) (h_maps : Set.MapsTo f (Metric.ball c R₁) (Metric.closedBall (f c) R₂)) (h_z₀ : z₀ Metric.ball c R₁) (h_eq : dslope f c z₀ = R₂ / R₁) :
Set.EqOn f (fun (z : ) => f c + (z - c) dslope f c z₀) (Metric.ball c R₁)

Equality case in the Schwarz Lemma: in the setup of norm_dslope_le_div_of_mapsTo_ball, if ‖dslope f c z₀‖ = R₂ / R₁ holds at a point in the ball then the map f is affine with slope dslope f c z₀.

Note that this lemma requires the codomain to be a strictly convex space. Indeed, for E = ℂ × ℂ there is a counterexample: the map f := fun z ↦ (z, z ^ 2) sends ball 0 1 to closedBall 0 1, ‖dslope f 0 0‖ = ‖deriv f 0‖ = ‖(1, 0)‖ = 1, but the map is not an affine map.

@[deprecated Complex.affine_of_mapsTo_ball_of_norm_dslope_eq_div (since := "2026-01-03")]
theorem Complex.affine_of_mapsTo_ball_of_exists_norm_dslope_eq_div {E : Type u_1} [NormedAddCommGroup E] [NormedSpace E] {R₁ R₂ : } {f : E} {c z₀ : } [StrictConvexSpace E] (hd : DifferentiableOn f (Metric.ball c R₁)) (h_maps : Set.MapsTo f (Metric.ball c R₁) (Metric.closedBall (f c) R₂)) (h_z₀ : z₀ Metric.ball c R₁) (h_eq : dslope f c z₀ = R₂ / R₁) :
Set.EqOn f (fun (z : ) => f c + (z - c) dslope f c z₀) (Metric.ball c R₁)

Alias of Complex.affine_of_mapsTo_ball_of_norm_dslope_eq_div.


Equality case in the Schwarz Lemma: in the setup of norm_dslope_le_div_of_mapsTo_ball, if ‖dslope f c z₀‖ = R₂ / R₁ holds at a point in the ball then the map f is affine with slope dslope f c z₀.

Note that this lemma requires the codomain to be a strictly convex space. Indeed, for E = ℂ × ℂ there is a counterexample: the map f := fun z ↦ (z, z ^ 2) sends ball 0 1 to closedBall 0 1, ‖dslope f 0 0‖ = ‖deriv f 0‖ = ‖(1, 0)‖ = 1, but the map is not an affine map.

theorem Complex.affine_of_mapsTo_ball_of_exists_norm_dslope_eq_div' {E : Type u_1} [NormedAddCommGroup E] [NormedSpace E] {R₁ R₂ : } {f : E} {c : } [StrictConvexSpace E] (hd : DifferentiableOn f (Metric.ball c R₁)) (h_maps : Set.MapsTo f (Metric.ball c R₁) (Metric.closedBall (f c) R₂)) (h_z₀ : z₀Metric.ball c R₁, dslope f c z₀ = R₂ / R₁) :
∃ (C : E), C = R₂ / R₁ Set.EqOn f (fun (z : ) => f c + (z - c) C) (Metric.ball c R₁)

Equality case in the Schwarz Lemma: in the setup of norm_dslope_le_div_of_mapsTo_ball, if there exists a point z₀ in the ball such that ‖dslope f c z₀‖ = R₂ / R₁, then the map f is affine with the absolute value of the slope equal to R₂ / R₁.

This is an existence version of affine_of_mapsTo_ball_of_norm_dslope_eq_div above.

TODO: once the deprecated alias affine_of_mapsTo_ball_of_exists_norm_dslope_eq_div is gone, rename this theorem to affine_of_mapsTo_ball_of_exists_norm_dslope_eq_div.