Given a module M with base module S(n), and elements
a1, ..., an belonging to S, construct the element
m = (a1, ..., an) of M. Note that if m is
not an element of M, an error will result.
Given the module M with base module S(n), and elements
a1, ..., an belonging to S, construct the element
m = (a1, ..., an) of M. Note that if m is not an
element of M, an error will result.
Given a submodule M of the module R(n) together with a set S
of integers lying in the interval [1, n], return the characteristic
number of S as a vector of R.
M ! 0 : ModRng, RngIntElt -> ModRngElt
The zero element for the R-module M.
Given a module M defined over a finite ring or field,
return a random vector.
We create the module of 4-tuples over the polynomial ring
Z[x] and define various elements.
> P<x> := PolynomialRing(IntegerRing());
> M := RModule(P, 4);
> a := elt< M | 1+x, -x, 2+x, 0 >;
> a;
(x + 1 -x x + 2 0)
> b := M ! [ 1+x+x^2, 0, 1-x^7, 2*x ];
> b;
(x^2 + x + 1 0 -x^7 + 1 2*x)
> zero := M ! 0;
> zero;
(0 0 0 0)
Eltseq(u) : ModTupRngElt -> [RngElt]
Given an element u belonging to the R-module M, return u in
the form of a sequence Q of elements of R. Thus, if u is an
element of R(n), then Q[i] = u[i], 1 ≤i ≤n, while if u is an
element of R(m x n), then Q[(i - 1)n + j] = u[i, j], 1 ≤i ≤m,
1 ≤j ≤n.
Sum of the elements u and v, where u and v lie in the same
R-module M.
Additive inverse of the element u.
Difference of the elements u and v, where u and v lie in the
same R-module M.
Given an element x belonging to a ring R, and an element u
belonging to the left R-module M, return the (left) scalar product
x * u as an element of M.
Given an element x belonging to a ring R, and an element u
belonging to the right R-module M, return the (right) scalar product
u * x as an element of M.
Given a non-zero element x belonging to a field K, and an element u
belonging to the right K-module M, return the scalar product u * (1/x)
as an element of M.
Given an element u belonging to a submodule M of the R-module
R(n) and a positive integer i, 1 ≤i≤n, return the
i-th component of u (as an element of the ring R).
Given an element u belonging to a submodule M of the R-module
T = R(n), a positive integer i, 1 ≤i≤n, and an
element x of the ring R, redefine the i-th component of u
to be x. The parent of u is changed to T (since the modified
element u need not lie in M).
Normalise(u) : ModTupRngElt -> ModTupRngElt
The element u must belong to an R-module, where R is either a field,
the ring of integers or a univariate polynomial ring over a field.
Assume that the vector u is non-zero. If R is a field then
Normalize returns (1/a) * u, where a is the first non-zero
component of u. If R is the ring of integers, Normalize
returns ε * u, where ε is +1 if the first non-zero
component of u is positive, and -1 otherwise. If R is the
polynomial ring K[x], K a field, then Normalize returns
(1/a) * u, where a is the leading coefficient of the first
non-zero (polynomial) component of u.
If u is the zero vector, it is returned as the value of this function.
Given a vector u, return the vector obtained from u by
rotating by k coordinate positions.
Given a vector u, destructively rotate u by k coordinate positions.
We illustrate the use of the arithmetic operators for module
elements by applying them to elements of the module of 4-tuples over
the polynomial ring Z[x].
> P<x> := PolynomialRing(IntegerRing());
> M := RModule(P, 4);
> a := M ! [ 1+x, -x, 2+x, 0 ];
> b := M ! [ 1+x+x^2, 0, 1-x^7, 2*x ];
> a + b;
(x^2 + 2*x + 2 -x -x^7 + x + 3 2*x)
> -a;
(-x - 1 x -x - 2 0)
> a - b;
( -x^2 -x x^7 + x + 1 -2*x)
> (1-x + x^2)*a;
(x^3 + 1 -x^3 + x^2 - x x^3 + x^2 - x + 2 0)
> a*(1-x);
( -x^2 + 1 x^2 - x -x^2 - x + 2 0)
> a[3];
x + 2
> a[3] := x - 2;
> a;
(x + 1 -x x - 2 0)
> ElementToSequence(a - b);
[
-x^2,
-x,
x^7 + x - 3,
-2*x
]
> Support(a);
{ 1, 2, 3 }
Returns true if the element u of the R-module M is the zero element.
The index of the first non-zero entry of the vector v (0 if none such).
A set of integers giving the positions of the non-zero components
of the vector u.
The number of non-zero components of the vector u.
InnerProduct(u, v) : ModTupRngElt, ModTupRngElt -> RngElt
Return the inner product of the vectors u and v with respect to the inner
product defined on the space. If an inner product matrix F is given
when the space is created, then this is defined to be
u.F.vtr. Otherwise, this is simply u.vtr.
Return the norm product of the vector u with respect to the inner
product defined on the space. If an inner product matrix F is given
when the space is created, then this is defined to be
u.F.utr. Otherwise, this is simply u.utr.
V2.28, 13 July 2023