The action of the modular group SL(2, β€) on the upper half-plane #
We define the action of SL(2,β€)
on β
(via restriction of the SL(2,β)
action in
Analysis.Complex.UpperHalfPlane
). We then define the standard fundamental domain
(ModularGroup.fd
, π
) for this action and show
(ModularGroup.exists_smul_mem_fd
) that any point in β
can be
moved inside π
.
Main definitions #
The standard (closed) fundamental domain of the action of SL(2,β€)
on β
, denoted π
:
fd := {z | 1 β€ (z : β).normSq β§ |z.re| β€ (1 : β) / 2}
The standard open fundamental domain of the action of SL(2,β€)
on β
, denoted πα΅
:
fdo := {z | 1 < (z : β).normSq β§ |z.re| < (1 : β) / 2}
These notations are localized in the Modular
locale and can be enabled via open scoped Modular
.
Main results #
Any z : β
can be moved to π
by an element of SL(2,β€)
:
exists_smul_mem_fd (z : β) : β g : SL(2,β€), g β’ z β π
If both z
and Ξ³ β’ z
are in the open domain πα΅
then z = Ξ³ β’ z
:
eq_smul_self_of_mem_fdo_mem_fdo {z : β} {g : SL(2,β€)} (hz : z β πα΅) (hg : g β’ z β πα΅) : z = g β’ z
Discussion #
Standard proofs make use of the identity
g β’ z = a / c - 1 / (c (cz + d))
for g = [[a, b], [c, d]]
in SL(2)
, but this requires separate handling of whether c = 0
.
Instead, our proof makes use of the following perhaps novel identity (see
ModularGroup.smul_eq_lcRow0_add
):
g β’ z = (a c + b d) / (c^2 + d^2) + (d z - c) / ((c^2 + d^2) (c z + d))
where there is no issue of division by zero.
Another feature is that we delay until the very end the consideration of special matrices
T=[[1,1],[0,1]]
(see ModularGroup.T
) and S=[[0,-1],[1,0]]
(see ModularGroup.S
), by
instead using abstract theory on the properness of certain maps (phrased in terms of the filters
Filter.cocompact
, Filter.cofinite
, etc) to deduce existence theorems, first to prove the
existence of g
maximizing (gβ’z).im
(see ModularGroup.exists_max_im
), and then among
those, to minimize |(gβ’z).re|
(see ModularGroup.exists_row_one_eq_and_min_re
).
The two numbers c
, d
in the "bottom_row" of g=[[*,*],[c,d]]
in SL(2, β€)
are coprime.
Every pair ![c, d]
of coprime integers is the "bottom_row" of some element g=[[*,*],[c,d]]
of SL(2,β€)
.
The function (c,d) β |cz+d|^2
is proper, that is, preimages of bounded-above sets are finite.
Given coprime_pair
p=(c,d)
, the matrix [[a,b],[*,*]]
is sent to a*c+b*d
.
This is the linear map version of this operation.
Equations
- ModularGroup.lcRow0 p = (β(p 0) β’ LinearMap.proj 0 + β(p 1) β’ LinearMap.proj 1) ββ LinearMap.proj 0
Instances For
Linear map sending the matrix [a, b; c, d] to the matrix [acβ + bdβ, - adβ + bcβ; c, d], for
some fixed (cβ, dβ)
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The map lcRow0
is proper, that is, preimages of cocompact sets are finite in
[[* , *], [c, d]]
.
This replaces (gβ’z).re = a/c + *
in the standard theory with the following novel identity:
g β’ z = (a c + b d) / (c^2 + d^2) + (d z - c) / ((c^2 + d^2) (c z + d))
which does not need to be decomposed depending on whether c = 0
.
For z : β
, there is a g : SL(2,β€)
maximizing (gβ’z).im
Given z : β
and a bottom row (c,d)
, among the g : SL(2,β€)
with this bottom row, minimize
|(gβ’z).re|
.
If 1 < |z|
, then |S β’ z| < 1
.
If |z| < 1
, then applying S
strictly decreases im
.
The standard (closed) fundamental domain of the action of SL(2,β€)
on β
.
Equations
- ModularGroup.fd = {z : UpperHalfPlane | 1 β€ Complex.normSq βz β§ |z.re| β€ 1 / 2}
Instances For
The standard open fundamental domain of the action of SL(2,β€)
on β
.
Equations
- ModularGroup.fdo = {z : UpperHalfPlane | 1 < Complex.normSq βz β§ |z.re| < 1 / 2}
Instances For
The standard (closed) fundamental domain of the action of SL(2,β€)
on β
.
Equations
- Modular.termπ = Lean.ParserDescr.node `Modular.termπ 1024 (Lean.ParserDescr.symbol "π")
Instances For
The standard open fundamental domain of the action of SL(2,β€)
on β
.
Equations
- Modular.Β«termπα΅Β» = Lean.ParserDescr.node `Modular.termπα΅ 1024 (Lean.ParserDescr.symbol "πα΅")
Instances For
If z β πα΅
, and n : β€
, then |z + n| > 1
.
First Fundamental Domain Lemma: Any z : β
can be moved to π
by an element of
SL(2,β€)
An auxiliary result en route to ModularGroup.c_eq_zero
.
An auxiliary result en route to ModularGroup.eq_smul_self_of_mem_fdo_mem_fdo
.
Second Fundamental Domain Lemma: if both z
and g β’ z
are in the open domain πα΅
,
where z : β
and g : SL(2,β€)
, then z = g β’ z
.