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

 


ModuleIntersection

Computes the intersection of two modules.

Syntax:

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

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

See also:  ModuleConcat, ModuleNF

Description:

This function computes the intersetion M_1 cap M_2 of the given modules. Both modules must be of full rank. The additional parameters control the normal form algorithm application. For their description see ModuleNF. The algorithm computes the dual module of the sum of the dual moduls of the input, it is described in Hop1.


Example:

kash>  O:=OrderMaximal(Poly(Zx, [1,-10,-3,-2]));;
kash> o:=OrderMaximal(O,3,3);;
kash> Oa:=OrderMaximal(OrderAbs(o));;
kash> L:=List(Factor(10*Oa),i->i[1]);;
kash> M1:=IdealBasis(IdealMove(L[2]*L[6], o));
{<10, [26, 1, 0]><2, [0, 0, 1]><1>
[1 -2 -1]
[0 1 1]
[0 0 1]
}

kash> M2:=IdealBasis(IdealMove(L[1]*L[6], o));
{<10, [-12714, -20615, -67306]><1><1>
[1 3 1]
[0 1 0]
[0 0 1]
}

kash> ModuleIntersection(M1,M2);
> {<10, [88, 2, 99]><2, [0, 2, 1]><2, [2, 2, 1]>
[1 -2 -1]
[0 1 1]
[0 0 1]
}



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