Triangle Groups
We now look at a certain class of arithmetic Fuchsian groups of particular interest. We assume that \(\Gamma(1)\) is a triangle group, i.e. \(\Gamma\) has signature \((0;p,q,r)\) for \(p,q,r \in {\mathbb{Z}}_\geq 2\). Hence there exists a presentation
Since \(g=0\), there exists a map \(j\) from \(X(1)_{\mathbb{C}}\) to the projective line over \({\mathbb{C}}\) which is ramified only above the three elliptic points, the fixed points of \(\gamma_p,\gamma_q,\gamma_r\), which we may take to be \(0,1,\infty\).
There are only finitely many such triples \((p,q,r)\), and we have implemented a constructor for these triples which yields the group \(\Gamma\) as well as the arithmetic data including the maximal order \({\cal O}\) and the quaternion algebra \(A\). We also compute the analytic map \(j\) for each of these groups, which includes methods for evaluating the \({}_2 F_1\)-hypergeometric series to extremely high precision at complex arguments.
Creation of Triangle Groups
We begin with the basic constructors.
- ArithmeticTriangleGroup(p, q, r): RngIntElt, RngIntElt, RngIntElt -> GrpPSL2, Rng
Returns the arithmetic triangle group of signature \((p,q,r)\).
Fundamental Domain
CM Points
For triangle groups, we can compute CM points analytically. By work of Shimura, the curve \(X(1)\) has an interpretation as a moduli space for certain abelian varieties and has a canonical model defined over \({\mathbb{Q}}\). Let \(K\) be a totally imaginary quadratic extension of \(F\), and let \(O_D \subset K\) be a quadratic order. Suppose that \(K\) splits \(A\), i.e. \(A \otimes_F K \cong M_2(K)\). Then there exists an embedding \(\iota_K:K \hookrightarrow A\) such that \(\iota_K(K) \cap {\cal O}= O_D\), given by an element \(\mu \in {\cal O}\) such that \({\mathbb{Z}}_F[\mu]\) is isomorphic to \(O_D\). The unique fixed point of \(\iota_\infty(\mu)\) in \({\mathbb{H}}\) yields a CM point on \(X(1)\) that is defined over an abelian extension \(H\) of \(F\), and there is a reciprocity law which describes the action of \({\operatorname{Gal}}(H/K)\).
We exhibit algorithms for computing with these objects. Explicitly, given the data of a quadratic order \(O_D\) contained in a imaginary quadratic extension \(K\) of \(F\), we compute the set of \({\operatorname{Gal}}(H/K)\)-conjugates of a CM-point for \(O_D\) on \(X(1)\). Our algorithm first computes representatives for the ring class group in terms of the Artin map. It then applies the Shimura reciprocity law for each of these representatives, which uses our architecture for principalization of ideals of quaternionic orders, to compute the conjugates. Given these points to high enough precision, we can recognize the CM point as a putative algebraic number.
- HypergeometricSeries2F1(A, B, C, z): FldRatElt, FldRatElt, FldRatElt, FldComElt -> FldComElt
Returns the value of the 2F1-hypergeometric function with parameters (A, B; C) at the complex number z.
- Example: Evaluating Hypergeometric 2F1 Series (ex-38d10e)
Although programmed for use by the hypergeometric reversion procedure, involved in the calculation of CM points, the
HypergeometricSeries2F1function can also be called independently to evaluate the series at any complex number at any precision.> HypergeometricSeries2F1(1/2, 1/2, 1, 1); 0.318309886183790671537767526745 > CC<I> := ComplexField(100); > HypergeometricSeries2F1(1/2, 1/3, 1/4, 1+I); 0.18914889986718938009890989889270323251621296927695426144398500333164293730405 56591516921868997204819 + 1.351650001102608291803842169004281639952000005458282 770553462137814965580416670112464388872621926752*I
- ShimuraConjugates(mu): AlgAssVOrdElt -> SeqEnum
Returns the set of conjugates of the quaternion order element \(\mu\) under the Shimura reciprocity law.
- jParameter(G, z): GrpPSL2, SpcHypElt -> FldComElt, SeqEnum
Bound : RngIntElt Default: 200 Precision: RngIntElt Default: 100
Returns the value of the map \(j:X(G) \to {\mathbb{P}}^1\) at \(z\), for \(G\) an arithmetic triangle group.
- Example: CM Point of Discriminant -7 (ex-590fd7)
Run in calculator (opens in a new tab)
We begin by constructing the \((2,3,9)\)-triangle group.
> G := ArithmeticTriangleGroup(2,3,9); > O := BaseRing(G); > Z_F := BaseRing(O);
Next, we compute the CM point corresponding to the imaginary quadratic extension \(K/F\) of discriminant \(-7\). First, we define the extension.
> Z_K := ext<Z_F | Polynomial([2,-1,1])>; > Discriminant(Z_K); Principal Ideal of Z_F Generator: [-7, 0, 0] > IsMaximal(Z_K); true > ClassNumber(AbsoluteOrder(Z_K)); 1
Since \({\mathbb{Z}}_K\) has class number \(1\), the corresponding CM point will be a rational number. We now embed \({\mathbb{Z}}_K\) into \({\cal O}\).
> mu := Embed(Z_K, O); > MinimalPolynomial(mu); $.1^2 - $.1 + 2/1*Z_F.1
Finally, we compute the fixed point \(z\) of \(\mu\) in the upper half-plane, and compute the value of the uniformizing parameter \(j(z)\).
> z := FixedPoints(G!mu, UpperHalfPlane())[1]; > j := jParameter(G, z); > j; -9594.7031249999999999999999999999999999999999999999999999999999999999999999999 99808271268634492545541 - 8.607499388211909042811249895070271789213361939086074 091584429508486426059712018492327398804638684615E-77*I > BestApproximation(Re(j), 10^50); -614061/64 > Factorization(Numerator($1)), Factorization(Denominator($1)); [ <3, 5>, <7, 1>, <19, 2> ] [ <2, 6> ]
We recognize the value \(j(z)={3^5 7^1 19^2 \over 2^6}\) as a smooth rational number.
- CMPoints(G, mu): GrpPSL2, AlgAssVOrdElt -> RngUPolElt, SeqEnum
Returns the minimal polynomial of the Galois conjugates of the CM points corresponding to \(\mu\) and their complex values for \(G\) a triangle group. The element \(\mu\) must be Galois-stable, i.e. \(F(\mu)\) must be Galois over \(F\), where \(F\) is the defining base field of \(G\). The polynomial returned is the “best guess” rational approximation to the polynomial with the CM points as roots.
- Example: Minimal Polynomial of CM Points (ex-319e1b)
Run in calculator (opens in a new tab)
We now compute the minimal polynomial for CM points which generate a nontrivial extension: we again take the \((2,3,9)\)-triangle group and now consider \(K\) of discriminant \(-11\).
> G := ArithmeticTriangleGroup(2,3,9); > O := BaseRing(G); > Z_F := BaseRing(O); > Z_K := ext<Z_F | Polynomial([3,-1,1])>; > Discriminant(Z_K); Principal Ideal of Z_F Generator: [-11, 0, 0] > IsMaximal(Z_K); true > ClassNumber(AbsoluteOrder(Z_K)); 3 > mu := Embed(Z_K, O); > time f, js := CMPoints(G, mu); Time: 18.120 > f; -127332762814175510528*x^3 + 297798194745682427904*x^2 - 545543748833233386651*x + 443957770932571793051
The number field \(H=K(\alpha)\), where \(\alpha\) is a root of \(f\), is the Hilbert class field of \(K\), which we have computed analytically!
> D := Discriminant(f); > Denominator(D); 1 > Factorization(Numerator(D)); [ <2, 32>, <3, 18>, <11, 1>, <17, 6>, <19, 12>, <73, 2>, <107, 6>, <109, 2>, <197, 2>, <271, 2>, <431, 2>, <701, 2> ] > K := AbsoluteField(NumberField(Z_K)); > H := ext<K | f>; > Factorization(Discriminant(MaximalOrder(H))); [] > IsAbelian(GaloisGroup(H)); true