Elements of Modules

Contents

Creation of Elements

M ! v : ModDed, SeqEnum -> ModDedElt
M ! v : ModDed, ModDedElt -> ModDedElt
M ! v : ModDed, ModElt -> ModDedElt
Coerce v into an element of M. v can be a sequence of length dimension of M, a module element or vector or an element of another module over a Dedekind domain which is compatible with M.

Example ModDed_coerce-quo (H60E7)

Let Mod and its submodules and quotient modules be as in the sub and quotient module example above.
> m := 4*Mod.1;
> m;
(4/1*M.1 0)
> Q1!m;
( 4/1*M.1 0 )
> Q2!m;
( 4/1*M.1 0 )
> m := Mod!m;
> Q3!m;
( 4/1*M.1 0 )
> Q4!m;
( 4/1*M.1 0 )
> S1!m;
>> S1!m;
     ^
Runtime error in `!': Illegal coercion
LHS: ModDed
RHS: ModDedElt
> S1!Mod!V!0;
(  )
> S2!Mod!Mod.2;
( M.1 )
> S3!Mod!(4*Mod.1);
( 4/1*M.1 0 )

Arithmetic with Elements

Basic arithmetic can be performed with elements of a module over a Dedekind domain.

x + y : ModDedElt, ModDedElt -> ModDedElt
The sum of the module elements.
x - y : ModDedElt, ModDedElt -> ModDedElt
The difference of the module elements.
u * c : ModDedElt, RngElt -> ModDedElt
c * u : RngElt, ModDedElt -> ModDedElt
The product of the module element u and the ring element c.
u / c : ModDedElt, RngElt -> ModDedElt
The product of u and 1/c if it lies in the parent module of u.
I * u : RngOrdIdl, ModDedElt -> ModDed
I * u : RngFunOrdIdl, ModDedElt -> ModDed
u * I : ModDedElt, RngOrdIdl -> ModDed
u * I : ModDedElt, RngFunOrdIdl -> ModDed
The module containing elements which are products of u and an element lying in I.

Other Functions on Elements

Elements of modules over a Dedekind domain can be tested for equality and represented as a sequence.

x eq y : ModDedElt, ModDedElt -> Bool
Return true if x and y are the same element of a module.
IsZero(a) : ModDedElt -> BoolElt
Returns whether the module element a is zero.
ElementToSequence(a) : ModDedElt -> SeqEnum
Eltseq(a) : ModDedElt -> SeqEnum
The module element a expressed as a sequence.
V2.28, 13 July 2023