[Next] [Prev] [Right] [Left] [Up] [Index] [Root]
Creation Functions

Creation Functions

Subsections

Creation of General Function Fields

FunctionField(f : parameters) : RngUPolElt -> FldFun
    Check: BoolElt                      Default: true
Given a monic irreducible polynomial f of degree n>1 which is separable over its coefficient ring K = F_q(x), create the function field F=K(alpha) obtained by adjoining a root alpha of f to K. The polynomial f is allowed to have either polynomial coefficients or coefficients from the rational function field, but in the latter case, denominators must be 1.

The optional parameter Check may be used to prevent the conditions on the polynomial f from being tested. The default is Check := true, so that f is checked to be monic, irreducible, and separable.

The angle bracket notation may be used to assign the root alpha to an identifier: K<w> := FunctionField(f).

AssignNames(~K, s) : FldFun, [ MonStgElt ] ->
AssignNames(~a, s) : FldFunElt, [ MonStgElt ] ->
Procedure to change the name of the generating element in the function field K (a in K) to the contents of the sequence of strings s, which must have length 1 in this case.

This procedure only changes the name used in printing the elements of K. It does not assign to any identifier the value of the generator in K; to do this, use an assignment statement, or use angle brackets when creating the field.

Note that since this is a procedure that modifies K, it is necessary to have a reference ~K to K in the call to this function.

Name(K, 1) : FldFun, RngIntElt -> FldFunElt
Given a function field K, return the element which has the name attached to it, that is, return the element K.1 of K.

Example FldFunG_Creation (H32E1)

To create the function field F(x, alpha), where alpha satisfies f(x, alpha) = alpha^3 + (4x^3 + 4x^2 + 2x + 2)alpha^2 + (3x + 3)alpha + 2 = 0, one may proceed as follows:

> H<x> := FunctionField(GF(5));
> R<y> := PolynomialRing(H);
> f := y^3 + (4*x^3 + 4*x^2 + 2*x + 2)*y^2 + (3*x + 3)*y + 2;
> F := FunctionField(f);

Creation of Orders in Function Fields

EquationOrderFinite(F) : FldFun -> RngFunOrd
Create the `finite' equation order of the function field F.
MaximalOrderFinite(K) : FldFun -> RngFunOrd
Create the `finite' maximal order of the function field F. This is the integral closure of F_q[x] in K.
EquationOrderInfinite(F) : FldFun -> RngFunOrd
Create the `infinite' equation order of the function field F.
MaximalOrderInfinite(K) : FldFun -> RngFunOrd
Create the `infinite' maximal order of the function field F. This is the integral closure of O_(Infinity) (the infinite valuation ring) in K.

Example FldFunG_Orders (H32E2)

Once a function field K=Q(alpha) has been created (as in the example above), one can obtain the equation orders and the maximal orders simply as follows.

> EF := EquationOrderFinite(F);
> EF;
Finite order over Finite field of size 5 defined by
y^3 + (4*.1^3 + 4 *.1^2 + 2*.1 + 2) * y^2 + (3 *.1 + 3)*y + 2
> MF := MaximalOrderFinite(F);
> MF;
Finite order over Finite field of size 5 defined by
y^3 + (4*.1^3 + 4 *.1^2 + 2*.1 + 2) * y^2 + (3 *.1 + 3)*y + 2
> EI := EquationOrderInfinite(F);
> EI;
Infinite order over Finite field of size 5 defined by
y^3 + (4*x^3 + 4*x^2 + 2*x + 2)/x^3*y^2 + (3*x + 3)/x^6*y + 2/x^9
> MI := MaximalOrderInfinite(F);
> MI;
Infinite order over Finite field of size 5 defined by
y^3 + (4*x^3 + 4*x^2 + 2*x + 2)/x^3*y^2 + (3*x + 3)/x^6*y + 2/x^9
 and transformation matrix
[1/x^4   0   0]
[0   1/x^4   (4*x^3 + 4*x^2 + 2*x + 2)/x^3]
[0   0   1]
den: 1/x^4

Creation of Elements

Elements of function fields and of orders are (or at least WILL BE) displayed quite differently. Function field elements are always printed as a polynomial (of degree less than the degree of the field) with rational function field coefficients in the primitive element of the field, that is, as an element of F_q(x)[y]/f, where f was the defining polynomial of the field, over the rational funtion field F_q(x).

Elements of orders are displayed as sequences of polynomial (in the finite case) or rational function (in the infinite case) coefficients, referring to the basis of the order. To convert this basis representation to a polynomial expression (in the primitive element of the field of fractions), the element should be coerced into the field (using !).

