Group action on the upper half-plane #
We equip the upper half-plane with the structure of a GL (Fin 2) ℝ action by fractional linear
transformations (composing with complex conjugation when needed to extend the action from the
positive-determinant subgroup, so that !![-1, 0; 0, 1] acts as z ↦ -conj z.)
Fractional linear transformation, also known as the Moebius transformation
Instances For
@[implicit_reducible]
Action of GL (Fin 2) ℝ on the upper half-plane, with GL(2, ℝ)⁺ acting by Moebius
transformations in the usual way, extended to all of GL (Fin 2) ℝ using complex conjugation.
theorem
UpperHalfPlane.coe_smul_of_det_pos
{g : GL (Fin 2) ℝ}
(hg : 0 < ↑(Matrix.GeneralLinearGroup.det g))
(z : UpperHalfPlane)
:
theorem
UpperHalfPlane.glPos_smul_def
{g : GL (Fin 2) ℝ}
(hg : 0 < ↑(Matrix.GeneralLinearGroup.det g))
(z : UpperHalfPlane)
:
@[simp]
@[implicit_reducible]
theorem
UpperHalfPlane.coe_specialLinearGroup_apply
{R : Type u_1}
[CommRing R]
[Algebra R ℝ]
(g : Matrix.SpecialLinearGroup (Fin 2) R)
(z : UpperHalfPlane)
:
↑(g • z) = (↑((algebraMap R ℝ) (↑g 0 0)) * ↑z + ↑((algebraMap R ℝ) (↑g 0 1))) / (↑((algebraMap R ℝ) (↑g 1 0)) * ↑z + ↑((algebraMap R ℝ) (↑g 1 1)))
theorem
UpperHalfPlane.specialLinearGroup_apply
{R : Type u_1}
[CommRing R]
[Algebra R ℝ]
(g : Matrix.SpecialLinearGroup (Fin 2) R)
(z : UpperHalfPlane)
:
g • z = { coe :=
(↑((algebraMap R ℝ) (↑g 0 0)) * ↑z + ↑((algebraMap R ℝ) (↑g 0 1))) / (↑((algebraMap R ℝ) (↑g 1 0)) * ↑z + ↑((algebraMap R ℝ) (↑g 1 1))),
coe_im_pos := ⋯ }
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
The matrix [-1, 0; 0, 1], which defines an anti-holomorphic involution of ℍ via
τ ↦ -conj τ.
Instances For
noncomputable def
ModularGroup.coe
(g : Matrix.SpecialLinearGroup (Fin 2) ℤ)
:
↥(Matrix.GLPos (Fin 2) ℝ)
Canonical embedding of SL(2, ℤ) into GL(2, ℝ)⁺.
Instances For
@[simp]
@[implicit_reducible]
noncomputable instance
ModularGroup.instCoeSpecialLinearGroupFinOfNatNatIntSubtypeGeneralLinearGroupRealMemSubgroupGLPos :
Coe (Matrix.SpecialLinearGroup (Fin 2) ℤ) ↥(Matrix.GLPos (Fin 2) ℝ)
Canonical embedding of SL(2, ℤ) into GL(2, ℝ)⁺, bundled as a group hom.
Instances For
@[simp]
@[simp]
@[simp]
@[implicit_reducible]
noncomputable instance
ModularGroup.SLOnGLPos :
SMul (Matrix.SpecialLinearGroup (Fin 2) ℤ) ↥(Matrix.GLPos (Fin 2) ℝ)
theorem
ModularGroup.SLOnGLPos_smul_apply
(s : Matrix.SpecialLinearGroup (Fin 2) ℤ)
(g : ↥(Matrix.GLPos (Fin 2) ℝ))
(z : UpperHalfPlane)
:
instance
ModularGroup.SL_to_GL_tower :
IsScalarTower (Matrix.SpecialLinearGroup (Fin 2) ℤ) (↥(Matrix.GLPos (Fin 2) ℝ)) UpperHalfPlane
@[simp]
@[simp]
theorem
ModularGroup.im_smul_eq_div_normSq
(g : Matrix.SpecialLinearGroup (Fin 2) ℤ)
(z : UpperHalfPlane)
:
(g • z).im = z.im / Complex.normSq
(UpperHalfPlane.denom (Matrix.SpecialLinearGroup.toGL ((Matrix.SpecialLinearGroup.map (Int.castRingHom ℝ)) g)) ↑z)
theorem
ModularGroup.denom_apply
(g : Matrix.SpecialLinearGroup (Fin 2) ℤ)
(z : UpperHalfPlane)
:
UpperHalfPlane.denom (Matrix.SpecialLinearGroup.toGL ((Matrix.SpecialLinearGroup.map (Int.castRingHom ℝ)) g)) ↑z = ↑(↑g 1 0) * ↑z + ↑(↑g 1 1)
@[simp]