# Singular          ### 7.3.29 twostd (plural)

`Syntax:`
`twostd(` ideal_expression`)`;
`Type:`
ideal
`Purpose:`
returns a left Groebner basis of the two-sided ideal, generated by the input, treated as a set of two-sided generators. see std
`Remark:`
There are algebras with no two-sided ideals except 0 and the whole algebra (like Weyl algebras).
`Example:`
 ```LIB "ncalg.lib"; def U = makeUsl2(); // this algebra is U(sl_2) setring U; ideal i= e^3, f^3, h^3 - 4*h; option(redSB); option(redTail); ideal I = std(i); print(matrix(I)); // print a compact presentation of I ==> h3-4h,fh2-2fh,eh2+2eh,2efh-h2-2h,f3,e3 ideal J = twostd(i); // print a compact presentation of J: print(matrix(ideal(J[1..6]))); // first 6 gen's ==> h3-4h,fh2-2fh,eh2+2eh,f2h-2f2,2efh-h2-2h,e2h+2e2 print(matrix(ideal(J[7..size(J)]))); // the rest of gen's ==> f3,ef2-fh,e2f-eh-2e,e3 // compute the set of elements present in J but not in I ideal K = NF(J,I); K = K+0; // simplify K print(matrix(K)); ==> f2h-2f2,e2h+2e2,ef2-fh,e2f-eh-2e ```

### Misc 