Home Online Manual
Back: Normalization
Forward: Algebraic dependence
FastBack: Computing Groebner and Standard Bases
FastForward: Singularity Theory
Up: Commutative Algebra
Top: Singular Manual
Contents: Table of Contents
Index: Index
About: About this document

A.3.11 Kernel of module homomorphisms

Let $A$, $B$ be two matrices of size $m\times r$ and $m\times s$over the ring $R$ and consider the corresponding maps

R^r \buildrel{A}\over{\longrightarrow}
R^m \buildrel{B}\over{\longleftarrow} R^s\;.

We want to compute the kernel of the map $R^r \buildrel{A}\over{\longrightarrow}
R^m/\hbox{Im}(B) \;.$This can be done using the modulo command:

\hbox{\tt modulo}(A,B)=\hbox{ker}(R^r
\buildrel{A}\over{\longrightarrow}R^m/\hbox{Im}(B)) \; .

More precisely, the output of modulo(A,B) is a module such that the given generating vectors span the kernel on the right-hand side.

  ring r=0,(x,y,z),(c,dp);
  matrix A[2][2]=x,y,z,1;
  matrix B[2][2]=x2,y2,z2,xz;
==> x2,y2,
==> z2,xz 
  def C=modulo(A,B);
  print(C);            // matrix of generators for the kernel
==> yz2-x2, xyz-y2,  x2z-xy, x3-y2z,
==> x2z-xz2,-x2z+y2z,xyz-yz2,0      
  print(A*matrix(C));  // should be in Im(B)
==> x2yz-x3,y3z-xy2, x3z+xy2z-y2z2-x2y,x4-xy2z,
==> yz3-xz2,xyz2-x2z,x2z2-yz2,         x3z-y2z2