Documentation

Mathlib.Analysis.Complex.UpperHalfPlane.Metric

Metric on the upper half-plane #

In this file we define a MetricSpace structure on the UpperHalfPlane. We use hyperbolic (Poincaré) distance given by dist z w = 2 * arsinh (dist (z : ℂ) w / (2 * Real.sqrt (z.im * w.im))) instead of the induced Euclidean distance because the hyperbolic distance is invariant under holomorphic automorphisms of the upper half-plane. However, we ensure that the projection to TopologicalSpace is definitionally equal to the induced topological space structure.

We also prove that a metric ball/closed ball/sphere in Poincaré metric is a Euclidean ball/closed ball/sphere with another center and radius.

theorem UpperHalfPlane.sinh_half_dist_add_dist (a : UpperHalfPlane) (b : UpperHalfPlane) (c : UpperHalfPlane) :
Real.sinh ((dist a b + dist b c) / 2) = (dist a b * dist (c) ((starRingEnd ) b) + dist b c * dist (a) ((starRingEnd ) b)) / (2 * Real.sqrt (UpperHalfPlane.im a * UpperHalfPlane.im c) * dist (b) ((starRingEnd ) b))

An auxiliary MetricSpace instance on the upper half-plane. This instance has bad projection to TopologicalSpace. We replace it later.

Equations
Instances For

    Euclidean center of the circle with center z and radius r in the hyperbolic metric.

    Equations
    Instances For

      For two points on the same vertical line, the distance is equal to the distance between the logarithms of their imaginary parts.

      Hyperbolic distance between two points is greater than or equal to the distance between the logarithms of their imaginary parts.

      An upper estimate on the complex distance between two points in terms of the hyperbolic distance and the imaginary part of one of the points.

      An upper estimate on the complex distance between two points in terms of the hyperbolic distance and the imaginary part of one of the points.

      theorem UpperHalfPlane.isometry_vertical_line (a : ) :
      Isometry fun (y : ) => UpperHalfPlane.mk { re := a, im := Real.exp y } (_ : 0 < Real.exp y)
      theorem UpperHalfPlane.isometry_pos_mul (a : { x : // 0 < x }) :
      Isometry fun (x : UpperHalfPlane) => a x