Elements

x1 + x2 : AlgEtQElt, AlgEtQElt -> AlgEtQElt
x1 + x2 : Any, AlgEtQElt -> AlgEtQElt
x1 + x2 : AlgEtQElt, Any -> AlgEtQElt
- x : AlgEtQElt -> AlgEtQElt
x1 - x2 : AlgEtQElt, AlgEtQElt -> AlgEtQElt
x1 - x2 : Any, AlgEtQElt -> AlgEtQElt
x1 - x2 : AlgEtQElt, Any -> AlgEtQElt
x1 * x2 : AlgEtQElt, AlgEtQElt -> AlgEtQElt
x1 * x2 : Any, AlgEtQElt -> AlgEtQElt
x1 * x2 : AlgEtQElt, Any -> AlgEtQElt
x ^ n : AlgEtQElt, RngIntElt -> AlgEtQElt
x1 / x2 : AlgEtQElt, AlgEtQElt -> AlgEtQElt
x1 / x2 : Any, AlgEtQElt -> AlgEtQElt
x1 / x2 : AlgEtQElt, Any -> AlgEtQElt
Parent(x) : AlgEtQElt -> AlgEtQ
Algebra(x) : AlgEtQElt -> AlgEtQ
Returns the algebra to which the element x belongs to.
Components(x) : AlgEtQElt -> SeqEnum
Given an element x, returns its components, which are elements of number fields.
AbsoluteCoordinates(x) : AlgEtQElt -> SeqEnum
Given an element x, returns the coordinates relative to the absolute basis, which are elements of the prime rational field.
AbsoluteCoordinates(x, S) : AlgEtQElt, AlgEtQOrd -> SeqEnum
Given an element x and an order S, returns the coordinates of x with respect to the stored Z-basis of S.
IsCoercible(A, x) : AlgEtQ, Any -> BoolElt, AlgEtQElt
Return whether the element x is coercible into the algebra A and the result of the coercion if so.
A ! x : AlgEtQ, Any) -> AlgEtQElt
Coerce x into the algebra A.
One(A) : AlgEtQ -> AlgEtQElt
The multiplicative neutral element of the algebra A.
Zero(A) : AlgEtQ -> AlgEtQElt
The additive neutral element of the algebra A.
IsUnit(x) : AlgEtQElt -> BoolElt
Returns whether the element x is a unit in its algebra A.
IsZeroDivisor(x) : AlgEtQElt -> BoolElt
Returns whether the element x is a zero-divisor in its algebra A.
Random(A, bd) : AlgEtQ, RngIntElt -> AlgEtQElt
Returns a random element of the algebra A. The coefficients are bounded by the positive integer bd.
Random(A) : AlgEtQ -> AlgEtQElt
    bd: RngIntElt                       Default: 3
Returns a random element of the algebra A. The coefficients are bounded by the parameter bd (default 3).
RandomUnit(A, bd) : AlgEtQ, RngIntElt -> AlgEtQElt
Returns a random unit of the algebra A. The coefficients are bounded by the positive integer bd.
x1 eq x2 : AlgEtQElt, AlgEtQElt -> BoolElt
x1 eq x2 : RngIntElt, AlgEtQElt -> BoolElt
x1 eq x2 : AlgEtQElt, RngIntElt -> BoolElt
x1 eq x2 : FldRatElt, AlgEtQElt -> BoolElt
x1 eq x2 : AlgEtQElt, FldRatElt -> BoolElt
Returns whether the elements x1 and x2 are equal.
Inverse(x) : AlgEtQElt -> AlgEtQElt
The multiplicative inverse of the algebra element x.
&+ seq : SeqEnum[AlgEtQElt] -> AlgEtQElt
Given a sequence of AlgEtQElt returns the sum of the entries.
&* seq : SeqEnum[AlgEtQElt] -> AlgEtQElt
Given a sequence of AlgEtQElt returns the product of the entries.
DotProduct(a, b) : SeqEnum, SeqEnum -> Any
Given two sequences a=[a1, ..., an] and b=[b1, ..., bn], returns ∑i ai.bi.

