# Singular

##### 7.7.11.0. makeUsl
Procedure from library `ncalg.lib` (see ncalg_lib).

Usage:
makeUsl(n,[p]); n an integer, n>1; p an optional integer (field characteristic)

Return:
ring

Purpose:
set up the U(sl_n) in the variables ( x(i),y(i),h(i) | i=1..n+1) over the field of char p

Note:
activate this ring with the `setring` command
This presentation of U(sl_n) is the standard one, i.e. positive resp. negative roots are denoted by x(i) resp. y(i) and the Cartan elements are denoted by h(i).
The variables are ordered as x(1),...x(n),y(1),...,y(n),h(1),...h(n).

Example:
 ```LIB "ncalg.lib"; def a=makeUsl(3); setring a; a; ==> // characteristic : 0 ==> // number of vars : 8 ==> // block 1 : ordering dp ==> // : names x(1) x(2) x(3) y(1) y(2) y(3) h(1) h(2) ==> // block 2 : ordering C ==> // noncommutative relations: ==> // x(2)x(1)=x(1)*x(2)+x(3) ==> // y(1)x(1)=x(1)*y(1)-h(1) ==> // y(3)x(1)=x(1)*y(3)-y(2) ==> // h(1)x(1)=x(1)*h(1)+2*x(1) ==> // h(2)x(1)=x(1)*h(2)-x(1) ==> // y(2)x(2)=x(2)*y(2)-h(2) ==> // y(3)x(2)=x(2)*y(3)+y(1) ==> // h(1)x(2)=x(2)*h(1)-x(2) ==> // h(2)x(2)=x(2)*h(2)+2*x(2) ==> // y(1)x(3)=x(3)*y(1)-x(2) ==> // y(2)x(3)=x(3)*y(2)+x(1) ==> // y(3)x(3)=x(3)*y(3)-h(1)-h(2) ==> // h(1)x(3)=x(3)*h(1)+x(3) ==> // h(2)x(3)=x(3)*h(2)+x(3) ==> // y(2)y(1)=y(1)*y(2)-y(3) ==> // h(1)y(1)=y(1)*h(1)-2*y(1) ==> // h(2)y(1)=y(1)*h(2)+y(1) ==> // h(1)y(2)=y(2)*h(1)+y(2) ==> // h(2)y(2)=y(2)*h(2)-2*y(2) ==> // h(1)y(3)=y(3)*h(1)-y(3) ==> // h(2)y(3)=y(3)*h(2)-y(3) ```