|
In this section functions that access information about a Riemann surface are
described. While most of these functions apply to both types of Riemann surface,
some only apply to non-superelliptic Riemann surfaces.
The base point of the Riemann surface X.
The genus of the Riemann surface X.
The degree of the holomorphic map to the projective line that is used
to construct the Riemann surface X.
The precision to which the Riemann surface X has been constructed.
The complex embedding σ that is used to define the Riemann
surface X.
The big period matrix associated to the Riemann surface X.
Check: BoolElt Default: true
The small period matrix associated with the Riemann surface X. If parameter
Check is set to true, the small period matrix is checked to be a symmetric
matrix (up to the prescribed precision) with a positive definite imaginary part.
The function field of the defining polynomial of the Riemann surface X.
This is only available for non-superelliptic Riemann surfaces.
Some of these intrinsics will be demonstrated. Note that while the
computation of the Riemann surface invariants has used a precision of
100 decimal digits, for reasons of brevity the period matrices are
printed to just 12 decimal digits.
> Qt<t> := PolynomialRing(Rationals());
> K<s> := NumberField(t^2 + 1);
> y<x,y> := PolynomialRing(K,2);
> f := -s^2*x^7 + 2*s*x^3*y + y^3;
> sigma := InfinitePlaces(K)[1];
> X := RiemannSurface(f,sigma : Precision:=100);
>
> BasePoint(X);
(-2.000000000, -3.424546085 - 4.898716927*I)
>
> Genus(X);
2
>
> BigPeriodMatrix(X);
[ 1.57333990636 - 1.14309835298*I, -2.91713261396 + 0.706473634625*I,
-1.34379270760 + 1.84957198760*I, -0.371415169614 - 1.14309835298*I ]
[ -1.15879743459 - 0.376516110443*I, -1.87497363525 - 1.82764759203*I,
-0.716176200654 - 2.20416370247*I, -1.15879743459 - 1.59494783846*I ]
>
> SmallPeriodMatrix(X);
[ -0.164199030444 + 0.817677768561*I, 0.683580096956 + 0.0368649791982*I ]
[ 0.683580096956 + 0.0368649791982*I, 0.449259709133 + 0.252676326408*I
>
Intrinsics for constructing the branch points and fundamental group
are described. While most of these functions apply to both types of
Riemann surface, some only apply to non-superelliptic Riemann surfaces.
DiscriminantPoints(f, sigma) : RngMPolElt, PlcNumElt -> SeqEnum[FldComElt]
DiscriminantPoints(X) : RieSrf -> SeqEnum[FldComElt]
The discriminant points of the defining polynomial with respect to the second variable
embedded into C using an infinite place.
The projections of the ramification points of the Riemann surface X to the projective
line.
The ramification points of the ramified holomorphic map to the projective line used for
the construction of X.
While the Riemann surface itself is non-singular, this function returns the projective
coordinates of the singular points of the projective closure of the underlying affine
curve.
BasePoint: MonStgElt Default: "Clever"
Given a set P of discriminant points this intrinsic returns a description of the
fundamental group π1(C - P, x0) of the punctured complex plane with
base point x0. The paths are constructed by modifying an euclidean spanning tree
between the discriminant points by adding arcs and circles around the points. Options
for BasePoint are "Clever" (positions the base point in the middle of
the longest line segment), "Left" (base point on the negative real axis, left
of all discriminant points) or a complex number specified by the user.
Extended: BoolElt Default: true
Given a Riemann surface X with discriminant points D = { x1 ... xk }
and punctured surface S = C - D return the chains of paths in the complex plane that
generate the fundamental group π1(S, x0), where x0 is the x-coordinate of the
base point of X. If the parameter Extended is set to true, a chain around infinity
is returned as well, therefore generating π1(P1(C) - (S ∪{ ∞ }), x0).
The lifts of these chains represent a homology basis for X. This intrinsic
is only available for non-superelliptic Riemann surfaces.
A description of the monodromy of the Riemann surface X is returned.
> Qxy<x,y> := PolynomialRing(Rationals(),2);
> f := -x^7 + 2*x^3*y + y^3;
> X := RiemannSurface(f);
> FG := FundamentalGroup(X);
> FG;
[
Closed chain consisting of 4 paths starting at -2.000000000 around
-1.034563716
Permutation: (2, 3)
Integrals: true
,
Closed chain consisting of 11 paths starting at -2.000000000 around
0.0000000000
Permutation: (1, 3)
Integrals: true
,
Closed chain consisting of 17 paths starting at -2.000000000 around
-0.3196977700 - 0.9839285636*I
Permutation: (2, 3)
Integrals: true
,
Closed chain consisting of 15 paths starting at -2.000000000 around
0.8369796280 - 0.6081012948*I
Permutation: (1, 2)
Integrals: true
,
Closed chain consisting of 13 paths starting at -2.000000000 around
0.8369796280 + 0.6081012948*I
Permutation: (2, 3)
Integrals: true
,
Closed chain consisting of 11 paths starting at -2.000000000 around
-0.3196977700 + 0.9839285636*I
Permutation: (1, 2)
Integrals: true
,
Closed chain consisting of 71 paths starting at -2.000000000 around Infinity
Permutation: (1, 3, 2)
Integrals: true
]
> d := #FG;
> &*[ FG[k] : k in [1..d-1] ]^(-1) eq FG[d];
true
> [ FG[k]`Center : k in [1..d-1] ] eq DiscriminantPoints(X);
true
> M := MonodromyRepresentation(X);
> M;
[
(2, 3),
(1, 3),
(2, 3),
(1, 2),
(2, 3),
(1, 2),
(1, 3, 2)
]
> #M eq #[ Chain`Permutation : Chain in FG | Order(Chain`Permutation) ne 1 ];
true
> &and[ Chain`StartPt eq Representation(BasePoint(X))[1] : Chain in FG ];
true
In the case of a superelliptic Riemann surface, a basis of the form
ωi, j = xi dx / yj is used. The condition on the pair
(i, j) ∈Z2 is provided by [Neu18, Proposition 5.18].
Hence in this case, a tuple containing all the pairs [i, j] corresponding
to such differentials is returned.
In the case of a Riemann surface, the function HomologyBasis returns a third value,
namely the symplectic base change matrix that has been used for the computation of
the big period matrix. The Riemann surface package always uses the canonical basis
of the form
J = [ 0 I_g | -I_g 0 ].
This intrinsic computes the basis of holomorphic differentials
used for the computation of the period matrix and the Abel--Jacobi map. The
actual information returned depends upon whether X is superelliptic or not.
The general (non-superelliptic) case will be considered first. If the genus
g of X equals the number of integral points on the interior of the Newton
polygon associated with its defining polynomial, the basis used consists of
ω = xi yj dx / dy f(x, y) where (i, j) ∈Z2 consists of
aforementioned integral points. In this case a tuple is returned that
contains a list of the pairs [i, j] as first entry and dy f(x, y) as
second entry.
In the case where the genus is not equal to the number of integral interior points
if, for example, the projective curve is singular outside {(0:0:1), (0:1:0), (1:0:0)},
the basis used is that computed by the function field machinery, and embedded into C
using the mapping σ.
Let FFX denote FunctionField(X). Specifically, this intrinsic returns
the basis calculated by the intrinsic BasisOfDifferentialsFirstKind(FFX)
represented as products of irreducible factors: a list of irreducible factors
[ a1, ..., ak ] for some k > 0 and a (k x g) integer matrix of
multiplicities (bi, j) such that a basis is given by
ωj = ∏i=1k aibi, j, j = 1, .., g.
In the following example the projective closure of the affine curve is singular
at (0:0:1) and (0:1:0), so that the first basis described above can be used.
> Qxy<x,y> := PolynomialRing(Rationals(),2);
> f := -x^7 + 2*x^3*y + y^3;
> X := RiemannSurface(f);
> HolomorphicDifferentials(X);
<[ [ 2, 2 ], [ 4, 1 ] ], 2*x^3 + 3*y^2>
However, if the singularity is moved to ( - 1:0:1), the basis as provided by
the function field machinery is used. In the following example it can be easily
seen that this function returns the corresponding product representation.
> f_trans := Evaluate(f,[x+1,y]);
> X_trans := RiemannSurface(f_trans);
> HolomorphicDifferentials(X_trans);
< [ y, 2/3*x^3 + 2*x^2 + 2*x + y^2 + 2/3, x + 1 ],
[ 1 0]
[-1 -1]
[ 1 3] >
> BasisOfDifferentialsFirstKind(FunctionField(X));
[ ((x) * (y) * (2/3*x^3 + y^2)^-1) d(x), ((x)^3 * (2/3*x^3 + y^2)^-1) d(x) ]
The holomorphic differentials of the superelliptic Riemann surface of genus
21 defined by y 8 = B(8) where B(n) is the n-th Bernoulli polynomial
will be computed.
> p<x> := BernoulliPolynomial(8);
> p;
x^8 - 4*x^7 + 14/3*x^6 - 7/3*x^4 + 2/3*x^2 - 1/30
> X := RiemannSurface(BernoulliPolynomial(8),8);
> Genus(X);
21
> HolomorphicDifferentials(X);
<[ 0, 2 ], [ 0, 3 ], [ 1, 3 ], [ 0, 4 ], [ 1, 4 ], [ 2, 4 ], [ 0, 5 ],
[ 1, 5 ], [ 2, 5 ], [ 3, 5 ], [ 0, 6 ], [ 1, 6 ], [ 2, 6 ], [ 3, 6 ],
[ 4, 6 ], [ 0, 7 ], [ 1, 7 ], [ 2, 7 ], [ 3, 7 ], [ 4, 7 ], [ 5, 7 ]>
> Genus(X) eq #HolomorphicDifferentials(X);
true
Check: BoolElt Default: true
Given a sequence L containing permutation generators of the monodromy group,
the homology basis used for computing the period matrix is returned. Two objects
are returned: a sequence of integer sequences each of which defines an element
of the homology group and an intersection matrix. If the parameter Check
is set true, several tests for correctness are performed.
Check: BoolElt Default: true
Given a Riemann surface X the homology basis used for computing the period matrix
is returned. Three objects are returned: a sequence of integer sequences each of which
defines an element of the homology group, an intersection matrix and the symplectic
base change matrix that has been used for the computation of the big period matrix.
If the parameterCheck is set true several tests for correctness are performed.
In this example the homology basis will be computed from the monodromy representation.
> Qxy<x,y> := PolynomialRing(Rationals(),2);
> f := x^4*y^8 - x - y^8 + y^2 + 1;
> Chains := MonodromyRepresentation(f);
> MonRep := [ Ch`Permutation : Ch in Chains ];
> MonRep;
[
(1, 2, 6, 8, 7, 3),
(3, 5)(4, 6),
(2, 4)(5, 7),
(1, 2, 6, 8, 7, 3),
(2, 4)(5, 7),
(1, 2, 6, 8, 7, 3)(4, 5),
(2, 5)(4, 7),
(1, 5)(4, 8),
(3, 5)(4, 6),
(1, 2, 6, 8, 7, 3),
(3, 5)(4, 6),
(1, 7, 4, 3, 8, 2, 5, 6)
]
Using the permutation generators the monodromy group will be constructed.
> MonGroup := PermutationGroup< Degree(f,2) | MonRep >;
> IsTransitive(MonGroup);
true
> #MonGroup;
384
> Cycles, IntersectionMatrix := HomologyBasis(MonRep);
> Cycles[20];
[ 1, 4, 8, 1, 1 ]
The sequence of integers Cycles[20] above defines a non-trivial element of the
homology group in the following way. It encodes a path starting on sheet 1, circling
discriminant point d4 until one arrives at sheet 8, then continues circling
discriminant point d1 until it returns to sheet 1. More explicitly, it can be
expressed as the analytic continuation of the chain {Chains[4]}3 * {Chains[1]}3,
starting and ending on the first sheet. Indeed, the permutation associated with
the concatenation of chains turns out to be the identity:
> Chains[4]^3 * Chains[1]^3;
Closed chain consisting of 36 paths starting at
-0.5034246870 - 0.4967763264*I
Permutation: Id($)
The homology basis for the big period matrix will be computed for
the Riemann surface X defined by the polynomial y 2 + x 3 - 1.
> Qxy<x,y> := PolynomialRing(Rationals(),2);
> X := RiemannSurface(y^2 + x^3 - 1);
> Cycles, IntersectionMat, SymplecticTransform := HomologyBasis(X);
The canonical homology basis is now found by matrix multiplication.
> SymplecticTransform * IntersectionMat * Transpose(SymplecticTransform);
[ 0 1 0]
[-1 0 0]
[ 0 0 0]
[Next][Prev] [Right] [Left] [Up] [Index] [Root]
|