Top
Back: Left and two-sided Groebner bases
Forward: Applications
FastBack: Invariant Theory
FastForward: Applications
Up: Non-commutative Algebra
Top: Singular Manual
Contents: Table of Contents
Index: Index
About: About this document

A.6.2 Right Groebner bases and syzygies

Most of the SINGULAR:PLURAL commands correspond to the left-sided computations, that is left Groebner bases, left syzygies, left resolutions and so on. However, the right-sided computations can be done, using the left-sided functionality and opposite algebras.

In the example below, we consider the algebra $A:=U(sl_2)$ and a set of generators $I = \{ e^2, f \}$.

We will compute a left Groebner basis LI and a left syzygy module LS of a left ideal, generated by the set $I$.

Then, we define the opposite algebra Aop of A, set it as a basering, and create opposite objects of already computed ones.

Further on, we compute a right Groebner basis RI and a right syzygy module RS of a right ideal, generated by the set $I$ in $A$.

 
// ----- setting up the algebra:
LIB "ncalg.lib";
def A = makeUsl2();
setring A; A;
==> //   characteristic : 0
==> //   number of vars : 3
==> //        block   1 : ordering dp
==> //                  : names    e f h
==> //        block   2 : ordering C
==> //   noncommutative relations:
==> //    fe=ef-h
==> //    he=eh+2e
==> //    hf=fh-2f
// ----- equivalently, you may use
// ring AA = 0,(e,f,h),dp;
// matrix D[3][3];
// D[1,2]=-h; D[1,3]=2*e; D[2,3]=-2*f;
// def A=nc_algebra(1,D); setring A;
option(redSB);
option(redTail);
matrix T;
// --- define a generating set
ideal   I = e2,f;
ideal  LI = std(I); // the left Groebner basis of I
LI;             // we see that I was not a Groebner basis
==> LI[1]=f
==> LI[2]=h2+h
==> LI[3]=eh+e
==> LI[4]=e2
module LS = syz(I); // the left syzygy module of I
print(LS);
==> -ef-2h+6,-f3,                     -ef2-fh+4f,  -e2f2-4efh+16ef-6h2+42h-72\
   ,
==> e3,      e2f2-6efh-6ef+6h2+18h+12,e3f-3e2h-6e2,e4f                        
 // check: LS is a left syzygy, if T=0:
T  = transpose(LS)*transpose(I);
print(T);
==> 0,
==> 0,
==> 0,
==> 0 
// --- let us define the opposite algebra of A
def Aop = opposite(A);
setring Aop; Aop;         // see how Aop looks like
==> //   characteristic : 0
==> //   number of vars : 3
==> //        block   1 : ordering a
==> //                  : names    H F E
==> //                  : weights  1 1 1
==> //        block   2 : ordering ls
==> //                  : names    H F E
==> //        block   3 : ordering C
==> //   noncommutative relations:
==> //    FH=HF-2F
==> //    EH=HE+2E
==> //    EF=FE-H
// --- we "oppose" (transfer) objects from A to Aop
ideal   Iop = oppose(A,I);
ideal  RIop = std(Iop);  // the left Groebner basis of Iop in Aop
module RSop = syz(Iop);  // the left syzygy module of Iop in Aop
module LSop = oppose(A,LS);
module RLS  = syz(transpose(LSop));
// RLS is the left syzygy of transposed LSop in Aop
// --- let us return to A and transfer (i.e. oppose)
// all the computed objects back
setring A;
ideal  RI = oppose(Aop,RIop); // the right Groebner basis of I
RI;              // it differs from the left Groebner basis LI
==> RI[1]=f
==> RI[2]=h2-h
==> RI[3]=eh+e
==> RI[4]=e2
module RS = oppose(Aop,RSop); // the right syzygy module of I
print(RS);
==> -ef+3h+6,-f3,                     -ef2+3fh,-e2f2+4efh+4ef,
==> e3,      e2f2+2efh-6ef+2h2-10h+12,e3f,     e4f            
 // check: RS is a right syzygy, if T=0:
T = matrix(I)*RS;
T;
==> T[1,1]=0
==> T[1,2]=0
==> T[1,3]=0
==> T[1,4]=0
module RLS;
RLS = transpose(oppose(Aop,RLS));
// RLS is the right syzygy of a left syzygy of I
// it is I itself ?
print(RLS);
==> e2,f


Top Back: Left and two-sided Groebner bases Forward: Applications FastBack: Invariant Theory FastForward: Applications Up: Non-commutative Algebra Top: Singular Manual Contents: Table of Contents Index: Index About: About this document
            User manual for Singular version 4-0-3, 2016, generated by texi2html.