One(K) : FldFun -> FldFunElt
One(O) : RngFunOrd -> RngFunOrdElt
Identity(K) : FldFun -> FldFunElt
Identity(O) : RngFunOrd -> RngFunOrdElt
Zero(K) : FldFun -> FldFunElt
Zero(O) : RngFunOrd -> RngFunOrdElt
Representative(K) : FldFun -> FldFunElt
Representative(O) : RngFunOrd -> RngFunOrdElt
K ! a : FldFun, RngElt -> FldFunElt
elt< K | a > : FldFun, RngElt -> FldFunElt
Coerce a into the field K. Here a may be an integer, finite field element, polynomial, rational function, or an element from an order of K.
K ! [a_0, a_1, ..., a_(m - 1)] : FldFun, [RngElt] -> FldFunElt
elt< K | [ a_0, a_1, ..., a_(m - 1) ] > : FldFun, SeqEnum[RngElt] -> FldFunElt
elt< K | a_0, a_1, ..., a_(m - 1)> : FldFun, RngElt , ..., RngElt -> FldFunElt
Given the function field, K=G(alpha) of degree m and a sequence [a_0, ..., a_(m - 1)] of elements of G, construct the element a_0 + a_1alpha + ... a_(m - 1)alpha^(m - 1) of K.
O ! a : RngFunOrd, FldFunElt -> RngFunOrdElt
elt< O | a > : RngFunOrd, FldFunElt -> RngFunOrdElt
Coerce a into the order O. Here a is allowed to be an integer, or an integral element of the field of fractions of O.
O ! [a_0, a_1, ..., a_(m - 1)] : RngFunOrd, [ RngElt ] -> RngFunOrdElt
elt< O | [ a_0, a_1, ..., a_m - 1 ] > : RngFunOrd, SeqEnum[RngElt] -> RngFunOrdElt
elt< O | a_0, a_1, ..., a_m - 1 > : RngFunOrd, RngElt, ..., RngElt -> RngFunOrdElt
Given the order O of a function field K of degree m and elements a_0, a_(1), ..., a_(m - 1) in the ground order of O, construct the element a_0alpha_0 + a_1 * alpha_1 + ... a_(m - 1) * alpha_(m - 1) of O, where alpha_0, ..., alpha_(m - 1) is the integral basis for the order.

Example FldFunG_Elements (H32E3)

Here are two ways of creating the same element in F as an element of the maximal order.

> O := MaximalOrderFinite(F);
> e := O ! (x - 3);
> f := elt< O | [x - 3, 0, 0]>;
> f eq e;
true

Random(K, n) : FldFun, RngIntElt -> FldFunElt
Random(O, n) : RngFunOrd, RngIntElt -> RngFunOrdElt
A random element of a function field or order. The coefficients chosen will have degree less than or equal to n.

Creation of Ideals in Orders

The general ideal constructor can be used to create ideals in orders of function fields, as described below. It should be noted that ideals in orders are allowed to be fractional ideals, so we allow any rational function field elements as generators.

ideal< O | a_1, a_2, ... , a_m > : RngFunOrd, FldFunElt, ..., FldFunElt -> RngFunOrdIdl
Given an order O, as well as elements a_1, a_2, ..., a_n coercible into the field of fractions K of O, create the fractional ideal of O generated by these elements.

Note that, contrary to the general case for the constructors, the right hand side elements are not necessarily contained in the left hand side.

The denominator of the ideal will be the smallest positive integer d such that all d.a_i are contained in O; the ideal will then be 1/d times the integral ideal generated by the d.a_i, i=1, ..., m.


Example FldFunG_Ideals (H32E4)

We give an example of the creation of an ideal generated by a random element of an order.

> G<u> := ext< FF | PolynomialRing(FF)![3, 6, 1] > where FF is GF(7);
> H<x> := PolynomialRing(G);
> R<y> := PolynomialRing(H);
> f := y^3 + (3*x^2 + 2*x + 6)*y^2 + (2*x + 3)*y + 1;
> F := FunctionField(f);
> O := EquationOrderFinite(F);
> r := Random(O, 2);
> r;
[ u^20*x^2 + u^19*x + u^14, u^38*x + u^33, u^19 ]
> I := ideal< O | r >;
> I;
Ideal of the function field order Finite order over Finite field
of size 7^2 defined by y^3 + (3*x^2 + 2*x + 6)*y^2 + (2*x + 3)*y + 1

[Next] [Prev] [Right] [Left] [Up] [Index] [Root]