Structure Operations#
In the lists below \(F\) usually refers to an algebraic field, \(K\) to a number field and \(O\) to an order.
General Functions#
Number fields form the Magma category FldNum, orders form RngOrd and their fields of fractions form FldOrd. The notional power structures exist as parents of algebraic fields and their orders, no operations are allowed.
- Category(F): FldAlg -> Cat#
- Parent(F): FldAlg -> Pow#
- Category(O): RngOrd -> Cat#
- Parent(O): RngOrd -> Pow#
- AssignNames(~K, s): FldNum, [ MonStgElt ]#
Procedure to change the names of the generating elements in the number field \(K\) to the contents of the sequence of strings \(s\). The \(i\)-th sequence element will be the name used for the generator of the \((i-1)\)-st subfield down from \(K\) as determined by the creation of \(K\), the first element being used as the name for the generator of \(K\). In the case where \(K\) is defined by more than one polynomial as an absolute extension, the \(i\)th sequence element will be the name used for the root of the \(i\)th polynomial used in the creation of \(K\). This procedure only changes the names used in printing the elements of \(K\). It does not assign to any identifiers the value of a 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
~Kto \(K\) in the call to this function.
- Name(K, i): FldNum, RngIntElt -> FldNumElt#
- K . i: FldNum, RngIntElt -> FldNumElt#
Given a number field \(K\), return the element which has the \(i\)-th name attached to it, that is, the generator of the \((i - 1)\)-st subfield down from \(K\) as determined by the creation of \(K\). Here \(i\) must be in the range \(1\leq i\leq m\), where \(m\) is the number of polynomials used in creating \(K\). If \(K\) was created using multiple polynomials as an absolute extension,
K.iwill be a root of the \(i\)th polynomial used in creating \(K\).
- AssignNames(~F, s): FldOrd, [ MonStgElt ]#
Assign the strings in the sequence \(s\) to the names of the basis elements of the field of fractions \(F\).
- F . i: FldOrd, RngIntElt -> FldOrdElt#
- Name(F, i): FldOrd, RngIntElt -> FldOrdElt#
Return the \(i\)th basis element of the field of fractions \(F\).
- O . i: RngOrd, RngIntElt -> FldOrdElt#
Return the \(i\)th basis element of the order \(O\).
Representing Fields as Vector Spaces#
These functions are used to recreate a number field as an associative algebra or as a vector space. In both cases, the base field may be any subfield.
- Algebra(K, J): FldAlg, Fld -> AlgAss, Map#
- Algebra(K, J, S): FldAlg, Fld, [FldAlgElt] -> AlgAss, Map#
Returns the associative structure constant algebra which is isomorphic to the algebraic field \(K\) as an algebra over \(J\). Also returns the isomorphism from \(K\) to the algebra mapping \(w^i\) to the \(i + 1\)st unit vector of the algebra where \(w\) is a primitive element of \(K\).
If a sequence \(S\) is given it is taken to be a basis of \(K\) over \(J\) and the isomorphism will map the \(i\)th element of \(S\) to the \(i\)th unit vector of the algebra.
- VectorSpace(K, J): FldAlg, Fld -> ModTupFld, Map#
- KSpace(K, J): FldAlg, Fld -> ModTupFld, Map#
- VectorSpace(K, J, S): FldAlg, Fld, [FldAlgElt] -> ModTupFld, Map#
- KSpace(K, J, S): FldAlg, Fld, [FldAlgElt] -> ModTupFld, Map#
The vector space isomorphic to the algebraic field \(K\) as a vector space over \(J\) and the isomorphism from \(K\) to the vector space. The isomorphism maps \(w^i\) to the \(i + 1\)st unit vector of the vector space where \(w\) is a primitive element of \(K\).
If \(S\) is given, the isomorphism will map the \(i\)th element of \(S\) to the \(i\)th unit vector of the vector space.
- Example: Vector Space Eg (ex-4636b1)#
We use the
Algebraof a relative number field to obtain the minimal polynomial of an element over a subfield which is not in its coefficient field tower.> K := NumberField([x^2 - 2, x^2 - 3, x^2 - 7]); > J := AbsoluteField(NumberField([x^2 - 2, x^2 - 7])); > A, m := Algebra(K, J); > A; Associative Algebra of dimension 2 with base ring J > m; Mapping from: RngOrd: K to AlgAss: A > m(K.1); (1/10*(J.1^3 - 13*J.1) 0) > m(K.1^2); (2 0) > m(K.2); (1/470*(83*J.1^3 + 125*J.1^2 - 1419*J.1 - 1735) 1/940*(-24*J.1^3 - 5*J.1^2 + 382*J.1 + 295)) > m(K.2^2); (3 0) > m(K.3); (1/10*(-J.1^3 + 23*J.1) 0) > m(K.3^2); (7 0) > A.1 @@ m; 1 > A.2 @@ m; (($.1 - 1)*$.1 - $.1 - 1)*K.1 + ($.1 + 1)*$.1 + $.1 + 1 > > r := 5*K.1 - 8*K.2 + K.3; > m(r); (1/235*(-238*J.1^3 - 500*J.1^2 + 4689*J.1 + 6940) 1/235*(48*J.1^3 + 10*J.1^2 - 764*J.1 - 590)) > MinimalPolynomial($1); $.1^2 + 1/5*(-4*J.1^3 + 42*J.1)*$.1 + 5*J.1^2 - 180 > Evaluate($1, r); 0 > K:Maximal; K | | $1 | | $2 | | Q K : $.1^2 - 2 $1 : $.1^2 - 3 $2 : x^2 - 7 > Parent($3); Univariate Polynomial Ring over J > J; Number Field with defining polynomial $.1^4 - 18*$.1^2 + 25 over the Rational Field
Invariants#
Some information describing an order can be retrieved.
- Characteristic(F): FldAlg -> RngIntElt#
- Characteristic(O): RngOrd -> RngIntElt#
- Degree(O): RngOrd -> RngIntElt#
- Degree(F): FldAlg -> RngIntElt#
Given an algebraic field \(F\), return the degree \([F:G]\) of \(F\) over its ground field \(G\). For an order \(O\) it returns the relative degree of \(O\) over its ground order.
- AbsoluteDegree(O): RngOrd -> RngIntElt#
- AbsoluteDegree(F): FldAlg -> RngIntElt#
Given an order \(O\) or an algebraic field \(F\), return the absolute degree of \(O\) over \({\mathbb{Z}}\) or \(F\) over \({\mathbb{Q}}\).
- Discriminant(O): RngOrd -> RngIntElt#
- Discriminant(O): RngInt -> RngIntElt#
- Discriminant(F): FldAlg -> RngIntElt#
- Discriminant(O): RngOrd -> RngOrdIdl#
- Discriminant(F): FldAlg -> RngOrdIdl#
Given an extension \(F\) of \({\mathbb{Q}}\), return the discriminant of \(F\). This discriminant is defined to be the discriminant of the order of the field of fractions or the equation order of a number field.
The discriminant of any order \(O\) defined over \({\mathbb{Z}}\) is by definition the discriminant of its basis, where the discriminant of any sequence of elements \(\omega_i\) from \(K\) is defined to be the determinant of the trace matrix of the sequence.
The discriminant of absolute fields and orders is an integer.
The discriminant in a relative extension is the ideal generated by the discriminants of all sequences of elements \(\omega_i\) from \(O\), where the discriminant of a sequence is defined to be the determinant of its trace matrix. This can only be computed in when the coefficient ring of \(O\) is maximal or when \(O\) has a power basis.
The discriminant of relative orders is an ideal of the base ring.
- AbsoluteDiscriminant(O): RngOrd -> RngIntElt#
Given an order \(O\), return the absolute value of the discriminant of \(O\) regarded as an order over \({\mathbb{Z}}\).
- AbsoluteDiscriminant(K): FldAlg -> FldRatElt#
Given an algebraic field \(K\), return the absolute value of the discriminant of \(K\) regarded as an extension of \({\mathbb{Q}}\).
- ReducedDiscriminant(O): RngOrd -> RngIntElt#
- ReducedDiscriminant(F): FldAlg -> RngIntElt#
- ReducedDiscriminant(O): RngOrd -> RngOrdIdl#
- ReducedDiscriminant(F): FldAlg -> RngOrdIdl#
The reduced discriminant of an order \(O\) is defined as the maximal elementary divisor (elementary ideal) of the torsion module \(O^\#/O\) where \(O^\#\) is the dual module to \(O\) with respect to the trace form. The reduced discriminant of an algebraic field is that of the order of a field of fractions and that of the equation order of a number field.
For absolute extensions this is the largest entry of the Smith normal form of the
TraceMatrix. For relative extensions, in addition to theTraceMatrixone has to consider the coefficient ideals.For orders with a power basis, this is (a generator of) the inverse of the ideal generated by the cofactors \(X\) and \(Y\) of \(Xf + Yf'=1\) where \(f\) is the defining polynomial of the order and \(f'\) its first derivative.
- Regulator(O: parameters): RngOrd -> FldReElt#
- Regulator(K): FldNum -> FldReElt#
Current: BoolElt Default: false
Given a number field \(K\) or an order \(O\), return the regulator of \(K\) or \(O\), as a real number. Note that this will trigger the computation of the maximal order and its unit group if they are not known yet. This only works in an absolute extension.
If
Currentistrueand a maximal system of independent units is known, then the regulator of that system is returned. In this case no effort is spent to produce a system of fundamental units.The precision of the answer may be controlled by using
SetKantPrecisionfor the relevant order.
- RegulatorLowerBound(O): RngOrd -> FldReElt#
- RegulatorLowerBound(K): FldNum -> FldReElt#
Given an order \(O\) or number field \(K\), return a lower bound on the regulator of \(O\) or \(K\). This only works in an absolute extension.
- Signature(O): RngOrd -> RngIntElt, RngIntElt#
- Signature(F): FldAlg -> RngIntElt, RngIntElt#
Given an absolute algebraic field \(F\), or an order \(O\) of \(F\), returns two integers, one being the number of real embeddings, the other the number of pairs of complex embeddings of \(F\).
- UnitRank(O): RngOrd -> RngIntElt#
- UnitRank(K): FldNum -> RngIntElt#
The unit rank of the order \(O\) or the number field \(K\) (one less than the number of real embeddings plus number of pairs of complex embeddings).
- Index(O, S): RngOrd, RngOrd -> RngIntElt#
- Index(O, S): RngOrd, RngOrd -> RngOrdIdl#
The module index of order \(S\) in order \(O\), for orders \(S\subset O\). \(O\) and \(S\) must have the same equation order and \(S\) must be a suborder of \(O\).
- DefiningPolynomial(F): FldAlg -> RngUPolElt#
- DefiningPolynomial(O): RngOrd -> RngUPolElt#
- DefiningPolynomial(F): FldAlg -> [RngUPolElt]#
- DefiningPolynomial(O): RngOrd -> [RngUPolElt]#
Given an algebraic field \(F\), the polynomial defining \(F\) as an extension of its ground field \(G\) is returned. For an order \(O\), a integral polynomial is returned that defines \(O\) over its coefficient ring.
For non simple extensions, this will return a list of polynomials.
- Zeroes(O, n): RngOrd, RngIntElt -> [ FldReElt ]#
- Zeros(O, n): RngOrd, RngIntElt -> [ FldReElt ]#
- Zeroes(F, n): FldAlg, RngIntElt -> [ FldReElt ]#
- Zeros(F, n): FldAlg, RngIntElt -> [ FldReElt ]#
Given an absolute algebraic field \(F\) or an order \(O\) in \(F\), and an integer \(n\), return the zeroes of the defining polynomial of \(F\) with a precision of exactly \(n\) decimal digits. The function returns a sequence of length the degree of \(F\); all of the real zeroes appear before the complex zeroes.
- Example: zero (ex-afbcf8)#
The information provided by
ZerosandDefiningPolynomialis illustrated below.> L := NumberField(x^6+108); > DefiningPolynomial(L); x^6 + 108 > Zeros(L, 30); [ 1.889881574842309747150815910899999999994 + 1.0911236359717214035600726141999999999977*i, 1.889881574842309747150815910899999999994 - 1.0911236359717214035600726141999999999977*i, 0.E-29 + 2.1822472719434428071201452283999999999955*i, 0.E-29 - 2.1822472719434428071201452283999999999955*i, -1.889881574842309747150815910899999999994 + 1.0911236359717214035600726141999999999977*i, -1.889881574842309747150815910899999999994 - 1.0911236359717214035600726141999999999977*i ] > l := NumberField(x^3 - 2); > DefiningPolynomial(l); x^3 - 2 > Zeros(l, 30); [ 1.259921049894873164767210607299999999994, -0.629960524947436582383605303639109999999 + 1.0911236359717214035600726141999999999977*i, -0.629960524947436582383605303639109999999 - 1.0911236359717214035600726141999999999977*i ]
- Different(O): RngOrd -> RngOrdIdl#
The different of a maximal order \(O\subset K\) is defined as the inverse ideal of \(\{ x \in K \mid {\operatorname{Tr}}(xO)\subset O\}\).
- Conductor(O): RngOrd -> RngOrdIdl#
The conductor of an order \(O\) is the largest ideal of its maximal order that is still contained in \(O\): \(\{ x \in M \mid xM \subseteq O\}\).
Basis Representation#
The basis of an order or algebraic field can be expressed using elements from any compatible ring. Basis related matrices can be formed.
- Basis(O): RngOrd -> [ FldOrdElt ]#
- Basis(O, R): RngOrd, Rng -> [ RngElt ]#
- Basis(F): FldAlg -> [ FldAlgElt ]#
- Basis(F, R): FldAlg, Rng -> [ RngElt ]#
Return the current basis for the order \(O\) or algebraic field \(F\) over its ground ring as a sequence of elements of its field of fractions or as a sequence of elements of \(R\).
When \(O\) is an extension of another order, the basis is to be interpreted with the corresponding
CoefficientIdeals.
- IntegralBasis(F): FldAlg -> [ FldAlgElt ]#
- IntegralBasis(F, R): FldAlg, Rng -> [ RngElt ]#
An integral basis for the algebraic field \(F\) is returned as a sequence of elements of \(F\) or \(R\) if given. This is the same as the basis for the maximal order. Note that the maximal order will be determined (and stored) if necessary.
- Example: Basis Ring (ex-6e96c8)#
The following illustrates how a basis can look different when expressed in a different ring.
> f := x^5 + 5*x^4 - 75*x^3 + 250*x^2 + 65625; > M := MaximalOrder(f); > M; Maximal Order of Equation Order with defining polynomial x^5 + 5*x^4 - 75*x^3 + 250*x^2 + 65625 over its ground order > Basis(M); [ M.1, M.2, M.3, M.4, M.5 ] > Basis(NumberField(M)); [ 1, $.1, $.1^2, $.1^3, $.1^4 ] > Basis(M, NumberField(M)); [ 1, 1/5*$.1, 1/25*$.1^2, 1/125*$.1^3, 1/625*$.1^4 ]
- AbsoluteBasis(K): FldAlg -> [FldAlgElt]#
Returns an absolute basis for the algebraic field \(K\), i.e. a basis for \(K\) as a \({\mathbb{Q}}\) vector space. The basis will consist of the products of the basis elements of the intermediate fields. The expansion is done depth-first.
- BasisMatrix(O): RngOrd -> AlgMatElt#
Given an order \(O\) in a number field \(K\) of degree \(n\), this returns an \(n\times n\) matrix whose \(i\)-th row contains the (rational) coefficients for the \(i\)-th basis element of \(O\) with respect to the power basis of \(K\). Thus, if \(b_i\) is the \(i\)-th basis element of \(O\),
\[b_i=\sum_{j=1}^{n}M_{ij}\alpha^{j-1}\]where \(M\) is the matrix and \(\alpha\) is the generator of \(K\).
The matrix is the same as
TransformationMatrix(O, E), where \(E\) is the equation order for \(K\), except that the entries of the basis matrix are from the subfield of \(K\), instead of the coefficient ring of the order.
- TransformationMatrix(O, P): RngOrd, RngOrd -> AlgMatElt, RngIntElt#
Returns the transformation matrix for the transformation between the orders \(O\) and \(P\) with common equation order of degree \(n\). The function returns an \(n\times n\) matrix \(T\) with integral entries as well as a common integer denominator. The rows of the matrix express the \(n\) basis elements of \(O\) as a linear combination of the basis elements of \(P\). Hence the effect of multiplying \(T\) on the left by a row vector \(v\) containing the basis coefficients of an element of \(O\) is the row vector \(v\cdot T\) expressing the same element of the common number field on the basis for \(P\).
- CoefficientIdeals(O): RngOrd -> [RngOrdFracIdl]#
The coefficient ideals of the order \(O\) of a relative extension. These are the ideals \(\{A_i\}\) of the coefficient ring of \(O\) such that for every element \(e\) of \(O\), \(e = \sum_i a_i*b_i\) where \(\{b_i\}\) is the basis returned for \(O\) and each \(a_i \in A_i\).
- Example: Bases (ex-292651)#
We continue our example of a field of degree 4. The functions
BasisandIntegralBasisboth return a sequence of elements, that can be accessed using the operators for enumerated sequences. Note that if, as in our example, \(O\) is the maximal order of \(K\), both functions produce the same output:> R<x> := PolynomialRing(Integers()); > f := x^4 - 420*x^2 + 40000; > K<y> := NumberField(f); > O := MaximalOrder(K); > I := IntegralBasis(K); > B := Basis(O); > I, B; [ 1, 1/2*y, 1/40*(y^2 + 10*y), 1/800*(y^3 + 180*y + 400) ] [ O.1, O.2, O.3, O.4 ] > Basis(O, K); [ 1, 1/2*y, 1/40*(y^2 + 10*y), 1/800*(y^3 + 180*y + 400) ]
The
BasisMatrixfunction makes it possible to move between orders, in the following manner. We may regard orders as free \({\mathbb{Z}}\)-modules of rank the degree of the number field. The basis matrix then provides the transformation between the order and the equation order. The functionElementToSequencecan be used to create module elements.> BM := BasisMatrix(O); > Mod := RSpace(RationalField(), Degree(K)); > z := O ! y; > e := z^2-3*z; > em := Mod ! ElementToSequence(e); > em; ( 0 -26 40 0) > f := em*BM; > f; ( 0 -3 1 0)
So, since \(f\) is represented with respect to the basis of the equation order, which is the power basis, we indeed get the original element back. Of course it is much more useful to go in the other direction, using the inverse transformation. We check the result in the last line:
> E := EquationOrder(K); > f := y^3+7; > fm := Mod ! ElementToSequence(f); > e := fm*BM^-1; > e; (-393 -360 0 800) > &+[e[i]*B[i] : i in [1 .. Degree(K)] ]; -393/1*O.1 - 360/1*O.2 + 800/1*O.4 > K!$1; y^3 + 7
- MultiplicationTable(O): RngOrd -> [AlgMatElt]#
Given an order \(O\) of some number field \(K\) of degree \(n\), return the multiplication table with respect to the basis of \(O\) as a sequence of \(n\) matrices of size \(n\times n\). The \(i\)-th matrix will have as its \(j\)-th row the basis representation of \(b_ib_j\), where \(b_i\) is the \(i\)-th basis element for \(O\).
- TraceMatrix(O): RngOrd -> AlgMatElt#
- TraceMatrix(F): FldAlg -> AlgMatElt#
Return the trace matrix of an order \(O\) or algebraic field \(F\), which has the trace \({\operatorname{Tr}}(\omega_i\omega_j)\) as its \(i, j\)-th entry where the \(\omega_i\) are the basis for \(O\) or \(F\).
- Example: Multiplication Table (ex-8f1664)#
We continue our example of a field of degree 4. The multiplication table of the order \(O\) consists of \(4\) matrices, such that the \(i\)-th \(4\times 4\) matrix (\(1\leq i\leq 4\)) determines the multiplication by the \(i\)-th basis element of \(O\) as a linear transformation with respect to that basis. Thus the third row of \(T[2]\) gives the basis coefficients for the product of \(B[2]\) and \(B[3]\), and we can use the sequence reduction operator to calculate \(B[2]*B[3]\) in an alternative way:
> R<x> := PolynomialRing(Integers()); > f := x^4 - 420*x^2 + 40000; > K<y> := NumberField(f); > O := MaximalOrder(K); > B := Basis(O); > B[2]; O.2 > T := MultiplicationTable(O); > T[2]; [ 0 1 0 0] [ 0 -5 10 0] [ -5 -7 5 10] [-25 -7 15 0] > &+[ T[2][3][i]*B[i] : i in [1..4] ]; -5/1*O.1 - 7/1*O.2 + 5/1*O.3 + 10/1*O.4 > B[2]*B[3]; -5/1*O.1 - 7/1*O.2 + 5/1*O.3 + 10/1*O.4
The trace matrix may be found either by using the built-in function or by the one-line definition given below (for a field of degree 4):
> TraceMatrix(O); [ 4 0 21 2] [ 0 210 105 215] [ 21 105 173 118] [ 2 215 118 226] > MatrixRing(RationalField(), 4) ! [Trace(B[i]*B[j]): i, j in [1..4] ]; [ 4 0 21 2] [ 0 210 105 215] [ 21 105 173 118] [ 2 215 118 226]
Ring Predicates#
Orders and algebraic fields can be tested for having several properties that may hold for general rings.
- N eq O: RngOrd, RngOrd -> BoolElt#
Two orders are equal if the transformation matrix taking one to the other is integral and has determinant \(1\) or \(-1\). For the transformation matrix to exist the orders must have the same number field.
- F eq L: FldAlg, FldAlg -> BoolElt#
- F eq L: FldRat, FldAlg -> BoolElt#
- F eq L: FldAlg, FldRat -> BoolElt#
Returns
trueif and only if the fields \(F\) and \(L\), are the same. No two algebraic fields which have been created independently of each other will be considered equal since it is possible that they can be embedded into a larger field in more than one way.
- IsCommutative(R): Rng -> BoolElt#
- IsUnitary(R): Rng -> BoolElt#
- IsFinite(R): Rng -> BoolElt#
- IsOrdered(R): Rng -> BoolElt#
- IsField(R): Rng -> BoolElt#
These predicates are clear.
- IsNumberField(R): . -> BoolElt#
Returns
trueiffType(R)matchesFldNum.
- IsAlgebraicField(R): Any -> BoolElt#
Returns
trueiffType(R)matchesFldAlg(i.e. eitherFldNumorFldOrd).
- IsEuclideanDomain(F): FldAlg -> BoolElt#
This is not a check for euclidean number fields. This function will always return an error.
- IsSimple(F): FldAlg -> BoolElt#
- IsSimple(O): RngOrd -> BoolElt#
Checks if the field \(F\) or the order \(O\) is defined as a simple extension over the base ring.
- IsPID(F): FldAlg -> BoolElt#
- IsUFD(F): FldAlg -> BoolElt#
- IsPrincipalIdealRing(F): FldAlg -> BoolElt#
Always
truefor fields.
- IsPID(O): RngOrd -> BoolElt#
- IsUFD(O): RngOrd -> BoolElt#
- IsPrincipalIdealRing(O): RngOrd -> BoolElt#
Always
falsefor orders. Even if the class number is \(1\), orders are not considered to be PIDs.
- IsDomain(R): FldAlg -> BoolElt#
- F ne L: FldAlg, FldAlg -> BoolElt#
- O ne N: RngOrd, RngOrd -> BoolElt#
- O subset P: RngOrd, RngOrd -> BoolElt#
- K subset L: FldAlg, FldAlg -> BoolElt#
- K subset L: FldRat, FldAlg -> BoolElt#
- HasComplexConjugate(K): FldAlg -> BoolElt, Map#
This function returns
trueif there is an automorphism in the field \(K\) that acts like complex conjugation.
- ComplexConjugate(x): FldAlgElt -> FldAlgElt#
For an element \(x\) of a field \(K\) where
HasComplexConjugatereturnstrue(in particular this includes totally real fields, cyclotomic and quadratic fields and CM-extensions), the conjugate of \(x\) is returned.
Order Predicates#
Since orders are rings with additional properties, special predicates are applicable.
- IsEquationOrder(O): RngOrd -> BoolElt#
This returns
trueif the basis of the order \(O\) is an integral power basis,falseotherwise.
- IsMaximal(O): RngOrd -> BoolElt#
This returns
trueif the order \(O\) in the field \(F\) is the maximal order of \(F\),falseotherwise. The user is warned that this may trigger the computation of the maximal order.
- IsAbsoluteOrder(O): RngOrd -> BoolElt#
Returns
trueiff the order \(O\) is a constructed as an absolute extension of \({\mathbb{Z}}\).
- IsWildlyRamified(O): RngOrd -> BoolElt#
Returns
trueiff the order \(O\) is wildly ramified, i.e. if there is a prime ideal \(P\) of \(O\) such that the characteristic of its residue class field divides its ramification index.
- IsTamelyRamified(O): RngOrd -> BoolElt#
Returns
trueiff the order \(O\) is not wildly ramified, i.e. if for all prime ideals \(P\) of \(O\) the characteristic of its residue class field does not divide the ramification index.
- IsUnramified(O): RngOrd -> BoolElt#
Returns
trueiff the order \(O\) is unramified at the finite places.
Field Predicates#
Here all the predicates that are specific to algebraic fields are listed.
- IsIsomorphic(F, L): FldAlg, FldAlg -> BoolElt, Map#
Given two algebraic fields \(F\) and \(L\), this returns
trueas well as an isomorphism \(F\rightarrow L\), if \(F\) and \(L\) are isomorphic, and it returnsfalseotherwise.
- IsSubfield(F, L): FldAlg, FldAlg -> BoolElt, Map#
- IsSubfield(F, L): FldRat, FldAlg -> BoolElt, Map#
Given two algebraic fields \(F\) and \(L\), this returns
trueas well as an embedding \(F\hookrightarrow L\), if \(F\) is a subfield of \(L\), and it returnsfalseotherwise.
- IsNormal(F): FldAlg -> BoolElt#
Returns
trueif and only if the algebraic field \(F\) is a normal extension. At present this may only be applied if \(F\) is an absolute extension or simple relative extension. In the relative case the result is obtained via Galois group computation.
- IsAbelian(F): FldAlg -> BoolElt#
Returns
trueif and only if the algebraic field \(F\) is a normal extension with abelian Galois group. At present this may only be applied if \(F\) is an absolute extension or simple relative extension. In the relative case the result is obtained via Galois Group computation.
- IsCyclic(F): FldAlg -> BoolElt#
Returns
trueif and only if the algebraic field \(F\) is a normal extension with cyclic Galois group. At present this may only be applied if \(F\) is an absolute extension or simple relative extension. In the relative case the result is obtained via Galois and automorphism group.
- IsAbsoluteField(K): FldAlg -> BoolElt#
Returns
trueiff the algebraic field \(K\) is a constructed as an absolute extension of \({\mathbb{Q}}\).
- IsWildlyRamified(K): FldAlg -> BoolElt#
Returns
trueiff the algebraic field \(K\) is wildly ramified, i.e. if there is a prime ideal \(P\) of \(K\) (its maximal order) such that the characteristic of its residue class field divides the ramification index.
- IsTamelyRamified(K): FldAlg -> BoolElt#
Returns
trueiff the algebraic field \(K\) is not wildly ramified, i.e. if for all prime ideals \(P\) of the maximal order of \(K\), the characteristic of its residue class field does not divide the ramification index.
- IsUnramified(K): FldAlg -> BoolElt#
Returns
trueiff the algebraic field \(K\) is unramified at the finite places.
- IsQuadratic(K): FldAlg -> BoolElt, FldQuad#
If the number field \(K\) is quadratic, return
trueand an isomorphic quadratic field.
- IsTotallyReal(K): FldAlg -> BoolElt#
Tests if the number field \(F\) is totally real, ie. if all infinite places are real. For absolute fields this is equivalent to the defining polynomial having only real roots.
Setting Properties of Orders#
Several properties of orders can be set to be known and/or to have a given value.
- SetOrderMaximal(O, b): RngOrd, BoolElt#
Set the order \(O\) to be maximal if \(b\) is
trueor known to be non maximal if \(b\) isfalse.
- SetOrderTorsionUnit(O, e, r): RngOrd, RngOrdElt, RngIntElt#
Set the torsion unit of the order \(O\) to be the element \(e\) with order \(r\).
- SetOrderUnitsAreFundamental(O): RngOrd#
This tells Magma to assume that the currently known unit group for the order \(O\) is the full unit group, in all subsequent calculations involving
NumberField(O). (This can only be invoked after a unit group has been computed.)