### Navigation

- index
- modules |
- next |
- previous |
- Monoids »

# 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 generators
  - `commutative` – (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` - integer
  - `names` - 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)

    x.__init__(...) initializes x; see help(type(x)) for signature

  `create_object`(version, key, **kwds)

    x.__init__(...) initializes x; see help(type(x)) for signature

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

  `one_element`()

    Returns the identity element in this monoid.

    EXAMPLES:

        sage: F = FreeMonoid(2005, 'a')
        sage: F.one_element()
        1

`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

### Navigation

- index
- modules |
- next |
- previous |
- Monoids »