Free Monoids

AUTHORS:

  • David Kohel (2005-09)

Sage supports free monoids on any prescribed finite number n\geq 0 of generators. Use the FreeMonoid function to create a free monoid, and the gen and gens functions to obtain the corresponding generators. You can print the generators as arbitrary strings using the optional names argument to the FreeMonoid function.

class sage.monoids.free_monoid.FreeMonoidFactory

Returns a free monoid on n generators.

INPUT:

  • n - integer
  • names - names of generators

OUTPUT: free abelian monoid

EXAMPLES:

sage: FreeMonoid(0,'')
Free monoid on 0 generators ()
sage: F.<a,b,c,d,e> = FreeMonoid(5); F
Free monoid on 5 generators (a, b, c, d, e)
sage: F(1)
1
sage: mul([ a, b, a, c, b, d, c, d ], F(1))
a*b*a*c*b*d*c*d
__weakref__
list of weak references to the object (if defined)
create_key(n, names)
create_object(version, key)
class sage.monoids.free_monoid.FreeMonoid_class(n, names=None)

The free monoid on n generators.

__call__(x, check=True)

Return x coerced into this free monoid.

One can create a free monoid from the integer 1 and from a list of 2-tuples of integers (i,j), where (i,j) corresponds to x_i^j, where x_i is the `i`th generator.

EXAMPLES:

sage: F = FreeMonoid(3, 'a')
sage: F(1)
1
sage: F(F.gen(0))
a0
sage: F(0)
...
TypeError: Argument x (= 0) is of the wrong type.
sage: F([(0,5),(1,2),(0,10),(0,2),(1,2)])
a0^5*a1^2*a0^12*a1^2
__cmp__(other)
__contains__(x)
__init__(n, names=None)

Create free monoid on n generators.

INPUT:

  • n - integer
  • names - (optional) variable name or list of variable names

EXAMPLES:

sage: F = FreeMonoid(3,'x'); F
Free monoid on 3 generators (x0, x1, x2)
sage: x = F.gens()
sage: x[0]*x[1]**5 * (x[0]*x[2])
x0*x1^5*x0*x2
sage: F = FreeMonoid(3, 'a')
sage: F
Free monoid on 3 generators (a0, a1, a2)
sage: M = FreeMonoid(3, names=['a','b','c'])
sage: loads(M.dumps()) == M
True
__repr__()
gen(i=0)

The i-th generator of the monoid.

INPUT:

  • i - integer (default: 0)

EXAMPLES:

sage: F = FreeMonoid(3, 'a')
sage: F.gen(1)
a1
sage: F.gen(2)
a2
sage: F.gen(5)
...
IndexError: Argument i (= 5) must be between 0 and 2.
ngens()

The number of free generators of the monoid.

EXAMPLES:

sage: F = FreeMonoid(2005, 'a')
sage: F.ngens()
2005
sage.monoids.free_monoid.is_FreeMonoid(x)

Return True if x is a free monoid.

EXAMPLES:

sage: from sage.monoids.free_monoid import is_FreeMonoid
sage: is_FreeMonoid(5)
False
sage: is_FreeMonoid(FreeMonoid(7,'a'))
True
sage: is_FreeMonoid(FreeAbelianMonoid(7,'a'))
False
sage: is_FreeMonoid(FreeAbelianMonoid(0,''))
False

Previous topic

Monoids

Next topic

Monoid Elements

This Page