[back] [prev] [next] [index] [root]

 


ModuleNF

Computes a normal form of the given module.

Syntax:

M2 := ModuleNF(M1 [,d|I] [,"PBNF"] [,"lower"] );

modules
  M1, M2  
integer
  d  
used for reduction
ideal
  I  
used for reduction

See also:  Module

Description:

The module will be represented by a pseudomatrix whose matrix is in triangular form with ones on the diagonal. Two different algorithms are implemented. One is according to CoDe (the default), the other one according to BoPo (which is invoked by the string parameter PBNF). The pseudomatrix will be either in upper triangular form which is the default or in lower triangular form if requested by the string parameter lower. Modular reduction is implemented using either an integer or an ideal.


Example:


kash> O:=OrderMaximal(Poly(Zx,[1, 5, -6, -53, 3, 206, 244]));;
kash> IL:=List(Factor(2*O),f->f[1]);;
kash> List(IL,IdealGenerators);;
kash> EL1:=List(Factor(5*O),f->IdealGen(f[1],2));;
kash> EL2:=List(Factor(13*O),f->IdealGen(f[1],2));;
kash> EL2[3]:=IdealGen(Factor(7*O)[1][1],2);;
kash> EL3:=List(Factor(3*O),f->IdealGen(f[1],2));;
kash> EL3[3]:=IdealGen(Factor(7*O)[2][1],2);;
kash> M:=Module(IL,Mat(O,[EL1,EL2,EL3]));
{<2, [0, 2, 0, 3, 0, 2]><2, [0, 0, 3, 0, 1, 2]><2, [3, 3, 1, 2, 0, 0]>
[[12, 17, 15, 7, 9, 5] [19, 18, 15, 1, 10, 24] [4, 22, 4, 10, 23, 4]]
[[10, 8, 0, 1, 0, 0] [1, 12, 5, 1, 0, 0] [1, 1, 0, 0, 0, 0]]
[[1, 1, 0, 0, 0, 0] [1, 0, 1, 0, 0, 0] [3, 1, 0, 0, 0, 0]]
}

kash> ModuleNF(M);
> {<26236112388386371287536615054, [294144153883328, 688333593256040823590763075\
215506079571362956748104814491, 106413296427452, 30897359779322, 2714188044413\
95, 688333593256040823590763075215506079571362445884846952856]><2><2, [3, 2, 1\
, 2, 2, 0]>
[1 [-10218246369603710638941628710, 0, 1, 0, 0, 1] / 2 [7551087260070784648140\
818381, -1, 1, 1, 1, 1] / 2]
[0 1 [2, -1, -1, 1, 2, 0] / 2]
[0 0 1]
}



<- back[back] [prev] [next] [index] [root]