[Next][Prev] [Right] [Left] [Up] [Index] [Root]

Decomposabilty and Complements

The functions is this section currently apply only in the case in which A is an algebra over a finite field.

IsDecomposable(M) : ModRng -> BoolElt, ModRng, ModRng
Given an A-module M, return true if M is decomposable and false otherwise. If M is decomposable, the function also returns proper submodules S and T of M such that M = S direct-sum T.
IndecomposableSummands(M) : ModGrp -> [ ModGrp ]
Given an A-module M, return a sequence Q of indecomposable summands of M. Each element of Q is an indecomposable submodule of M and M is equal to the (direct) sum of the terms of Q. If M is indecomposable, the sequence Q consists of M alone.
HasComplement(M, S) : ModGrp, ModGrp -> BoolElt, ModGrp
IsDirectSummand(M, S) : ModGrp, ModGrp -> BoolElt, ModGrp
Given an A-module M and a submodule S of M, determine whether S has a A-invariant complement in M. If this is the case, the value true is returned together with a submodule T of M such that M = S direct-sum T; otherwise the value false is returned.
Complements(M, S) : ModGrp, ModGrp -> [ ModGrp ]
Given an A-module M and a submodule S of M, return all A-invariant complements of S in M.

Example ModAlg_Decomposable (H71E8)

> A := MatrixAlgebra<GF(2), 6 |
>   [ 1,0,0,1,0,1,  
>     0,1,0,0,1,1,  
>     0,1,1,1,1,0,  
>     0,0,0,1,1,0,  
>     0,0,0,1,0,1,
>     0,1,0,1,0,0 ],
>   [ 0,1,1,0,1,0,
>     0,0,1,1,1,1,
>     1,0,0,1,0,1,
>     0,0,0,1,0,0,
>     0,0,0,0,1,0,
>     0,0,0,0,0,1 ] >;

> M := RModule(RSpace(GF(2), 6), A);
> M;
RModule M of dimension 6 over GF(2)
> IsDecomposable(M);
false
> MM := DirectSum(M, M);
> MM;
RModule MM of dimension 12 over GF(2)
> l, S, T := IsDecomposable(MM);
> l;
true;
> S;
RModule S of dimension 6 over GF(2)
> HasComplement(MM, S);
true 
> Complements(MM, S);
[
    RModule of dimension 6 over GF(2),
    RModule of dimension 6 over GF(2)
]
> IndecomposableSummands(MM);
[
    RModule of dimension 6 over GF(2),
    RModule of dimension 6 over GF(2)
]
> Q := IndecomposableSummands(MM); 
> Q;
[
    RModule of dimension 6 over GF(2),
    RModule of dimension 6 over GF(2)
]
> Q[1] meet Q[2];                 
RModule of dimension 0 over GF(2)
> Q[1] + Q[2];
RModule MM of dimension 12 over GF(2)


 [Next][Prev] [Right] [Left] [Up] [Index] [Root]