Accelerating the pace of engineering and science

# Dom::AlgebraicExtension

Simple algebraic field extensions

## Syntax

### Domain Creation

`Dom::AlgebraicExtension(F, f)`
`Dom::AlgebraicExtension(F, f, x)`
`Dom::AlgebraicExtension(F, f1 = f2)`
`Dom::AlgebraicExtension(F, f1 = f2, x)`

### Element Creation

`Dom::AlgebraicExtension(F,f)(g)`
`Dom::AlgebraicExtension(F, f)(rat)`

## Description

### Domain Creation

For a given field F and a polynomial fF[x], Dom::AlgebraicExtension(F, f, x) creates the residue class field F[x]/<f>.

Dom::AlgebraicExtension(F, f1=f2, x) does the same for f = f1 - f2.

Dom::AlgebraicExtension(F, f, x) creates the field F[x]/<f> of residue classes of polynomials modulo f. This field can also be written as F[x]/<f>, the field of residue classes of rational functions modulo f.

The parameter x may be omitted if f is a univariate polynomial or a polynomial expression that contains exactly one indeterminate; it is then taken to be the indeterminate occurring in f.

The field F must have normal representation.

f must not be a constant polynomial.

f must be irreducible; this is not checked.

f may be a polynomial over a coefficient ring different from F, or multivariate; however, it must be possible to convert it to a univariate polynomial over F. See Example 2.

### Element Creation

Dom::AlgebraicExtension(F, f)(g) creates the residue class of g modulo f.

If rat has numerator and denominator p and q, respectively, then Dom::AlgebraicExtension(F,f)(rat) equals Dom::AlgebraicExtension(F,f)(p) divided by Dom::AlgebraicExtension(F,f)(q).

Dom::BaseDomain

## Axioms

If F has Ax::canonicalRep, then Ax::canonicalRep.

## Categories

If F is a Cat::DifferentialRing, then Cat::DifferentialRing.

If F is a Cat::PartialDifferentialRing, then Cat::PartialDifferentialRing.

## Examples

### Example 1

We adjoin a cubic root alpha of 2 to the rationals.

`G := Dom::AlgebraicExtension(Dom::Rational, alpha^3 = 2)`

The third power of a cubic root of 2 equals 2, of course.

`G(alpha)^3`

The trace of α is zero:

`G::conjTrace(G(alpha))`

You can also create random elements:

`G::random()`

### Example 2

The ground field may be an algebraic extension itself. In this way, it is possible to construct a tower of fields. In the following example, an algebraic extension is defined using a primitive element alpha, and the primitive element beta of a further extension is defined in terms of alpha. In such cases, when a minimal equation contains more than one identifier, a third argument to Dom::AlgebraicExtension must be explicitly given.

```F := Dom::AlgebraicExtension(Dom::Rational, alpha^2 = 2):
G := Dom::AlgebraicExtension(F, bet^2 + bet = alpha, bet)```

### Example 3

We want to define an extension of the field of fractions of the ring of bivariate polynomials over the rationals.

```P:= Dom::DistributedPolynomial([x, y], Dom::Rational):
F:= Dom::Fraction(P):
K:= Dom::AlgebraicExtension(F, alpha^2 = x, alpha)```

Now . Of course, the square root function has the usual derivative; note that can be expressed as :

`diff(K(alpha), x)`

On the other hand, the derivative of with respect to y is zero, of course:

` diff(K(alpha), y)`

We must not use D here. This works only if we start our construction with a ring of univariate polynomials:

```P:= Dom::DistributedPolynomial([x], Dom::Rational):
F:= Dom::Fraction(P):
K:= Dom::AlgebraicExtension(F, alpha^2 = x, alpha):
D(K(alpha))```

## Parameters

 F The ground field: a domain of category Cat::Field f, f1, f2 Polynomials or polynomial expressions x Identifier g Element of the residue class to be defined: polynomial over F in the variable x, or any object convertible to such. rat Rational function that belongs to the residue class to be defined: expression whose numerator and denominator can be converted to polynomials over F in the variable x. The denominator must not be a multiple of f.

## Entries

 "zero" the zero element of the field extension "one" the unit element of the field extension "groundField" the ground field of the extension "minpoly" the minimal polynomial f "deg" the degree of the extension, i.e., of f "variable" the unknown of the minimal polynomial f "characteristic" the characteristic, which always equals the characteristic of the ground field. This entry only exists if the characteristic of the ground field is known. "degreeOverPrimeField" the dimension of the field when viewed as a vector space over the prime field. This entry only exists if the ground field is a prime field, or its degree over its prime field is known.

expand all

## Mathematical Methods

### _plus — Sum of field elements

_plus(a, …)

This method overloads the function _plus of the system kernel.

### _mult — Product of field elements

_mult(a, …)

