Documentation

Mathlib.Analysis.Complex.UpperHalfPlane.Basic

The upper half plane and its automorphisms #

This file defines UpperHalfPlane to be the upper half plane in ℂ.

We furthermore equip it with the structure of a GLPos 2 ℝ action by fractional linear transformations.

We define the notation ℍ for the upper half plane available in the locale UpperHalfPlane so as not to conflict with the quaternions.

The open upper half plane, denoted as ℍ within the UpperHalfPlane namespace

Equations
Instances For

    The open upper half plane, denoted as ℍ within the UpperHalfPlane namespace

    Equations
    Instances For

      The coercion first into an element of GL(2, ℝ)⁺, then GL(2, ℝ) and finally a 2 × 2 matrix.

      This notation is scoped in namespace UpperHalfPlane.

      Equations
      Instances For
        instance UpperHalfPlane.instCoeFun :
        CoeFun ↥(Matrix.GLPos (Fin 2) ℝ) fun (x : ↥(Matrix.GLPos (Fin 2) ℝ)) => Fin 2 → Fin 2 → ℝ
        Equations

        The coercion into an element of GL(2, R) and finally a 2 × 2 matrix over R. This is similar to ↑ₘ, but without positivity requirements, and allows the user to specify the ring R, which can be useful to help Lean elaborate correctly.

        This notation is scoped in namespace UpperHalfPlane.

        Equations
        • One or more equations did not get rendered due to their size.
        Instances For

          Canonical embedding of the upper half-plane into ℂ.

          Equations
          • ↑z = ↑z
          Instances For
            theorem UpperHalfPlane.ext {a b : UpperHalfPlane} (h : ↑a = ↑b) :
            a = b
            theorem UpperHalfPlane.ext_iff {a b : UpperHalfPlane} :
            a = b ↔ ↑a = ↑b
            @[simp]
            theorem UpperHalfPlane.ext_iff' {a b : UpperHalfPlane} :
            ↑a = ↑b ↔ a = b

            Imaginary part

            Equations
            Instances For

              Real part

              Equations
              Instances For
                theorem UpperHalfPlane.ext' {a b : UpperHalfPlane} (hre : a.re = b.re) (him : a.im = b.im) :
                a = b

                Extensionality lemma in terms of UpperHalfPlane.re and UpperHalfPlane.im.

                def UpperHalfPlane.mk (z : ℂ) (h : 0 < z.im) :

                Constructor for UpperHalfPlane. It is useful if ⟨z, h⟩ makes Lean use a wrong typeclass instance.

                Equations
                Instances For
                  @[simp]
                  theorem UpperHalfPlane.coe_im (z : UpperHalfPlane) :
                  (↑z).im = z.im
                  @[simp]
                  theorem UpperHalfPlane.coe_re (z : UpperHalfPlane) :
                  (↑z).re = z.re
                  @[simp]
                  theorem UpperHalfPlane.mk_re (z : ℂ) (h : 0 < z.im) :
                  (mk z h).re = z.re
                  @[simp]
                  theorem UpperHalfPlane.mk_im (z : ℂ) (h : 0 < z.im) :
                  (mk z h).im = z.im
                  @[simp]
                  theorem UpperHalfPlane.coe_mk (z : ℂ) (h : 0 < z.im) :
                  ↑(mk z h) = z
                  @[simp]
                  theorem UpperHalfPlane.coe_mk_subtype {z : ℂ} (hz : 0 < z.im) :
                  ↑⟨z, hz⟩ = z
                  @[simp]
                  theorem UpperHalfPlane.mk_coe (z : UpperHalfPlane) (h : 0 < (↑z).im := ⋯) :
                  mk (↑z) h = z

                  Define I := √-1 as an element on the upper half plane.

                  Equations
                  Instances For
                    @[simp]
                    @[simp]
                    theorem UpperHalfPlane.ne_nat (z : UpperHalfPlane) (n : ℕ) :
                    ↑z ≠ ↑n
                    theorem UpperHalfPlane.ne_int (z : UpperHalfPlane) (n : ℤ) :
                    ↑z ≠ ↑n

                    Numerator of the formula for a fractional linear transformation

                    Equations
                    Instances For

                      Denominator of the formula for a fractional linear transformation

                      Equations
                      Instances For
                        theorem UpperHalfPlane.linear_ne_zero (cd : Fin 2 → ℝ) (z : UpperHalfPlane) (h : cd ≠ 0) :
                        ↑(cd 0) * ↑z + ↑(cd 1) ≠ 0

                        Fractional linear transformation, also known as the Moebius transformation

                        Equations
                        Instances For

                          Fractional linear transformation, also known as the Moebius transformation

                          Equations
                          Instances For
                            theorem UpperHalfPlane.denom_cocycle (x y : ↥(Matrix.GLPos (Fin 2) ℝ)) (z : UpperHalfPlane) :
                            denom (x * y) z = denom x (smulAux y z) * denom y z
                            theorem UpperHalfPlane.mul_smul' (x y : ↥(Matrix.GLPos (Fin 2) ℝ)) (z : UpperHalfPlane) :
                            smulAux (x * y) z = smulAux x (smulAux y z)

                            The action of GLPos 2 ℝ on the upper half-plane by fractional linear transformations.

                            Equations
                            • One or more equations did not get rendered due to their size.
                            theorem UpperHalfPlane.specialLinearGroup_apply {R : Type u_1} [CommRing R] [Algebra R ℝ] (g : Matrix.SpecialLinearGroup (Fin 2) R) (z : UpperHalfPlane) :
                            g • z = mk ((↑((algebraMap R ℝ) (↑g 0 0)) * ↑z + ↑((algebraMap R ℝ) (↑g 0 1))) / (↑((algebraMap R ℝ) (↑g 1 0)) * ↑z + ↑((algebraMap R ℝ) (↑g 1 1)))) ⋯
                            @[simp]
                            theorem UpperHalfPlane.coe_smul (g : ↥(Matrix.GLPos (Fin 2) ℝ)) (z : UpperHalfPlane) :
                            ↑(g • z) = num g z / denom g z
                            @[simp]
                            theorem UpperHalfPlane.re_smul (g : ↥(Matrix.GLPos (Fin 2) ℝ)) (z : UpperHalfPlane) :
                            (g • z).re = (num g z / denom g z).re
                            theorem UpperHalfPlane.im_smul (g : ↥(Matrix.GLPos (Fin 2) ℝ)) (z : UpperHalfPlane) :
                            (g • z).im = (num g z / denom g z).im
                            @[simp]
                            theorem UpperHalfPlane.neg_smul (g : ↥(Matrix.GLPos (Fin 2) ℝ)) (z : UpperHalfPlane) :
                            -g • z = g • z
                            Equations
                            • One or more equations did not get rendered due to their size.
                            @[simp]
                            theorem UpperHalfPlane.coe_pos_real_smul (x : { x : ℝ // 0 < x }) (z : UpperHalfPlane) :
                            ↑(x • z) = ↑x • ↑z
                            @[simp]
                            theorem UpperHalfPlane.pos_real_im (x : { x : ℝ // 0 < x }) (z : UpperHalfPlane) :
                            (x • z).im = ↑x * z.im
                            @[simp]
                            theorem UpperHalfPlane.pos_real_re (x : { x : ℝ // 0 < x }) (z : UpperHalfPlane) :
                            (x • z).re = ↑x * z.re
                            Equations
                            • One or more equations did not get rendered due to their size.
                            @[simp]
                            theorem UpperHalfPlane.coe_vadd (x : ℝ) (z : UpperHalfPlane) :
                            ↑(x +ᵥ z) = ↑x + ↑z
                            @[simp]
                            theorem UpperHalfPlane.vadd_re (x : ℝ) (z : UpperHalfPlane) :
                            (x +ᵥ z).re = x + z.re
                            @[simp]
                            theorem UpperHalfPlane.vadd_im (x : ℝ) (z : UpperHalfPlane) :
                            (x +ᵥ z).im = z.im
                            theorem UpperHalfPlane.exists_SL2_smul_eq_of_apply_zero_one_eq_zero (g : Matrix.SpecialLinearGroup (Fin 2) ℝ) (hc : ↑g 1 0 = 0) :
                            ∃ (u : { x : ℝ // 0 < x }) (v : ℝ), (fun (x : UpperHalfPlane) => g • x) = (fun (x : UpperHalfPlane) => v +ᵥ x) ∘ fun (x : UpperHalfPlane) => u • x
                            theorem UpperHalfPlane.exists_SL2_smul_eq_of_apply_zero_one_ne_zero (g : Matrix.SpecialLinearGroup (Fin 2) ℝ) (hc : ↑g 1 0 ≠ 0) :
                            ∃ (u : { x : ℝ // 0 < x }) (v : ℝ) (w : ℝ), (fun (x : UpperHalfPlane) => g • x) = (fun (x : UpperHalfPlane) => w +ᵥ x) ∘ (fun (x : UpperHalfPlane) => ModularGroup.S • x) ∘ (fun (x : UpperHalfPlane) => v +ᵥ x) ∘ fun (x : UpperHalfPlane) => u • x

                            Canonical embedding of SL(2, ℤ) into GL(2, ℝ)⁺.

                            Equations
                            Instances For
                              @[deprecated ModularGroup.coe (since := "2024-11-19")]

                              Alias of ModularGroup.coe.


                              Canonical embedding of SL(2, ℤ) into GL(2, ℝ)⁺.

                              Equations
                              Instances For
                                @[simp]
                                theorem ModularGroup.coe_apply_complex {g : Matrix.SpecialLinearGroup (Fin 2) ℤ} {i j : Fin 2} :
                                ↑(↑↑↑g i j) = ↑(↑g i j)
                                @[deprecated ModularGroup.coe_apply_complex (since := "2024-11-19")]
                                theorem ModularGroup.coe'_apply_complex {g : Matrix.SpecialLinearGroup (Fin 2) ℤ} {i j : Fin 2} :
                                ↑(↑↑↑g i j) = ↑(↑g i j)

                                Alias of ModularGroup.coe_apply_complex.

                                @[simp]
                                theorem ModularGroup.det_coe {g : Matrix.SpecialLinearGroup (Fin 2) ℤ} :
                                (↑↑↑g).det = 1
                                @[deprecated ModularGroup.det_coe (since := "2024-11-19")]
                                theorem ModularGroup.det_coe' {g : Matrix.SpecialLinearGroup (Fin 2) ℤ} :
                                (↑↑↑g).det = 1

                                Alias of ModularGroup.det_coe.

                                theorem ModularGroup.denom_apply (g : Matrix.SpecialLinearGroup (Fin 2) ℤ) (z : UpperHalfPlane) :
                                UpperHalfPlane.denom (↑g) z = ↑(↑g 1 0) * ↑z + ↑(↑g 1 1)