[Next] [Prev] [_____] [Left] [Up] [Index] [Root]
Ideals and Quotients

Ideals and Quotients

Subsections

Ideal Creation

x * O : RngOrdElt, RngOrd -> RngOrdIdl
Create the ideal x * O.
Order(I) : RngOrdIdl -> RngOrd
The order O that the ideal I is defined over.

Ideal Arithmetic

I * J : RngOrdIdl, RngOrdIdl -> RngOrdIdl
The product IJ of the (fractional) ideals I and J, generated by the products of elements of I and elements of J.
I / J : RngOrdIdl, RngOrdIdl -> RngOrdIdl
The quotient of the (fractional) ideals I and J of an order O. This is the fractional ideal K of O with the property that J K=I.
I + J : RngOrdIdl, RngOrdIdl -> RngOrdIdl
The sum of the (fractional) ideals I and J, generated by the sums of elements of I and elements of J.
I ^ k : RngOrdIdl, RngIntElt -> RngOrdIdl
The k-th power of the (fractional) ideal I (for an integer k).
x * I : FldNumElt, RngOrdIdl -> RngOrdIdl
Given an element x of (or coercible into) a number field K, and a (fractional) ideal I in an order of K, return the product of the ideal and the principal ideal generated by x.
I / x : RngOrdIdl, RngIntElt -> RngOrdIdl
Create the fractional ideal I / x
LCM(I, J) : RngOrdIdl, RngOrdIdl -> RngOrdIdl
Lcm(I, J) : RngOrdIdl, RngOrdIdl -> RngOrdIdl
LeastCommonMultiple(I, J) : RngOrdIdl, RngOrdIdl -> RngOrdIdl
Return the least common multiple of ideals I and J. They must both be defined over the same maximal order.
I meet J : RngOrdIdl, RngOrdIdl -> RngOrdIdl
The intersection of the (fractional) ideals I and J.They must both be defined over the same maximal order.

Two-Element Presentations

Generators(I) : RngOrdIdl -> [ RngOrdElt ]
Given a (fractional) ideal I of O, return two elements of O that generate I as an ideal.
TwoElement(I) : RngOrdIdl -> FldNumElt, FldNumElt
Given a (fractional) ideal I of O, return two elements of the field of fractions of O that generate I as an ideal.
TwoElementNormal(I) : RngOrdIdl -> FldNumElt, FldNumElt, RngIntElt
Given an integral ideal I of O, return two elements of the field of fractions of O that form a two-element normal presentation for I, as well as an integer g such that I is g-normal.

Currently this produces reliable results only when I is a prime ideal.

Invariants

