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
non-strict variant of ModularGroup.three_le_four_mul_im_sq_of_mem_fdo
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.
For every Ο : β there is some Ξ³ β SL(2, β€) that sends it to an element whose
imaginary part is at least 1/2 and such that denom Ξ³ Ο has norm at most 1.