% This file was created automatically from monoid.msk.
% DO NOT EDIT!
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
%A  monoid.msk                 GAP documentation                Thomas Breuer
%%
%A  @(#)$Id: monoid.msk,v 1.4 2002/04/15 10:02:31 sal Exp $
%%
%Y  (C) 1998 School Math and Comp. Sci., University of St.  Andrews, Scotland
%Y  Copyright (C) 2002 The GAP Group
%%
\Chapter{Monoids}

This chapter describes functions for monoids.
Currently there are only few of them.
More general functions for magmas and semigroups can be found in
Chapters~"Magmas" and "Semigroups".


\>IsMonoid( <D> ) P

A *monoid* is a magma-with-one (see~"Magmas") with associative
multiplication.



\>Monoid( <gen1>, <gen2> ... ) F
\>Monoid( <gens> ) F
\>Monoid( <gens>, <id> ) F

In the first form, `Monoid' returns the monoid generated by the
arguments <gen1>, <gen2> ...,
that is, the closure of these elements under multiplication and taking
the 0-th power.
In the second form, `Monoid' returns the monoid generated by the
elements in the homogeneous list <gens>;
a square matrix as only argument is treated as one generator,
not as a list of generators.
In the third form, `Monoid' returns the monoid generated by the
elements in the homogeneous list <gens>, with identity <id>.

It is *not* checked whether the underlying multiplication is associative,
use `MagmaWithOne' (see~"MagmaWithOne") and `IsAssociative'
(see~"IsAssociative")
if you want to check whether a magma-with-one is in fact a monoid.


\>Submonoid( <M>, <gens> ) F
\>SubmonoidNC( <M>, <gens> ) F

are just synonyms of `SubmagmaWithOne' and `SubmagmaWithOneNC',
respectively (see~"SubmagmaWithOne").


\>MonoidByGenerators( <gens> ) O
\>MonoidByGenerators( <gens>, <one> ) O

is the underlying operation of `Monoid' (see~"Monoid").



\>AsMonoid( <C> ) A

If <C> is a collection whose elements form a monoid
(see~"IsMonoid") then `AsMonoid' returns this monoid.
Otherwise `fail' is returned.


\>AsSubmonoid( <D>, <C> ) O

Let <D> be a domain and <C> a collection.
If <C> is a subset of <D> that forms a monoid then `AsSubmonoid'
returns this monoid, with parent <D>.
Otherwise `fail' is returned.


\>GeneratorsOfMonoid( <M> ) A

Monoid generators of a monoid <M> are the same as
magma-with-one generators (see~"GeneratorsOfMagmaWithOne").


\>TrivialSubmonoid( <M> ) A

is just a synonym for `TrivialSubmagmaWithOne'
(see~"TrivialSubmagmaWithOne").



\>FreeMonoid( [<wfilt>, ]<rank> ) F
\>FreeMonoid( [<wfilt>, ]<rank>, <name> ) F
\>FreeMonoid( [<wfilt>, ]<name1>, <name2>, ... ) F
\>FreeMonoid( [<wfilt>, ]<names> ) F
\>FreeMonoid( [<wfilt>, ]infinity, <name>, <init> ) F

Called in the first form, `FreeMonoid' returns a free monoid on
<rank> generators.
Called in the second form, `FreeMonoid' returns a free monoid on
<rank> generators, printed as `<name>1', `<name>2' etc.,
that is, each name is the concatenation of the string <name> and an
integer from `1' to <range>.
Called in the third form, `FreeMonoid' returns a free monoid on
as many generators as arguments, printed as <name1>, <name2> etc.
Called in the fourth form, `FreeMonoid' returns a free monoid on
as many generators as the length of the list <names>, the $i$-th
generator being printed as `<names>[$i$]'.
Called in the fifth form, `FreeMonoid' returns a free monoid on
infinitely many generators, where the first generators are printed
by the names in the list <init>, and the other generators by <name>
and an appended number.

If the extra argument <wfilt> is given, it must be either
`IsSyllableWordsFamily' or `IsLetterWordsFamily' or
`IsWLetterWordsFamily' or `IsBLetterWordsFamily'. The filter then
specifies the representation used for the elements of the free group
(see~"Representations for Associative Words"). If no such filter is
given, a letter representation is used.



\>MonoidByMultiplicationTable( <A> ) F

returns the monoid whose multiplication is defined by the square
matrix <A> (see~"MagmaByMultiplicationTable") if such a monoid exists.
Otherwise `fail' is returned.




%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
%E

