NCMatrix // NCMatrix -- Factor one map through another

Synopsis

• Operator: //
• Usage:
L = M // N
• Inputs:
• Outputs:

Description

This command factors one map through another. One nice application of this is to compute twisted matrix factorizations. If the maps input are homogeneous, then the degrees must match up for the command to work.

If M does not factor through N, then the return value L is such that M - N*L is the reduction of M modulo a Groebner basis for the image of N.

Here is an example of doing so over a PI Sklyanin algebra. Note that since quotients of quotients are (unfortunately) not yet implemented, we have to do a bit of acrobatics to define the quotient of the Sklyanin we want.

 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

The element g below is central in B (the two is just for convenience).

 i3 : g = 2*(-y^3-x*y*z+y*x*z+x^3) 3 3 o3 = -2y +2yxz-2xyz+2x o3 : A i4 : J = (ideal B) + ncIdeal {g} 2 2 2 3 3 o4 = Two-sided ideal {zy+yz-x , zx-y +xz, -z +yx+xy, -2y +2yxz-2xyz+2x } o4 : NCIdeal i5 : B' = A/J -- Factor of sklyanin --Calling Bergman for NCGB calculation. Complete! o5 = B' o5 : NCQuotientRing i6 : k = ncMatrix {{x,y,z}} o6 = | x y z | o6 : NCMatrix i7 : BprimeToB = ncMap(B,B',gens B) -- way to lift back from B' to B o7 = NCRingMap B <--- B' o7 : NCRingMap i8 : M = BprimeToB rightKernelBergman rightKernelBergman k -- second syzygy of k over B --Calling Bergman for NCGB calculation. Complete! --Calling Bergman for NCGB calculation. Complete! --Calling Bergman for NCGB calculation. Complete! --Calling Bergman for NCGB calculation. Complete! --Calling Bergman for NCGB calculation. Complete! --Calling Bergman for NCGB calculation. Complete! o8 = | -z y*z -y^2 -y*x-2*x*y | | x y*x+x*y y*z+x^2 -y^2+3*x*z | | y -x*z -x*y x^2 | | 0 -2*y -2*x -2*z | o8 : NCMatrix

At this point, M is maximal Cohen-Macaulay B'-module, and hence the projective dimension of M as a B-module is 1. Since M is a B' module, multiplication by g on the complex that gives the resolution over B is null homotopic. This means we may factor the map f through f times the identity. We do so below.

 i9 : gId = g*(ncMatrix applyTable(entries id_(ZZ^4), i -> promote(i,B))) o9 = | -2*y^3+2*y*x*z-2*x*y*z+2*x^3 0 0 0 | | 0 -2*y^3+2*y*x*z-2*x*y*z+2*x^3 0 0 | | 0 0 -2*y^3+2*y*x*z-2*x*y*z+2*x^3 0 | | 0 0 0 -2*y^3+2*y*x*z-2*x*y*z+2*x^3 | o9 : NCMatrix i10 : assignDegrees(gId,{2,2,2,3},{5,5,5,6}); i11 : M' = gId // M --Calling Bergman for NCGB calculation. Complete! o11 = | -2*y*x 0 -2*y^2+2*x*z y*x*z+x^3 | | -x z -y y^2-x*z | | -y -x z y*z-x^2 | | z y x 0 | o11 : NCMatrix i12 : M*M' == gId o12 = true