> R<x> := PolynomialRing(GF(5)); > P<y> := PolynomialRing(R); > F<alpha> := FunctionField(x*y^2 - 1);
> R<x> := FunctionField(GF(5)); > P<y> := PolynomialRing(R); > F<alpha> := ext< R | y^2 - 1/x >;
> F; Algebraic function field defined over GF(5) by y^2 + 4/x
Check: BoolElt Default: true
Let k be a field and K := k(x). Given an irreducible and separable polynomial f in K[y] of degree greater zero with coefficients within the rational function field K, create the algebraic function field F= K[y] / < f > = k(x, alpha) obtained by adjoining a root alpha of f to K. F will be viewed as a (finite) extension of K. The polynomial f is also allowed to be in k[x][y].
The optional parameter Check may be used to prevent some conditions from being tested. The default is Check := true, so that f is verified to be irreducible and separable.
The angle bracket notation may be used to assign the root alpha to an identifier: F<a> := FunctionField(f).
Check: BoolElt Default: true
Let k be a field. Given an irreducible polynomial f in k[x, y] of degree greater than zero, create the algebraic function field F which is the field of fractions of k[x, y] / < f >. The polynomial f must be separable in at least one variable. F will be viewed as (infinite) extension of k.
The optional parameter Check may be used to prevent some conditions from being tested. The default is Check := true, so that f is verified to be irreducible and separable in at least one variable.
The angle bracket notation may be used to assign the images of x, y in F to identifiers: F<a, b> := FunctionField(f).
Create the Hermitian function field F = GF(q^2)(x, alpha) defined by alpha^q + alpha = x^(q + 1), where q is the d-th power of the prime number p.
Procedure to change the name of the generating element(s) in the function field F (a in F) to the contents of the sequence of strings s, which must have length 1 or 2 in this case.
This procedure only changes the name(s) used in printing the elements of F. It does not assign to any identifier(s) the value(s) of the generator(s) in F; to do this, use an assignment statement, or use angle brackets when creating the field.
Note that since this is a procedure that modifies F, it is necessary to have a reference ~F to F (or a) in the call to this function.
Let GF(5) be the finite field of five elements. To create the function field extension GF(5)(x, alpha) / GF(5)(x), where a satisfies alpha^2 = 1/x, one may proceed in the following, equivalent ways:
> R<x> := FunctionField(GF(5)); > P<y> := PolynomialRing(R); > F<alpha> := FunctionField(y^2 - 1/x);
The creation of an Hermitian function field:
> F := HermitianFunctionField(9); > F; Algebraic function field defined over GF(3^4) by y^9 + y + 2*x^10
The function field F = k(x, alpha) may be viewed as n-dimensional vector space over k(x), where n is the degree of the field extension F/k(x). Note that F is spanned by the powers 1, alpha, ..., alpha^(n - 1). Within Magma, function field elements are printed as k(x)-linear combinations of these powers of alpha.
- Return the generator for the function field F over k(x), that is, alpha in F such that F = k(x, alpha).
- Return the first and second generators for the function field F over k, that is, alpha in F and x in F such that F = k(x, alpha).
Given a function field F, return the i-th generator, i.e. return the element alpha = F.1 or x= F.2 of F.
Create the element of F specified by a; here a is allowed to be an element coercible into F, which means that a may be:For F an extension of k(x) we additionally have
- an element of F,
- an element of the base ring of F,
- an element of another representation of F.
- an element of an order of F,
- an element being coercible into k(x),
- a sequence of elements being coercible into k(x) of length equal to the degree of F over k(x). In this case the element a_0 + a_1 alpha + ... + a_(n - 1) alpha^(n - 1) is created, where a=[a_0, ..., a_(n - 1)] and alpha is the generator F.1 of F over k(x).
Create the element a_0 + a_1 alpha + ... + a_(n - 1) alpha^(n - 1) where a_0, ..., a_(n - 1) are coercible into k(x), n equals the degree of F over k(x) and alpha is the generator F.1 of F over k(x).
A "random" element of the global function field F. The size of the coefficients of the element are determined by m.
Lift the element x of the residue class field of the place P (including infinity) to an algebraic function.
> R<x> := FunctionField(GF(5)); > P<y> := PolynomialRing(R); > f := y^3 + (4*x^3 + 4*x^2 + 2*x + 2)*y^2 + (3*x + 3)*y + 2; > F<alpha> := FunctionField(f); > Evaluate(f, alpha); 0 > F.1; alpha > b := x + alpha + 1/x*alpha^2; > b; 1/x*alpha^2 + alpha + x > b eq F ! [x, 1, 1/x]; true
Function fields form the Magma category FldFun. The notional power structure exists as parent of function fields but allows no operations.
The prime field of the function field F.
The constant field k, where F = k(x, alpha).
The exact constant field of the algebraic function field F/k, i.e. the algebraic closure in F of the constant field k of F, together with the inclusion map.
The rational function field k(x) if the function field F is an extension of k(x) and k if F is an extension of k.
The function field F itself.
The `finite' and `infinite' equation and maximal orders of the function field F/k(x) with respect to the fixed separating element x.
Given a function field F, this function constructs the integral closure of a (suitable) subring R within F.
The set of places of the algebraic function field F/k.
The group of divisors of the algebraic function field F/k.
The space of differentials of the algebraic function field F/k.
> R<x> := FunctionField(GF(5)); > P<y> := PolynomialRing(R); > f := y^3 + (4*x^3 + 4*x^2 + 2*x + 2)*y^2 + (3*x + 3)*y + 2; > F<alpha> := FunctionField(f); > ConstantField(F); Finite field of size 5 > IntegralClosure(R, F); Algebraic function field defined over GF(5) by y^3 + (4*x^3 + 4*x^2 + 2*x + 2)*y^2 + (3*x + 3)*y + 2 > IntegralClosure(PolynomialRing(GF(5)), F); Maximal Order of F over Univariate Polynomial Ring in x over GF(5) > IntegralClosure(ValuationRing(R), F); Maximal Order of F over Valuation ring of Rational function field of rank 1 over GF(5) Variables: x with generator 1/x > FieldOfFractions(IntegralClosure(ValuationRing(R), F)); Algebraic function field defined over GF(5) by y^3 + (4*x^3 + 4*x^2 + 2*x + 2)*y^2 + (3*x + 3)*y + 2 > Places(F); Set of places of F > DivisorGroup(F); Divisor group of F
GF(q) of the elliptic function field E: y^2 + xy + x^3 + ax^2 + b defined over GF(q^n) where q is a power of 2. Also returns a function which can be used to map a place (not a pole or zero of x) of F into a divisor of the result. See [Gau00]. Reduction indicates whether a (possibly quite expensive) reduction step is performed at the end of the computation. It defaults to true.
The curve with function field F if F was created from a curve. See Section Function Fields.
The projective curve with function field F if F was created from a curve. See Section Function Fields.
The characteristic of the function field F/k.
The dimension of the exact constant field of F/k over k. The exact constant field is the algebraic closure of k in F.
The genus of the function field F/k.
SeparatingElement: FldFunGElt Default:
The sequence of global gap numbers of the function field F/k (in characteristic zero this is always [1, ..., g]). A separating element used internally for the computation can be specified, it defaults to SeparatingElement(F). See the description of tttRef{DivFunElt:GapNumbers}.
The sequence of gap numbers of the function field F/k at P where P must be a place of degree one. See the description of tttRef{DivFunElt:GapNumbers}.
Returns a separating element of F/k.
SeparatingElement: FldFunGElt Default:
The ramification divisor of F/k. The semantics of calling RamificationDivisor() with F or the zero divisor of F are identical. For further details see the description of tttRef{DivFunElt:RamificationDivisor}.
SeparatingElement: FldFunGElt Default:
The Weierstrass places of F/k. The semantics of calling WeierstrassPlaces() with F or the zero divisor of F are identical. See the description of tttRef{DivFunElt:WeierstrassPlaces}.
SeparatingElement: FldFunGElt Default:
The Wronskian orders of F/k. The semantics of calling WronskianOrders() with F or the zero divisor of F are identical. See the description of tttRef{DivFunElt:WronskianOrders}.
The defining polynomial of the function field F over its base ring.
rational function field.
The degree [F:G] of the field extension F/G for G the base ring of F.
The k(x)-basis 1, alpha, ..., alpha^(n - 1) of the function field F/k(x).
Finding Galois groups (of normal closures) of polynomials over rational function fields over k in {Q, F_q}, where F_q denotes the finite field of characteristic p with q=p^r, r in Z_( >= 0) is a hard problem, in general. All practical algorithms use the classification of transitive groups, which is known up to degree 31 [CHM98] These algorithms fall into two groups: The absolute resolvent method [SM85] and the method of Stauduhar [Sta73].
The Magma implementation is based on an extension of the method of Stauduhar and yields proven results for polynomials up to degree 23. In contrast to the absolute resolvent method, it also provides the explicit action on the roots of the polynomial f which generates the function field. The algorithm strongly depends on the fact that the corresponding problem is implemented for the residue class field.
Roughly speaking, the method of Stauduhar traverses the subgroup lattice of transitive permutation groups of degree n from the symmetric group to the actual Galois group. This is done by using so-called relative resolvents. Resolvents are polynomials whose splitting fields are subfields of the splitting field of the given polynomial which are computed using approximations of the roots of the polynomial f.
If the Galois group is imprimitive the current implementation for polynomials over Q(t) changes the starting point of the algorithm in the subgroup lattice, to get as close as possible to the actual Galois group. This is done via computation of subfields of a stem field of f, that is the field extension of k(t) which we get by adjoining a root of f to k(t). Unfortunately there is no subfield algorithm for polynomials over F_q(t) in the current release. In the case Q(t) the Galois group is found as a subgroup of the intersection of suitable wreath products (using the knowledge of the subfields) which may be easily computed.
In the case k=Q we use for primitive groups a combination of the method of Stauduhar and the absolute resolvent method. The Frobenius automorphism of the underlying field already determines a subgroup of the Galois group, which is used to speed up computations in the primitive case.
SetVerbose("GaloisGroup", n): Maximum: 5
over the rational function field k(t), K in {Q, F_q}, q != 2, this function returns a permutation group that forms the Galois group of the normal closure of F=k[t][x]/f(t, x)k[t][x] in some algebraic closure of k(t). The permutation group acts on the points 1, 2, ..., n. The roots of f are calculated in the process, expressed as power series and returned as the second argument: For a prime polynomial p(t) in k(t) denote by bar(N) the splitting field of the polynomial f(t, x) mod p(t). It is well known that the roots of the polynomial f(t, x) can be expressed as power series in bar(N)[[t]]. In the case k=Q we embed bar(N) in an unramified p-adic extension, in the case k=F_q the splitting field is easily computed. The prime polynomial, which is used for the series computations is returned as a third argument. Currently this function is restricted to polynomials of degree n le23.The required precision increases linearly with the index of the subgroups, which are passed traversing the subgroup lattice. Therefore computations may slow down considerably for higher degrees and large indices.
The default version employs series computations over either unramified p-adic fields (k=Q) or finite fields (k=F_q) and returns proven results. The prime polynomial is determined during a Galois group computation in such a way that f is squarefree modulo p.
There are no optional parameters.
> k<t>:= FunctionField(Rationals());
> R<x>:= PolynomialRing(k);
> f:= x^15 + (-1875*t^2 - 125)*x^3 + (4500*t^2 + 300)*x^2 +
> (-3600*t^2 - 240)*x + 960*t^2+ 64;
> G, r, p:= GaloisGroup(f);
> G;
Permutation group G acting on a set of cardinality 15
(3, 6, 9, 12, 15)
(3, 6)(9, 12)
(1, 4)(11, 14)
(1, 6, 11)(2, 7, 12)(3, 8, 13)(4, 9, 14)(5, 10, 15)
(1, 11)(2, 7)(4, 14)(5, 10)(6, 9)(8, 13)
> A := Universe(r);
> AssignNames( A, ["t"]);
> r;
[
[[-119, 0], [68, 175], [101, -137]]*t + [[37, 0], [161, -90], [-14, -149]],
[[-119, 0], [-69, -13], [-110, 67]]*t + [[37, 0], [118, 17], [-117, 173]],
[[-119, 0], [1, -162], [9, 70]]*t + [[37, 0], [82, 73], [131, -24]],
[[170, -59], [-110, 178], [113, -17]]*t + [[40, 77], [53, 120], [-168, 53]],
[[170, -59], [101, -170], [145, 90]]*t + [[40, 77], [-6, -143], [40, -47]],
[[170, 59], [-176, -13], [75, -147]]*t + [[40, -77], [141, -89], [18,
-142]],
[[170, 59], [-55, -162], [-121, 35]]*t + [[40, -77], [-159, 85], [-159,
51]],
[[170, 59], [-130, 175], [46, 112]]*t + [[40, -77], [18, 4], [141, 91]],
[[170, -59], [9, -8], [103, -73]]*t + [[40, 77], [-47, 23], [128, -6]],
[[70, 35], [56, -27], [131, 0]]*t + [[122, -102], [142, -170], [-30, 47]],
[[70, -35], [-100, 39], [-67, 92]]*t + [[122, 102], [-39, 130], [32, 138]],
[[70, -35], [59, 125], [-70, 150]]*t + [[122, 102], [-125, 176], [-42,
-136]],
[[70, -35], [41, -164], [137, 119]]*t + [[122, 102], [164, 55], [10, -2]],
[[70, 35], [-163, -31], [-14, 0]]*t + [[122, -102], [-91, -8], [-96, 6]],
[[70, 35], [107, 58], [-117, 0]]*t + [[122, -102], [-51, 178], [126, -53]]
]
> p;
t - 1
> t1, t2:= TransitiveGroupIdentification(G);
> t1;
99
> t2;
15
Some examples for polynomials over rational function fields over finite fields
> k<x>:= FunctionField(GF(1009)); > R<y>:= PolynomialRing(k); > f:= y^10 + (989*x^4 + 20*x^3 + 989*x^2 + 20*x + 989)*y^8 + (70*x^8 + > 869*x^7 + 310*x^6 + 529*x^5 + 600*x^4 + 479*x^3 + 460*x^2 + 719*x + > 120)*y^6 + (909*x^12 + 300*x^11 + 409*x^10 + 1000*x^9 + 393*x^8 + > 657*x^7 + 895*x^6 + 764*x^5 + 420*x^4 + 973*x^3 + 177*x^2 + 166*x + > 784)*y^4 + (65*x^16 + 749*x^15 + 350*x^14 + 909*x^13 + 484*x^12 + > 452*x^11 + 115*x^10 + 923*x^9 + 541*x^8 + 272*x^7 + 637*x^6 + 314*x^5 + > 724*x^4 + 490*x^3 + 948*x^2 + 99*x + 90)*y^2 + 993*x^20 + 80*x^19 + > 969*x^18 + 569*x^17 + 895*x^16 + 101*x^15 + 742*x^14 + 587*x^13 + > 55*x^12+ 437*x^11 + 97*x^10 + 976*x^9 + 62*x^8 + 171*x^7 + 930*x^6 + > 604*x^5 + 698*x^4 + 60*x^3 + 60*x^2 + 1004*x + 1008; > G, r, p:= GaloisGroup(f); > t1, t2:= TransitiveGroupIdentification(G); > t1; 1 > t2; 10
> k<t>:= FunctionField(GF(7));
> R<x>:= PolynomialRing(k);
> f:= x^12 + x^10 + x^8 + (6*t^2 + 3)*x^6 + (4*t^4 + 6*t^2 + 1)*x^4 +
> (5*t^4 + t^2)*x^2 + 2*t^4;
> G, r, p:= GaloisGroup(f);
> G;
Permutation group G acting on a set of cardinality 12
(2, 8)(3, 9)(4, 10)(5, 11)
(1, 5, 9)(2, 6, 10)(3, 7, 11)(4, 8, 12)
(1, 12)(2, 3)(4, 5)(6, 7)(8, 9)(10, 11)
> A := Universe(r);
> AssignNames( A, ["t"]);
> r;
[
w^950*t^13 + w^1350*t^12 + w^1900*t^11 + w^500*t^10 + w^2050*t^9 + 2*t^8 +
w^1350*t^7 + w^300*t^6 + w^350*t^5 + w^1450*t^4 + w^950*t^3 + w^1000*t^2
+ w^1100*t + w^550,
w^1175*t^13 + w^1825*t^12 + w^1675*t^11 + w^725*t^10 + w^1025*t^9 +
w^1825*t^8 + w^1325*t^7 + w^775*t^6 + w^1775*t^5 + w^1325*t^4 +
w^1575*t^3 + w^1175*t^2 + w^2225*t + w^2275,
w^25*t^13 + w^1075*t^12 + w^425*t^11 + w^925*t^10 + w^225*t^9 + w^2375*t^8 +
w^2125*t^7 + w^625*t^6 + w^1175*t^5 + w^425*t^4 + w^575*t^3 + w^825*t^2
+ w^1175*t + w^2375,
w^175*t^13 + w^1525*t^12 + w^575*t^11 + w^475*t^10 + w^1575*t^9 + w^1025*t^8
+ w^475*t^7 + w^775*t^6 + w^1025*t^5 + w^1775*t^4 + w^1625*t^3 +
w^2175*t^2 + w^1025*t + w^1025,
w^1025*t^13 + w^1975*t^12 + w^2125*t^11 + w^1475*t^10 + w^2375*t^9 +
w^1975*t^8 + w^2075*t^7 + w^1825*t^6 + w^425*t^5 + w^875*t^4 +
w^1425*t^3 + w^2225*t^2 + w^1175*t + w^325,
w^650*t^13 + w^2250*t^12 + w^100*t^11 + w^1100*t^10 + w^1150*t^9 + 2*t^8 +
w^1050*t^7 + w^2100*t^6 + w^1250*t^5 + w^550*t^4 + w^650*t^3 +
w^2200*t^2 + w^1700*t + w^1450,
w^2150*t^13 + w^150*t^12 + w^700*t^11 + w^1700*t^10 + w^850*t^9 + 5*t^8 +
w^150*t^7 + w^1500*t^6 + w^1550*t^5 + w^250*t^4 + w^2150*t^3 +
w^2200*t^2 + w^2300*t + w^1750,
w^2375*t^13 + w^625*t^12 + w^475*t^11 + w^1925*t^10 + w^2225*t^9 + w^625*t^8
+ w^125*t^7 + w^1975*t^6 + w^575*t^5 + w^125*t^4 + w^375*t^3 +
w^2375*t^2 + w^1025*t + w^1075,
w^1225*t^13 + w^2275*t^12 + w^1625*t^11 + w^2125*t^10 + w^1425*t^9 +
w^1175*t^8 + w^925*t^7 + w^1825*t^6 + w^2375*t^5 + w^1625*t^4 +
w^1775*t^3 + w^2025*t^2 + w^2375*t + w^1175,
w^1375*t^13 + w^325*t^12 + w^1775*t^11 + w^1675*t^10 + w^375*t^9 +
w^2225*t^8 + w^1675*t^7 + w^1975*t^6 + w^2225*t^5 + w^575*t^4 +
w^425*t^3 + w^975*t^2 + w^2225*t + w^2225,
w^2225*t^13 + w^775*t^12 + w^925*t^11 + w^275*t^10 + w^1175*t^9 + w^775*t^8
+ w^875*t^7 + w^625*t^6 + w^1625*t^5 + w^2075*t^4 + w^225*t^3 +
w^1025*t^2 + w^2375*t + w^1525,
w^1850*t^13 + w^1050*t^12 + w^1300*t^11 + w^2300*t^10 + w^2350*t^9 + 5*t^8 +
w^2250*t^7 + w^900*t^6 + w^50*t^5 + w^1750*t^4 + w^1850*t^3 + w^1000*t^2
+ w^500*t + w^250
]
> p;
t^2 + 4
All algebraic function fields G with k(x) subset G subseteq F. For algebraic function fields over the rationals only.
> k<x>:= FunctionField(Rationals());
> R<y>:= PolynomialRing(k);
> f:= y^14 - 3234*y^12 + (8*x + 123480)*y^11 + (-696*x - 1152480)*y^10 +
> (27672*x - 43563744)*y^9 + (-663544*x + 1795525424)*y^8 + (10660416*x -
> 33905500608)*y^7 + (-120467088*x + 409661347536)*y^6 + (976911040*x -
> 3428257977088)*y^5 + (-5684130144*x + 20264929189344)*y^4 + (23251514496*x -
> 83582683562112)*y^3 + (-63672983360*x + 229899367865216)*y^2 +
> (105037027200*x - 380160309247488)*y - 79060128000*x + 286518963720192;
> F:= FunctionField(f);
> Subfields(F);
[
Algebraic function field defined over Rational Field by
y^14 - 3234*y^12 + (8*x + 123480)*y^11 + (-696*x - 1152480)*y^10 + (27672*x
- 43563744)*y^9 + (-663544*x + 1795525424)*y^8 + (10660416*x -
33905500608)*y^7 + (-120467088*x + 409661347536)*y^6 + (976911040*x -
3428257977088)*y^5 + (-5684130144*x + 20264929189344)*y^4 +
(23251514496*x - 83582683562112)*y^3 + (-63672983360*x +
229899367865216)*y^2 + (105037027200*x - 380160309247488)*y -
79060128000*x + 286518963720192,
Algebraic function field defined over Rational Field by
y^7 + 294*y^6 - 107016*y^5 + (2744*x + 576240)*y^4 + (-806736*x +
2469418896)*y^3 + (88740960*x - 312072913824)*y^2 + (-4329483200*x +
15606890921216)*y + 79060128000*x - 286518963720192
]
F/k denotes a global function field in this section.
The number of places of degree one in the global function field F/k. Contrary to the Degree() function the degree is here taken over the exact constant field.
The number of places of degree one in the constant field extension of degree m of the global function field F/k. Contrary to the Degree() function the degree is here taken over the respective exact constant fields.
The Serre bound on the number of places of degree one in a global function field of genus g over the exact constant field of q elements (of F, of the constant field extension of degree m of F). Contrary to the Degree() function the degree is here taken over the respective exact constant fields.
The Ihara bound on the number of places of degree one in a global function field F/k of genus g over the exact constant field of q elements (of F, of the constant field extension of degree m of F). Contrary to the Degree function the degree is here taken over the respective exact constant fields.
The minimum of the Serre and Ihara bound. Contrary to the Degree function the degree is here taken over the respective exact constant fields.
The number of places of degree m of the global function field F/k. Contrary to the Degree function the degree is here taken over the respective exact constant fields.
A sequence containing the places of degree m of the global function field F/k.
Returns true and a place of degree m if and only if there exists such a place in the global function field; false otherwise.
Returns true and a random place of degree m in the global function field (false if there are none).
The L-polynomial of the global function field F/k.
The L-polynomial of the constant field extension of degree m of the global function field F/k.
The Zeta function of the global function field F/k.
The Zeta function of the constant field extension of degree m of the global function field F/k.
The divisor class group of F/k as an Abelian group and the map from the divisor group onto the divisor class group. For a detailed description see tttRef{Divisors:Classes:ClassGroup}.
Computes a sequence of integers containing the Abelian invariants of the divisor class group of F/k. For a detailed description see tttRef{Divisors:Classes:ClassGroupAbelianInvariants}.
The order of the group of divisor classes of degree zero of F/k.
The group of global units of F/k, i. e. the multiplicative group of the exact constant field, as an Abelian group, together with the map into F. Also see tttRef{Field:Elements:IsGlobalUnit} and tttRef{Field:Elements:IsGlobalUnitWithPreimage}.
Compute the p-rank of the class group of F/k where p is the characteristic of F/k. For a detailed description see tttRef{Divisors:Classes:ClassGroupPRank}.
Return the Hasse--Witt invariant of F/k. See tttRef{Divisors:Classes:HasseWittInvariant} for a detailed description.
Returns true if and only if the algebraic function field F/k is global, i.e. the constant field is a finite field; false otherwise.
The sequence conversions refer to the function field F as a k(x)-vector space of dimension n where F must be an extension of k(x).
The sequence [a_0, ..., a_(n - 1)] of elements of k(x) such that a = a_0 + a_1alpha + ... + a_(n - 1)alpha^(n - 1) where the function field F = k(x, alpha).
The element a = a_0 + a_1alpha + ... + a_(n - 1)alpha^(n - 1) where the function field F = k(x, alpha) and the a_i may be coerced into k(x).
The following binary arithmetic operations can also be performed in the case where one operand is an element of the function field F and the other operand is a ring element which can naturally be mapped into F.
The following binary arithmetic operations can also be performed in the case where one operand is an element of the function field F and the other operand is a ring element which can naturally be mapped into F.
The list belows contains the general ring element predicates.
Given elements a and b of a function field F, returns true and the result a/b provided b=0.
Returns true if x is a separating element (has a non zero differential).
Whether the algebraic function x is constant; if so it is returned as an element of the exact constant field.
Whether a is a global unit, i.e. a constant (equivalent to IsConstant)
Returns true and the preimage of a in the global unit group, false otherwise. The function field must be global.
Multiplication by a in F defines a k(x)-linear map of the k(x)-vector space F where F must be an extension of k(x). The following functions work with respect to this mapping.
Given an element a belonging to a function field F=k(x, 2), this function returns the matrix M in k(x)^(n x n) such that a (1, alpha, ..., alpha^(n - 1)) = (1, alpha, ..., alpha^(n - 1)) M.
Split the element a into a numerator and denominator with respect to O.
The numerator of a with respect to the order O.
The denominator of a with respect to the order O.
A generator of the ideal R intersect (d x a x O) where R is the coefficient ring of O and d is the denominator of a wrt O (d is the second return value).
Evaluate the algebraic function a at the place P. If it is not defined at P, infinity is returned.
Lift the element a of the residue class field of the place P (including infinity) to an algebraic function.
The valuation of the element a at the place P.
The (principal) divisor (a) of a.
A sequence containing the zeros of the algebraic function a.
A sequence containing the poles of the algebraic function a.
The degree of the algebraic function a, being defined as the degree of the pole (or zero) divisor of a.
Return the common zeros of the elements of the sequence L.
> R<x> := FunctionField(GF(9)); > P<y> := PolynomialRing(R); > f := y^3 + y + x^5 + x + 1; > F<a> := FunctionField(f); > MinimalPolynomial(a); y^3 + y + x^5 + x + 1 > RepresentationMatrix(a); [0 0 2*x^5 + 2*x + 2] [1 0 2] [0 1 0] > O := IntegralClosure(ValuationRing(R), F); > Denominator(a, O); 1/x^2 > O := IntegralClosure(PolynomialRing(GF(9)), F); > Denominator(a, O); 1 > Zeros(a); [ (x + 2, a), (x^3 + 2*x^2 + 1, a) ] > Degree(a); 5 > _, P := RandomPlace(F, 2); > P; (x^2 + x + .1, a + .1^7*x) > b := Evaluate(a, P); > b; $.1^3*$.1 > c := Lift(b, P); > c; $.1^3*x > Valuation(a, P); 0 > Valuation(a-c, P); 1
IsBasis: BoolElt Default: false
PreImages: BoolElt Default: false
The R-module generated by the elements in the sequence L as an abstract module, together with the map into the algebraic function field. The resulting modules can be used for intersection and inner sum computations.If the optional parameter IsBasis is set true the function assumes that the given elements form a basis of the module to be computed.
If the optional parameter PreImages is set true then the preimages of the given elements under the map are returned as the third return value.
Both optional parameters are mainly used to save computation time.
The module of R-linear relations between the elements of the sequence L. The parameter m is used for the following: Let the elements of L be a_1, ..., a_n, V be the relation module subseteq R^n and define M := { sum_(i=1)^m v_i a_i | v = (v_i)_i in V }. The function tries to compute a generating system of V such that the corresponding generating system of M consists of "small" elements.
Compute the roots of f which lie in the Riemann-Roch space of D.
> Q := Rationals();
> Qx<x> := PolynomialRing(Q);
> Qxy<y> := PolynomialRing(Qx);
> f1 := y^2 - (x-1)*(x-2)*(x-3)*(x-5)*(x-6);
> F := FunctionField(f1);
> D := DifferentialSpace(F);
> M7 := Module([Differential(3*F.1)], FieldOfFractions(Qx));
> M8 := Module([Differential(F.1), Differential(F!BaseRing(F).1)],
> FieldOfFractions(Qx));
> M12 := M7 meet M8;
> M16 := M7 + M8;
> assert M12 subset M7;
> assert M12 subset M8;
> assert M12 subset M16;
> r := M7![&+[Random([-100, 100])/Random([1, 100])*x^i : i in [1 .. 5]]/
> &+[Random([-100, 100])/Random([1,
> 100])*x^i : i in [1 .. 5]] : j in [1 .. Dimension(M7)]];
> assert M7!D!r eq r;
> r;
M7: ((1/100*x^4 + x^3 - x^2 + 1/100*x - 1/100)/(x^4 - 1/100*x^3 - 1/100*x^2 +
1/100*x - 1/100))
> D!r;
((3/40*x^8 + 162/25*x^7 - 20937/200*x^6 + 114873/200*x^5 - 279531/200*x^4 +
304167/200*x^3 - 24321/40*x^2 + 303/20*x - 297/50)/(x^9 - 1701/100*x^8 +
2679/25*x^7 - 30789/100*x^6 + 19891/50*x^5 - 3593/20*x^4 - 63/10*x^3 +
883/100*x^2 - 144/25*x + 9/5)*$.1) d(x)
Expand the algebraic function a to a series of given precision at P and return the local parameter, where P must be of degree one (the default parameter is RelPrec := 10)
Return a product representation for a.
Return the element given by the product representation of elements in Q and exponents in S.
variables wrt the defining polynomial
the separating element x.
element x. In characteristic zero the nth differentiation equals the nth derivative times 1/n!.[Next][Prev] [Right] [Left] [Up] [Index] [Root]