Fundamental Domains#
Let \(D\) denote the unit disc and \(\Gamma\) an arithmetic Fuchsian group. A fundamental domain in \(D\) for \(\Gamma\) is a closed, hyperbolically convex region \(P \subset D\) such that the translates of \(P\) by \(\Gamma\) cover \(D\) and such that the interiors of all translates \(P\) are disjoint, i.e. \(D=\bigcup_{\gamma \in \Gamma} \gamma P\) and \({\rm int}(P) \cap {\rm int}(\gamma P) = \emptyset\) for \(\gamma \neq 1\), where \({\rm int}(P)\) denotes the interior of \(P\).
Choosing a point \(p \in D\) not fixed by any element of \(\Gamma \setminus \{1\}\), we obtain a fundamental domain by letting
Typically, one takes \(p=0\).
One can similarly define a fundamental domain in the upper half-plane \({\mathbb{H}}\), and one can bijectively map fundamental domains in \(D\) to those in \({\mathbb{H}}\) via a choice of conformal map between them. The unit disc is a more natural setting for our algorithms.
For each \(\gamma \in \Gamma \setminus \{1\}\), we define the isometric circle of \(\gamma\) to be the circle
Then in fact \(P\) is the closure of the intersection of half-spaces given by
where \(C(\gamma)^o\) denotes the exterior of \(C(\gamma)\). Our algorithm recursively finds elements in \(\Gamma\) to decrease the hyperbolic volume of this intersection until the volume \({\rm vol}(X)\) is reached; it relies upon a “reduction theory” with respect to a set of generators of \(\Gamma\).
- FundamentalDomain(G, D): GrpPSL2, SpcHyd -> SeqEnum#
Computes a fundamental domain in the unit disc \(D\) for the action of \(G\).
- FundamentalDomain(G): GrpPSL2 -> SeqEnum#
Computes a fundamental domain in the upper half-plane for the action of \(G\).
- Example: Fundamental Domains (ex-456f00)#
We first compute a fundamental domain for a quaternion algebra defined over \({\mathbb{Q}}(\zeta_7)^+\) which turns out to be the \((2,3,7)\)-triangle group.
> K<z> := CyclotomicField(7); > F := sub<K | z+1/z >; > b := F! (z+1/z); > A<i,j,k> := QuaternionAlgebra<F | b, b>; > O := MaximalOrder(A); > G := FuchsianGroup(O); > P := FundamentalDomain(G, UnitDisc()); > P; [ 0.0563466917619454773195578124639 - 0.265288162495691167957067899257*$.1, 0.0563466917619454773195578124639 + 0.265288162495691167957067899257*$.1, -0.0886504855947700264615254294500 - 4.57194956512909992886313419322E-100*$.1 ] > P := FundamentalDomain(G); > P; [ 0.496970425395180896221180392445 + (0.867767478235116240951536665696)*root(-1), -0.496970425395180896221180392445 + (0.867767478235116240951536665696)*root(-1), 6.94379666203368024633240684073E-100 + (0.753423227948677598725236624130)*root(-1) ] > ArithmeticVolume(P); 0.0238095238095238095238095238092 > ArithmeticVolume(G); 1/42 > ($1)*1.0; 0.0238095238095238095238095238095
We can visualize the domain \(P\) by using the postscript plotting tools of Chapter Congruence Subgroups of \({\operatorname{PSL}}_2({\mathbb{R}})\).
> DisplayPolygons(P, "/tmp/quat237triang.ps" : Show := true); [ -0.496970425395180896221180392445, 0.496970425395180896221180392445, 1.05000000000000000000000000000, 302.000000000000000000000000000 ]
We repeat this with the quaternion algebra over \({\mathbb{Q}}\) of discriminant \(10\).
> G := FuchsianGroup(QuaternionOrder(10)); > P := FundamentalDomain(G); > DisplayPolygons(P, "/tmp/quat10.ps" : Show := true); [ -1.31448412972780982023636168140, 0.158113883008418966599944677206, 1.27912476227312394698179550056, 235.000000000000000000000000000 ] > U, m := Group(G); > U; Finitely presented group U on 3 generators Relations U.1^3 = Id(U) U.2^3 = Id(U) U.3^3 = Id(U) (U.1^-1 * U.2^-1 * U.3^-1)^3 = Id(U)
- ShimuraReduceUnit({delta, }{gammagens, G, D}): AlgAssVOrdElt, SeqEnum[AlgAssVOrdElt], GrpPSL2, SpcHyd -> SeqEnum#
- ShimuraReduceUnit(delta, gammagens, G, D): AlgQuatElt, SeqEnum[AlgQuatElt], GrpPSL2, SpcHyd -> SeqEnum#
CreateWord : BoolElt Default: false NextSmallest: BoolElt Default: false z0 : SpcHydElt Default: 0 z1 : SpcHydElt Default: 0
Reduce the unit delta moving \(z_0\) to \(z_1\) with respect to the generators in \(\gamma_{{\rm gens}}\) by multiplying on the left or right by elements of \(\gamma_{{\rm gens}}\) inside the arithmetic Fuchsian group \(G\) to minimize the distance to the origin in the unit disc \(D\). Returns a sequence of triples containing reduced elements and the sequence on the left and right to obtain them. The argument
CreateWordreduces \(\delta\) even if \(\delta\) is in \(\gamma_{{\rm gens}}\), disallowing the trivial word.