Denominator(I) : RngOrdIdl -> RngIntElt
The denominator of the fractional ideal I. This is the smallest positive integer d such that dI is an integral ideal.
Index(O, I) : RngOrdIdl -> RngIntElt
The index of the integral ideal I, when viewed as a sublattice of the order O. This is the same as the cardinality of the finite quotient ring O/I.
Norm(I) : RngOrdIdl -> FldRatElt
The norm of the fractional ideal I. This returns the index of the ideal if the ideal is integral, and defined on fractional ideals by multiplicativity (so that the norm of I^(-1) equals the reciprocal of the norm of I.
MinimalInteger(I) : RngOrdIdl -> RngIntElt
Given an ideal I this function returns the least positive integer m contained in I.
RamificationIndex(I) : RngOrdIdl -> RngIntElt
Returns, for a prime ideal I of an order O lying over the rational prime p, the maximal exponent e such that I^e divides the principal ideal pO.
InertiaDegree(I) : RngOrdIdl -> RngIntElt
Given a prime ideal I this function returns the residue class degree f of the ideal I.
Valuation(I, J) : RngOrdIdl, RngOrdIdl -> RngIntElt
Given a prime ideal I and an ideal J in an order O, return the valuation v_I(J) of J at I, that is, the number of factors I in the prime ideal decomposition of J. Note that, since the ideal J is allowed to be a fractional ideal, the returned value may be a negative integer.

Factorization and Primes

Decomposition(O, p) : RngOrd, RngIntElt -> [Tup(RngOrdIdl, RngIntElt)]
Given a rational prime number p and an order O, return a sequence of tuples consisting of prime ideals and exponents, according to the decomposition of p in O.
Factorization(I) : RngOrdIdl -> [Tup(RngOrdIdl, RngIntElt])
Returns the prime ideal factorization of an ideal I in an order O, as a sequence of two-tuples (prime ideal and integer exponent).
DegreeOnePrimeIdeals(O, B) : RngOrd, RngIntElt -> [ RngOrdIdl ]
Given an order O as well as a positive integer bound B, return a sequence consisting of all prime ideals in O whose norm is a (rational) prime not exceeding the bound B.

Basis Representation

Basis(I) : RngOrdIdl -> [RngOrdElt]
Given an ideal I of an order O of the number field K, this function returns a Z-basis for I as a sequence of elements of K.
BasisMatrix(I) : RngOrdIdl -> AlgMatElt
Returns the basis matrix for the ideal I of O. The basis matrix consists of the elements of a Z-basis for the ideal written as rows of rational coefficients with respect to the power basis of the number field K of which O is an order.
TransformationMatrix(I) : RngOrdIdl -> AlgMatElt, RngIntElt
Returns the transformation matrix for the ideal I of O, as well as a denominator. The transformation matrix consists of the elements of a Z-basis for the ideal written as columns of coefficients with respect to the basis of the order O.
MultiplicatorRing(I) : RngOrdIdl -> Rng
Returns the multiplicator ring of the ideal I of the order O, that is, the subring of elements of the field of fractions of O that multiply I into itself.
pRadical(O, p) : RngOrd -> RngOrdIdl
Returns the p-radical of an order O for a prime integer p, defined as the ideal consisting of elements of O for which some power lies in the principal ideal pO.

Predicates on Ideals

The predicates listed below allow fractional ideals as argument.

I eq J : RngOrdIdl, RngOrdIdl -> BoolElt
I ne J : RngOrdIdl, RngOrdIdl -> BoolElt
x in I : FldNumElt, RngOrdIdl -> BoolElt
x in I : RngOrdElt, RngOrdIdl -> BoolElt
x notin I : FldNumElt, RngOrdIdl -> BoolElt
x notin I : RngOrdElt, RngOrdIdl -> BoolElt
IsIntegral(I) : RngOrdIdl -> BoolElt
True if and only if the fractional ideal I is integral.
IsPrime(I) : RngOrdIdl -> BoolElt, RngOrdIdl
True if and only if I is a prime ideal, and false otherwise. If I is not prime, the function also returns a proper divisor (ideal).

Currently this function becomes very slow for ideals with large norm.

IsPrincipal(I) : RngOrdIdl -> BoolElt, FldNumElt
Returns true if the fractional ideal I of the order O is a principal ideal, false otherwise. If I is principal, a generator (as an element of the field of fractions of O) is also returned.

Note that this function may take a very long time to return. This is partly due to the fact that IsPrincipal needs knowledge about units, and hence the calculation of the unit group will be triggered if necessary.

IsZero(I) : RngOrdIdl -> BoolElt
True if I is the zero ideal, false otherwise.

Example FldNum_IdealFactorization (H36E14)

Using the fact that IsPrime returns a proper divisor if its argument is not prime, we can write an ideal factorization algorithm as follows.

> function IdealFactorization(I)
>    primes := [Parent(I)|];
>    expts  := [Integers()|];
>    facts  := [I];
>    while not IsEmpty(facts) do
>       term := facts[1];
>       Remove( ~facts, 1 );
>       flag, divisor := IsPrime( term );
>       if flag then
>          pos := Index( primes, term );
>          if pos eq 0 then
>             Append( ~primes, term );
>             Append( ~expts, 1 );
>          else
>             expts[pos] +:= 1;
>          end if;
>       else
>          Append( ~facts, divisor );
>          Append( ~facts, I/divisor );
>        end if;
>    end while;
>    return [ <primes[i], expts[i]> : i in [1..#primes] ];
> end function;

Other Ideal Operations

ChineseRemainder(I1, I2, e1, e2) : RngOrdIdl, RngOrdIdl, RngOrdElt, RngOrdElt -> RngOrdElt
Returns an element e of O such that (e_1 - e) is in I_1 and (e_2 - e) is in I_2.
PrimitiveElement(I) : RngOrdIdl -> RngOrdElt
A primitive element of an ideal I is an element a which is in I but not in the square of I. This function returns such an element a.

Quotient Rings

quo< O | I > : RngOrd, RngOrdIdl -> RngOrdRes
Creates the quotient ring Q=O/I.
IsZero(a) : RngOrdResElt -> Boolelt
True iff a is the zero element of the quotient ring Q.
IsOne(a) : RngOrdResElt -> Boolelt
True iff a is the one element of the quotient ring Q.
IsMinusOne(a) : RngOrdResElt -> Boolelt
True iff a is the minus one element of the quotient ring Q.
a mod I : RngOrdElt, RngOrdIdl -> RngOrdElt
A canonical representative of a (belonging to O) in the quotient ring O/I.
ResidueField(O, I) : RngOrd, RngOrdIdl -> FldFin, Map
If I is a prime ideal of O, this function returns the finite field F isomorphic to O/I and the map O -> F.

Galois group

Finding Galois groups of (normal closures) of number fields in general is a hard problem. The implementation of the GaloisGroup function below was adapted from a version developed by the Pari group in Bordeaux.

GaloisGroup(K) : FldNum -> GrpPerm, [ FldPrElt ]
Given a number field K, defined by an irreducible monic polynomial of degree n over the integers, this function returns a permutation group that forms the Galois group of the normal closure of K (in some algebraic closure of Q). The permutation group acts on the point 1, 2, ..., n. If the roots of f are calculated in the process, they are returned as the second argument. As a temporary condition, the roots will only be computed if n>6. Currently this function is restricted to field and polynomial of degree n<12.
[Next] [Prev] [_____] [Left] [Up] [Index] [Root]