Free Monoids¶
AUTHORS:
- David Kohel (2005-09)
- Simon King (2011-04): Put free monoids into the category framework
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.
-
sage.monoids.free_monoid.
FreeMonoid
¶ Return a free monoid on \(n\) generators or with the generators indexed by a set \(I\).
We construct free monoids by specifing either:
- the number of generators and/or the names of the generators
- the indexing set for the generators
INPUT:
index_set
– an indexing set for the generators; if an integer \(n\), than this becomes \(\{0, 1, \ldots, n-1\}\)names
– names of generatorscommutative
– (default:False
) whether the free monoid is commutative or not
OUTPUT:
A free monoid.
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: F.<a,b,c,d,e> = FreeMonoid(); F Free monoid on 5 generators (a, b, c, d, e) sage: FreeMonoid(index_set=ZZ) Free monoid indexed by Integer Ring sage: F.<x,y,z> = FreeMonoid(abelian=True); F Free abelian monoid on 3 generators (x, y, z) sage: FreeMonoid(index_set=ZZ, commutative=True) Free abelian monoid indexed by Integer Ring
-
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 sage: is_FreeMonoid(FreeMonoid(index_set=ZZ)) True sage: is_FreeMonoid(FreeAbelianMonoid(index_set=ZZ)) False