Description
The function monoid is called whenever a polynomial ring is created, see Ring Array, or when a local polynomial ring is made, see Ring List. Some of the options provided when making a monoid don't take effect until the monoid is made into a polynomial ring.
Let's make a free ordered commutative monoid on the variables
a,b,c, with degrees 2, 3, and 4, respectively.
i1 : M = monoid [a,b,c,Degrees=>{2,3,4}]
o1 = M
o1 : GeneralOrderedMonoid

i2 : degrees M
o2 = {{2}, {3}, {4}}
o2 : List

i3 : M_0 * M_1^6
6
o3 = a*b
o3 : M

Use
use to arrange for the variables to be assigned their values in the monoid.
i4 : a
o4 = a
o4 : M

i5 : use M
o5 = M
o5 : GeneralOrderedMonoid

i6 : a * b^6
6
o6 = a*b
o6 : M

The options used when the monoid was created can be recovered with
options.
i7 : options M
o7 = OptionTable{Constants => false }
DegreeLift => null
DegreeMap => null
DegreeRank => 1
Degrees => {{2}, {3}, {4}}
Global => true
Heft => {1}
Inverses => false
Join => null
Local => false
MonomialOrder => {MonomialSize => 32 }
{GRevLex => {2, 3, 4}}
{Position => Up }
SkewCommutative => {}
Variables => {a, b, c}
WeylAlgebra => {}
o7 : OptionTable

The variables listed may be symbols or indexed variables. The values assigned to these variables are the corresponding monoid generators. The function
baseName may be used to recover the original symbol or indexed variable.
The Heft option is used in particular by Ext(Module,Module).
i8 : R = ZZ[x,y, Degrees => {1,2}, Heft => {1}]
o8 = R
o8 : PolynomialRing

i9 : degree \ gens R
o9 = {{1}, {2}}
o9 : List

i10 : transpose vars R
o10 = {1}  x 
{2}  y 
2 1
o10 : Matrix R < R

In this example we make a Weyl algebra.
i11 : R = ZZ/101[x,dx,y,dy,WeylAlgebra => {x=>dx, y=>dy}]
o11 = R
o11 : PolynomialRing, 2 differential variables

i12 : dx*x
o12 = x*dx + 1
o12 : R

i13 : dx*x^10
10 9
o13 = x dx + 10x
o13 : R

i14 : dx*y^10
10
o14 = dx*y
o14 : R

In this example we make a skew commutative ring.
i15 : R = ZZ[x,y,z,SkewCommutative=>{x,y}]
o15 = R
o15 : PolynomialRing, 2 skew commutative variables

i16 : x*y
o16 = x*y
o16 : R

i17 : y*x
o17 = x*y
o17 : R

i18 : x*zz*x
o18 = 0
o18 : R

By default, (multi)degrees are concatenated when forming polynomial rings over polynomial rings, as can be seen by examining the corresponding flattened monoid, which displays information about all of the variables.
i19 : QQ[x][y]
o19 = QQ[x][y]
o19 : PolynomialRing

i20 : oo.FlatMonoid
o20 = monoid[y, x, Degrees => {{1}, {0}}, Heft => {2:1}, MonomialOrder => {MonomialSize => 32}, DegreeRank => 2]
{0} {1} {GRevLex => {1} }
{Position => Up }
{GRevLex => {1} }
o20 : GeneralOrderedMonoid

i21 : QQ[x][y][z]
o21 = QQ[x][y][z]
o21 : PolynomialRing

i22 : oo.FlatMonoid
o22 = monoid[z, y, x, Degrees => {{1}, {0}, {0}}, Heft => {3:1}, MonomialOrder => {MonomialSize => 32}, DegreeRank => 3]
{0} {1} {0} {GRevLex => {1} }
{0} {0} {1} {Position => Up }
{2:(GRevLex => {1})}
o22 : GeneralOrderedMonoid

That behavior can be overridden with the
Join option.
i23 : QQ[x][y,Join => false]
o23 = QQ[x][y]
o23 : PolynomialRing

i24 : oo.FlatMonoid
o24 = monoid[y, x, Degrees => {2:1}, Heft => {1}, MonomialOrder => {MonomialSize => 32}, DegreeRank => 1]
{GRevLex => {1} }
{Position => Up }
{GRevLex => {1} }
o24 : GeneralOrderedMonoid

A degree map may be provided, and it will be used in computing tensor products.
i25 : A = QQ[x];

i26 : B = A[y,Join => false,DegreeMap => x > 7*x]
o26 = B
o26 : PolynomialRing

i27 : B.FlatMonoid
o27 = monoid[y, x, Degrees => {1, 7}, Heft => {1}, MonomialOrder => {MonomialSize => 32}, DegreeRank => 1]
{GRevLex => {1} }
{Position => Up }
{GRevLex => {1} }
o27 : GeneralOrderedMonoid

i28 : degrees A^{1,2}
o28 = {{1}, {2}}
o28 : List

i29 : degrees (B**A^{1,2})
o29 = {{7}, {14}}
o29 : List

For certain applications, such as lifting matrices, a degree lift function can be provided.
i30 : B = A[y,Join => false,DegreeMap => x > 7*x,
DegreeLift => x > apply(x, d > lift(d/7,ZZ))]
o30 = B
o30 : PolynomialRing

i31 : matrix {{x_B}}
o31 =  x 
1 1
o31 : Matrix B < B

i32 : degrees oo
o32 = {{{0}}, {{7}}}
o32 : List

i33 : lift(matrix {{x_B}},A)
o33 =  x 
1 1
o33 : Matrix A < A

i34 : degrees oo
o34 = {{{0}}, {{1}}}
o34 : List

Synopsis

 Usage:
monoid R

Inputs:

Outputs:

the monoid of monomials in the polynomial ring R
If R is a quotient ring of a polynomial ring S, then the monoid of S is returned.
i35 : R = QQ[a..d, Weights=>{1,2,3,4}]
o35 = R
o35 : PolynomialRing

i36 : monoid R
o36 = monoid[a..d, Degrees => {4:1}, Heft => {1}, MonomialOrder => {Weights => {1..4} }, DegreeRank => 1]
{MonomialSize => 32}
{GRevLex => {4:1} }
{Position => Up }
o36 : GeneralOrderedMonoid
