The functions is this section currently apply only in the case in which A is an algebra over a finite field.
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.
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.
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.
Given an A-module M and a submodule S of M, return all A-invariant complements of S in M.
> 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)