This method overloads the function _mult of the system kernel.

### _power — Raise to the nth power

Inherited from Cat::Monoid.

### _negate — Negate a field element

_negate(a)

This method overloads the function _negate of the system kernel.

### _subtract — Difference of field elements

_subtract(a, b)

This method overloads the function _subtract of the system kernel.

### equal — Test for mathematical equality

Inherited from Dom::BaseDomain.

### equiv — Test for equivalence

Inherited from Cat::BaseCategory.

### iszero — Test whether a field element is zero.

iszero(a)

This method overloads the function iszero.

### isone — Test if element is one

Inherited from Cat::Monoid.

### isUnit — Test if element is an unit

Inherited from Cat::Field.

### intmult — Multiply a field element by an integer

intmult(a, b)

This method is more efficient than "_mult" in this special case.

### _invert — Inverse of a field element

_invert(a)

This method overloads the function _invert.

### _divide — Exact division

Inherited from Cat::Field.

### divide — Division with remainder

Inherited from Cat::Field.

### quo — Return Euclidean quotient

Inherited from Cat::Field.

### rem — Return Euclidean remainder

Inherited from Cat::Field.

### euclideanDegree — Return Euclidean degree

Inherited from Cat::Field.

### idealGenerator — Generator of finitely generated ideal

Inherited from Cat::EuclideanDomain.

### divides — Test if division is exact

Inherited from Cat::Field.

### gcd — Gcd of field elements

gcd(a, …)

This method overloads the function gcd.

### gcdex — Extended greatest common divisor

Inherited from Cat::EuclideanDomain.

### associates — Test for associate elements

Inherited from Cat::Field.

### unitNormal — Unit normal form

Inherited from Cat::Field.

### unitNormalRep — Unit normal representation

Inherited from Cat::Field.

### lcm — Least common multiple

Inherited from Cat::GcdDomain.

### sqrfree — Square-free factorization

Inherited from Cat::Field.

### irreducible — Test if element is irreducible

Inherited from Cat::Field.

### factor — Unique factorization

Inherited from Cat::Field.

conjNorm(a)

conjTrace(a)

### minimalPolynomial — Minimal polynomial of an element

minimalPolynomial(a)

### D — Differential operator

D(a)

This method overloads the function D.

This method must not be called for inseparable extensions; note that MuPAD® cannot check whether an extension is separable.

See Example 3.

### diff — Partial differentiation

diff(a, x1, …)

Differentiation is defined to be the continuation of differentiation of the ground field; this method exists only if the ground field has a method "diff", too.

Differentiation is not possible in inseparable extensions.

This method overloads the function diff.

This method must not be called for inseparable extensions; note that MuPAD cannot check whether an extension is separable.

See Example 3.

### random — Random element of the field

random()

The random method of the ground field is used to generate coefficients of a random polynomial of the ground field; the residue class of that polynomial is the return value. Hence the probability distribution of the elements returned depends on that of the random method of the ground field.

## Conversion Methods

### convert — Convert into a field element

convert(x)

If the conversion fails, then FAIL is returned.

### convert_to — Convert a field element into another type

convert_to(a, T)

Field elements can be converted to polynomials or expressions. Field elements represented by constant polynomials can also be converted to the same types as the elements of the ground field; in particular, they can be converted to elements of the ground field.

### coerce — Coerce into this domain

Inherited from Cat::BaseCategory.

### new — Create element of this domain

Inherited from Cat::BaseCategory.

### expr — Convert an element of the field into an expression

expr(a)

This method overloads the function expr.

### subs — Avoid substitution

Inherited from Dom::BaseDomain.

### subsex — Avoid extended substitution

Inherited from Dom::BaseDomain.

### testtype — Test type of object

Inherited from Cat::BaseCategory.

### print — Return expression to print an element

Inherited from Cat::BaseCategory.

### printMethods — Print out methods

Inherited from Dom::BaseDomain.

### TeX — Generate TeX output

Inherited from Dom::BaseDomain.

### hasProp — Test for a certain property

Inherited from Dom::BaseDomain.

### whichEntry — Return the domain or category implementing an entry

Inherited from Dom::BaseDomain.

### allEntries — Return the names of all entries

Inherited from Dom::BaseDomain.

### undefinedEntries — Return missing entries

Inherited from Dom::BaseDomain.

### getAxioms — Return axioms stated in the constructor

Inherited from Dom::BaseDomain.

### getSuperDomain — Return super-domain stated in the constructor

Inherited from Dom::BaseDomain.

### allSuperDomains — Return all super-domains

Inherited from Dom::BaseDomain.

### getCategories — Return categories stated in the constructor

Inherited from Dom::BaseDomain.

### allAxioms — Return all axioms

Inherited from Dom::BaseDomain.

### allCategories — Return all categories

Inherited from Dom::BaseDomain.