# Singular

#### 7.2.5.1 qring declaration (plural)

Syntax:
`qring` name `=` ideal_expression `;`
Default:
none
Purpose:
declares a quotient ring as the basering modulo an `ideal_expression` and sets it as current basering.
Note:
reports error if an ideal is not a two-sided Groebner basis.
Example:
 ```ring r=0,(z,u,v,w),dp; def R=nc_algebra(-1,0); // an anticommutative algebra setring R; option(redSB); option(redTail); ideal i=z^2,u^2,v^2,w^2, zuv-w; qring Q = i; // incorrect call produces error ==> // ** i is no standard basis ==> // ** i is no twosided standard basis kill Q; setring R; // go back to the ring R qring q=twostd(i); // now it is an exterior algebra modulo q; ==> // characteristic : 0 ==> // number of vars : 4 ==> // block 1 : ordering dp ==> // : names z u v w ==> // block 2 : ordering C ==> // noncommutative relations: ==> // uz=-zu ==> // vz=-zv ==> // wz=-zw ==> // vu=-uv ==> // wu=-uw ==> // wv=-vw ==> // quotient ring from ideal ==> _[1]=w2 ==> _[2]=vw ==> _[3]=uw ==> _[4]=zw ==> _[5]=v2 ==> _[6]=u2 ==> _[7]=z2 ==> _[8]=zuv-w poly k = (v-u)*(zv+u-w); k; // the output is not yet totally reduced ==> zuv-uv+uw-vw poly ek=reduce(k,std(0)); ek; // the reduced form ==> -uv+w ```