Triangle Groups

We now look at a certain class of arithmetic Fuchsian groups of particular interest. We assume that Γ(1) is a triangle group, i.e. Γ has signature (0;p, q, r) for p, q, r ∈Z_≥2. Hence there exists a presentation Γ(1) isomorphic to < γp, γq, γr | γppqqrrp γq γr=1 >. Since g=0, there exists a map j from X(1)C to the projective line over C which is ramified only above the three elliptic points, the fixed points of γp, γq, γr, which we may take to be 0, 1, ∞.

There are only finitely many such triples (p, q, r), and we have implemented a constructor for these triples which yields the group Γ as well as the arithmetic data including the maximal order 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 F1-hypergeometric series to extremely high precision at complex arguments.

Contents

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).
AdmissableTriangleGroups() : -> SeqEnum
Returns the list of arithmetic triangle groups currently implemented.
IsTriangleGroup(G) : GrpPSL2 -> BoolElt
Returns true if and only if G was created as an arithmetic triangle group.

Fundamental Domain

ReduceToTriangleVertices(G,z) : GrpPSL2, SpcHypElt -> SpcHypElt
Returns points in the G-orbit of z which are nearest to the vertices of the fundamental domain for G a triangle group.

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 Q. Let K be a totally imaginary quadratic extension of F, and let OD ⊂K be a quadratic order. Suppose that K splits A, i.e. A tensor F K isomorphic to M2(K). Then there exists an embedding ιK:K -> A such that ιK(K) ∩O= OD, given by an element μ ∈O such that ZF[μ] is isomorphic to OD. The unique fixed point of ι_∞(μ) in Hh 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 Gal(H/K).

We exhibit algorithms for computing with these objects. Explicitly, given the data of a quadratic order OD contained in a imaginary quadratic extension K of F, we compute the set of Gal(H/K)-conjugates of a CM-point for OD 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 GrpPSL2Shim_Hypergeometric2F1 (H140E8)

Although programmed for use by the hypergeometric reversion procedure, involved in the calculation of CM points, the HypergeometricSeries2F1 function 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 μ 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 P1 at z, for G an arithmetic triangle group.

Example GrpPSL2Shim_Triangle239CMPoints1 (H140E9)

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 ZK has class number 1, the corresponding CM point will be a rational number. We now embed ZK into O.

> mu := Embed(Z_K, O);
> MinimalPolynomial(mu);
$.1^2 - $.1 + 2/1*Z_F.1

Finally, we compute the fixed point z of μ 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)=(35 71 192 /26) 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 μ and their complex values for G a triangle group. The element μ must be Galois-stable, i.e. F(μ) 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 GrpPSL2Shim_Triangle239CMPoints2 (H140E10)

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(α), where α 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
V2.28, 13 July 2023