# Singular

### 7.3.26 std (plural)

`Syntax:`
`std (` ideal_expression`)`
`std (` module_expression`)`
`std (` ideal_expression`,` poly_expression `)`
`std (` module_expression`,` vector_expression `)`
`Type:`
ideal or module
`Purpose:`
returns a left Groebner basis (see Groebner bases in G-algebras for a definition) of an ideal or module with respect to the monomial ordering of the basering.

Use an optional second argument of type poly, resp. vector, to construct the Groebner basis from an already computed one (given as the first argument) and one additional generator (the second argument).

`Note:`
To view the progress of long running computations, use `option(prot)`. (see option(prot)).

`Example:`
 ```LIB "ncalg.lib"; option(prot); def R = makeUsl2(); // this algebra is U(sl_2) setring R; ideal I = e2, f2, h2-1; I=std(I); ==> 2(2)s ==> s ==> s ==> 3s ==> (3)2(2)s ==> s ==> (4)(3)(2)3s ==> 2(4)(3)(2)32product criterion:6 chain criterion:3 I; ==> I[1]=h2-1 ==> I[2]=fh-f ==> I[3]=eh+e ==> I[4]=f2 ==> I[5]=2ef-h-1 ==> I[6]=e2 kill R; //------------------------------------------ def RQ = makeQso3(3); // this algebra is U'_q(so_3), // where Q is a 6th root of unity setring RQ; RQ; ==> // coefficients: QQ[Q]/(Q2-Q+1) ==> // number of vars : 3 ==> // block 1 : ordering dp ==> // : names x y z ==> // block 2 : ordering C ==> // noncommutative relations: ==> // yx=(Q-1)*xy+(-Q)*z ==> // zx=(-Q)*xz+(-Q+1)*y ==> // zy=(Q-1)*yz+(-Q)*x ideal J=x2, y2, z2; J=std(J); ==> 2(2)s ==> s ==> s ==> 3s ==> (4)s ==> 2(3)s ==> (5)s ==> (6)s ==> 1(8)s ==> (7)(5)s ==> (3)(2)product criterion:0 chain criterion:17 J; ==> J[1]=z ==> J[2]=y ==> J[3]=x ```