Macaulay2 » Documentation
Packages » AssociativeAlgebras :: rightKernel
next | previous | forward | backward | up | index | toc

rightKernel -- Right kernel of a matrix

Synopsis

Description

This function computes a minimal generating set of the kernel (up to a specified degree) of a map defined by the matrix $M$, which must be a homogeneous matrix defined over a noncommutative ring. At the moment, this is done by computing two Groebner bases; one to compute the kernel, and another to compute the minimal generators of the kernel.

This (rather slow) way of doing this will be replaced with a version of Anick's resolution for modules that will be implemented in the future. We offer this version in the meantime, since it is still quite useful for investigations.

i1 : A = fourDimSklyanin(ZZ/32003, {a,b,c,d}, DegreeLimit => 10)

o1 = A

o1 : FreeAlgebraQuotient
i2 : k = vars A

o2 = | a b c d |

             1      4
o2 : Matrix A  <-- A
i3 : d1 = rightKernel(k, DegreeLimit => 10)

o3 = {1} | 3145c 6051d  -4786b -6050d 3144c -4785b |
     {1} | 3146d -6050c 4785a  6049c  3145d 4786a  |
     {1} | a     b      d      0      0     0      |
     {1} | 0     0      0      a      b     c      |

             4      6
o3 : Matrix A  <-- A
i4 : d2 = rightKernel(d1, DegreeLimit => 10)

o4 = {2} | -4785b -3145d -4026c 0      |
     {2} | 4786a  -479c  6050d  0      |
     {2} | c      3624a  10076b 0      |
     {2} | 0      3145c  6051d  -4786b |
     {2} | 0      3146d  -6050c 4785a  |
     {2} | 0      a      b      d      |

             6      4
o4 : Matrix A  <-- A
i5 : d3 = rightKernel(d2, DegreeLimit => 10)

o5 = {3} | -d     |
     {3} | -4785b |
     {3} | 4786a  |
     {3} | c      |

             4      1
o5 : Matrix A  <-- A
i6 : d4 = rightKernel(d3, DegreeLimit => 10)

o6 = 0

             1
o6 : Matrix A  <-- 0

As a warning, note that matrix multiplication over noncommutative rings currently takes place in the opposite ring as a result of existing code over the exterior and Weyl algebras. As a result, one should check computations coming from rightKernel with ncMatrixMult until this is fixed.

i7 : d1*d2

o7 = {1} | 5340cb+82da    -7248cd-2dc 0           2851ca+2409db |
     {1} | -2409ca-5194db 0           11851cd-2dc 2261cb-5340da |
     {1} | 2cd            -958cb      -8052ca     0             |
     {1} | 0              6292db      12102da     2dc           |

             4      4
o7 : Matrix A  <-- A
i8 : ncMatrixMult(d1,d2)

o8 = 0

             4      4
o8 : Matrix A  <-- A

Ways to use rightKernel :

For the programmer

The object rightKernel is a method function with options.