# 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

$$
P=\{z \in D:d(z,p) \leq d(z,\gamma(p)){\rm\ for\ all\ }\gamma \in \Gamma\}.
$$

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

$$
C(\gamma)=\{z \in {\mathbb{C}}: |\gamma(z)|=|z| \}.
$$

Then in fact $P$ is the closure of the intersection of half-spaces given by

$$
\bigcap_{\gamma \in \Gamma \setminus \{1\}} C(\gamma)^o
$$

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.

```magma
> 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}})$](../CongruenceSubgroupsOfPSL2R/index-congruence-subgroups-of-psl2-r.md#chapgrppsl2).

```magma
> 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$.

```magma
> 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`

```magma
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 `CreateWord` reduces $\delta$ even if $\delta$ is in $\gamma_{{\rm gens}}$, disallowing the trivial word.