Example AlgEtQ_DotProductExample (H42E4)

> _<x>:=PolynomialRing(Integers());
> f := (x^8+16)*(x^8+81);
> A := EtaleAlgebra(f);
> // We compute the `canonical` primitive element, which is the class of the variable x in A.
> a := PrimitiveElement(A); a;
<$.1, $.1>
> // The algebra A has two components:
> comps, embeddings, projections:=Components(A);
> K1, K2 := Explode(comps);
> // The unit element of each component corresponds to an orthogonal idempotent of A:
> [ embeddings[1](K1!1),embeddings[2](K2!1) ] eq OrthogonalIdempotents(A);
true
> // We conclude this example by showing the use of DotProduct and its timings advantages:
> N := 10^5;
> elts1 := [ a+i : i in [1..N] ];
> elts2 := [ a-i : i in [1..N] ];
> time s1 := &+[ elts1[i]*elts2[i] : i in [1..N] ];
Time: 0.450
> time s2 := DotProduct(elts1,elts2);
Time: 0.150
> s1 eq s2;
true
MinimalPolynomial(x) : AlgEtQElt -> RngUPolElt
Returns the minimal polynomial over the common base ring of the number fields defining the algebra A of the element x.
MinimalPolynomial(x, F) : AlgEtQElt, Rng -> RngUPolElt
Returns the minimal polynomial over the ring F of the element x.
AbsoluteMinimalPolynomial(x) : AlgEtQElt -> RngUPolElt
Returns the minimal polynomial over the prime field of the element x or an algebra.
IsIntegral(x) : AlgEtQElt -> BoolElt
Returns whether the element x of an algebra is integral (over the integers).
Evaluate(f, a) : RngUPolElt, AlgEtQElt -> AlgEtQElt
Evaluate the polynomial f at the algebra element a.
PrimitiveElement(A) : AlgEtQ -> AlgEtQElt
Returns the primitive element of the étale algebra A. Note that A has a primitive element only if it is the product of distinct number fields.

Given an étale algebra A over Q there exists an element a∈A such that A = Q[a], that is, every element can be written as a polynomial with rational coefficients in a. Such an element is called a primitive element of A. It is characterized by having a minimal polynomial whose degree equals the absolute dimension of A.

The intrinsic PrimitiveElement produces such an element of the étale algebra A using a deterministic procedure which we now describe: Let N be the number of components of A, each one having primitive element ai. Set b1 = a1. For i=2, ..., N, set bi = ai + j where j is the smallest non-negative integer such that the minimal polynomial of ai + j is not in the set of minimal polynomials of the elements b1, ..., bi - 1. The output is the element of A whose components are b1, ..., bN. In particular, if A is a product of number fields with different defining polynomials, then the output is the element of A whose components are the primitive elements of the components.

PowerBasis(A) : AlgEtQ -> SeqEnum[AlgEtQElt]
Returns the power basis of the étale algebra A, consisting of powers of the primitive element of A.
Basis(A) : AlgEtQ -> SeqEnum
Returns a basis of the algebra A over the common base field.
AbsoluteBasis(A) : AlgEtQ -> SeqEnum
Returns a basis of the algebra A over the prime field.
A . i : AlgEtQ, RngIntElt -> AlgEtQElt
Returns the i-th element of the absolute basis of A.
AbsoluteCoordinates(seq, basis) : SeqEnum[AlgEtQElt], SeqEnum[AlgEtQElt] -> SeqEnum
Given a sequence of elements and a basis over the PrimeField returns a sequence whose entries are the coordinates in the PrimeField with respect to the given basis.
OrthogonalIdempotents(A) : AlgEtQ -> SeqEnum
Returns the orthogonal idempotent element of the étale algebra A.
Idempotents(A) : AlgEtQ -> SeqEnum
Returns the idempotent element of the étale algebra A.
V2.29, 28 November 2025