# Singular

### 7.8.1 freeAlgebra (letterplace)

`Syntax:`

`freeAlgebra(` ring_expression r, int_expression d `)`
`Type:`
ring
`Purpose:`
Creates a free (letterplace) ring with the variables of the ring `r` up to the degree (length) bound `d`, with the monomial ordering, determined by those on the ring `r`.
`Note:`
A letterplace ring has an attribute called `isLetterplaceRing`, which is zero for non-letterplace rings and contains the number of variables of the free algebra it encodes, otherwise.
`Example:`
 ```LIB "freegb.lib"; ring r = 0,(x,y,z),dp; def R = freeAlgebra(r, 7); // this ordering is degree right lex R; ==> // coefficients: QQ ==> // number of vars : 21 ==> // block 1 : ordering dp ==> // : names x y z x y z x y z x y z x y z x y z x y z ==> // block 2 : ordering C ==> // letterplace ring (block size 3) attrib(R,"isLetterplaceRing"); ==> 3 ring r2 = 0,(x,y,z),lp; def R2 = freeAlgebra(r2, 5); // note, that this ordering is NOT left or right lex R2; ==> // coefficients: QQ ==> // number of vars : 15 ==> // block 1 : ordering a ==> // : names x y z x y z x y z x y z x y z ==> // : weights 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 ==> // block 2 : ordering a ==> // : names x y z x y z x y z x y z x y z ==> // : weights 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 ==> // block 3 : ordering a ==> // : names x y z x y z x y z x y z x y z ==> // : weights 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 ==> // block 4 : ordering lp ==> // : names x y z x y z x y z x y z x y z ==> // block 5 : ordering C ==> // letterplace ring (block size 3) attrib(R2,"isLetterplaceRing"); ==> 3 ```
See Monomial orderings on free algebras.