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
(index_set=None, names=None, commutative=False, **kwds)¶ 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, 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.<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
-
class
sage.monoids.free_monoid.
FreeMonoidFactory
¶ Bases:
sage.structure.factory.UniqueFactory
Create the free monoid in \(n\) generators.
INPUT:
n
- integernames
- names of generators
OUTPUT: free 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
-
create_key
(n, names)¶
-
create_object
(version, key, **kwds)¶
-
class
sage.monoids.free_monoid.
FreeMonoid_class
(n, names=None)¶ Bases:
sage.monoids.monoid.Monoid_class
The free monoid on \(n\) generators.
-
Element
¶ alias of
FreeMonoidElement
-
cardinality
()¶ Return the cardinality of
self
, which is \(\infty\).EXAMPLES:
sage: F = FreeMonoid(2005, 'a') sage: F.cardinality() +Infinity
-
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) Traceback (most recent call last): ... 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 sage: is_FreeMonoid(FreeMonoid(index_set=ZZ)) True sage: is_FreeMonoid(FreeAbelianMonoid(index_set=ZZ)) False