Macaulay2 » Documentation
Packages » NCAlgebra :: rightKernelBergman
next | previous | forward | backward | up | index | toc

rightKernelBergman -- Methods for computing kernels of matrices over noncommutative rings using Bergman

Synopsis

Description

Let M be a matrix with homogeneous entries in an NCRing. If the degrees of the entries of M satisfy certain consistency conditions, one can define a graded homomorphism of free right modules via left multiplication by M. If isHomogeneous(M) returns true, these conditions have been verified for M and M is a valid input for rightKernelBergman. Otherwise, an error is returned stating that M is not homogeneous. To set the isHomogeneous flag to true, use assignDegrees.

For valid inputs, this method computes the first n homogeneous components of the (right) kernel of the homomorphism determined by M. If n is not specified by the user, the default maximum degree is 10. The method returns a minimal set of generators for the kernel in these degrees.

The results of this command are cached in the input matrix M in M.cache#rightKernel, and the maximum degree used in this computation is in M.cache#rightKernelDegreeLimit.

i1 : B = threeDimSklyanin(QQ,{1,1,-1},{x,y,z})
--Calling Bergman for NCGB calculation.
Complete!

o1 = B

o1 : NCQuotientRing
i2 : A = ambient B

o2 = A

o2 : NCPolynomialRing
i3 : g = -y^3-x*y*z+y*x*z+x^3

       3          3
o3 = -y +yxz-xyz+x

o3 : A
i4 : C = A/(ideal B + ncIdeal g)
--Calling Bergman for NCGB calculation.
Complete!

o4 = C

o4 : NCQuotientRing
i5 : M3 = ncMatrix {{x,y,z,0}, {-y*z-2*x^2,-y*x,z*x-x*z,x},{x*y-2*y*x,x*z,-x^2,y}, {-y^2-z*x,x^2,-x*y,z}}

o5 = | x          y    z         0 |
     | -y*z-2*x^2 -y*x y^2-2*x*z x |
     | -2*y*x+x*y x*z  -x^2      y |
     | -2*y^2+x*z x^2  -x*y      z |

o5 : NCMatrix
i6 : assignDegrees(M3,{1,0,0,0},{2,2,2,1})

o6 = | x          y    z         0 |
     | -y*z-2*x^2 -y*x y^2-2*x*z x |
     | -2*y*x+x*y x*z  -x^2      y |
     | -2*y^2+x*z x^2  -x*y      z |

o6 : NCMatrix
i7 : ker1M3 = rightKernelBergman(M3)
--Calling Bergman for NCGB calculation.
Complete!
--Calling Bergman for NCGB calculation.
Complete!

o7 = | -z     -x     y            -y*z-x^2  |
     | y      z      x            y^2       |
     | -x     y      -z           2*y*x-x*y |
     | -2*y^2 -2*x^2 -2*y*x+2*x*y -2*x*y*z  |

o7 : NCMatrix
i8 : M3*ker1M3 == 0

o8 = true
i9 : ker2M3 = rightKernelBergman(ker1M3)
--Calling Bergman for NCGB calculation.
Complete!
--Calling Bergman for NCGB calculation.
Complete!
--Calling Bergman for NCGB calculation.
Complete!
--Calling Bergman for NCGB calculation.
Complete!

o9 = | -y x^2  -x*z       -x*y       |
     | x  y^2  -y*x+2*x*y -y*z+2*x^2 |
     | z  -x*y x^2        -x*z       |
     | 0  -z   -y         -x         |

o9 : NCMatrix
i10 : ker1M3*ker2M3 == 0

o10 = true
i11 : ker3M3 = rightKernelBergman(ker2M3)
--Calling Bergman for NCGB calculation.
Complete!
--Calling Bergman for NCGB calculation.
Complete!

o11 = | 0  -2*y*x -2*y^2+2*x*z -y*x*z+x^3 |
      | -y -z     -x           -x*y       |
      | -z x      y            x*z        |
      | x  y      -z           0          |

o11 : NCMatrix
i12 : ker2M3*ker3M3 == 0

o12 = true

See also

Ways to use rightKernelBergman :

For the programmer

The object rightKernelBergman is a method function with options.