Documentation

# `Dom`::`AlgebraicExtension`

Simple algebraic field extensions

MuPAD® notebooks will be removed in a future release. Use MATLAB® live scripts instead.

MATLAB live scripts support most MuPAD functionality, though there are some differences. For more information, see Convert MuPAD Notebooks to MATLAB Live Scripts.

## 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)`.

## Superdomain

`Dom::BaseDomain`

## Axioms

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

## 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.

## Methods

expand all

#### Mathematical Methods

`_plus(a, …)`

This method overloads the function `_plus` of the system kernel.

`_mult(a, …)`

This method overloads the function `_mult` of the system kernel.

Inherited from `Cat::Monoid`.

`_negate(a)`

This method overloads the function `_negate` of the system kernel.

`_subtract(a, b)`

This method overloads the function `_subtract` of the system kernel.

`iszero(a)`

This method overloads the function `iszero`.

Inherited from `Cat::Monoid`.

Inherited from `Cat::Field`.

`intmult(a, b)`

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

`_invert(a)`

This method overloads the function `_invert`.

Inherited from `Cat::Field`.

Inherited from `Cat::Field`.

Inherited from `Cat::Field`.

Inherited from `Cat::Field`.

Inherited from `Cat::Field`.

Inherited from `Cat::Field`.

`gcd(a, …)`

This method overloads the function `gcd`.

Inherited from `Cat::Field`.

Inherited from `Cat::Field`.

Inherited from `Cat::Field`.

Inherited from `Cat::Field`.

Inherited from `Cat::Field`.

Inherited from `Cat::Field`.

`conjNorm(a)`

`conjTrace(a)`

`minimalPolynomial(a)`

`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(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()`

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(x)`

If the conversion fails, then `FAIL` is returned.

`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.

`expr(a)`

This method overloads the function `expr`.