# Finitely Presented Semigroups

- [Introduction](introduction.md)

- [The Construction of Free Semigroups and their Elements](creation.md)

  - [Structure Constructors](creation.md#structure-constructors)

    - [`FreeSemigroup(n): RngIntElt → SgpFP`](creation.md#function-freesemigroup-rngintelt)

    - [`FreeMonoid(n): RngIntElt → MonFP`](creation.md#function-freemonoid-rngintelt)

    - [`Example: Free Semigroup`](creation.md#example-ex-70a198)

  - [Element Constructors](creation.md#element-constructors)

    - [`S ! [i₁, ... iₛ]: SgpFP, [RngIntElt] → SgpFPElt`](creation.md#operation-op-sgpfp-rngintelt)

    - [`Id(M): MonFP → MonFPElt`](creation.md#function-id-monfp)

    - [`M ! 1: MonFP → MonFPElt`](creation.md#operation-op-monfp)

- [Elementary Operators for Words](operation.md)

  - [Multiplication and Exponentiation](operation.md#multiplication-and-exponentiation)

    - [`u * v: SgpFPElt, SgpFPElt → SgpFPElt`](operation.md#operation-op-times-sgpfpelt-sgpfpelt)

    - [`u ^ n: SgpFPElt, RngIntElt → SgpFPElt`](operation.md#operation-op-pow-sgpfpelt-rngintelt)

    - [`G ! Q: SgpFP, [  SgpFPElt ] → SgpFPElt`](operation.md#operation-op-sgpfp-sgpfpelt)

  - [The Length of a Word](operation.md#the-length-of-a-word)

    - [`# u: SgpFPElt → RngIntElt`](operation.md#operation-operation-sgpfpelt-rngintelt)

  - [Equality and Comparison](operation.md#equality-and-comparison)

    - [`u eq v: SgpFPElt, SgpFPElt → BoolElt`](operation.md#operation-op-eq-sgpfpelt-sgpfpelt)

    - [`u ne v: SgpFPElt, SgpFPElt → BoolElt`](operation.md#operation-op-ne-sgpfpelt-sgpfpelt)

    - [`u lt v: SgpFPElt, SgpFPElt → BoolElt`](operation.md#operation-op-lt-sgpfpelt-sgpfpelt)

    - [`u le v: SgpFPElt, SgpFPElt → BoolElt`](operation.md#operation-op-le-sgpfpelt-sgpfpelt)

    - [`u ge v: SgpFPElt, SgpFPElt → BoolElt`](operation.md#operation-op-ge-sgpfpelt-sgpfpelt)

    - [`u gt v: SgpFPElt, SgpFPElt → BoolElt`](operation.md#operation-op-gt-sgpfpelt-sgpfpelt)

    - [`IsOne(u): MonFPElt → BoolElt`](operation.md#function-isone-monfpelt)

- [Specification of a Presentation](presentation.md)

  - [Relations](presentation.md#relations)

    - [`w₁ = w₂: SgpFPElt, SgpFPElt → Rel`](presentation.md#operation-op-sgpfpelt-sgpfpelt)

    - [`LHS(r): Rel → SgpFPElt`](presentation.md#function-lhs-rel)

    - [`RHS(r): Rel → SgpFPElt`](presentation.md#function-rhs-rel)

  - [Presentations](presentation.md#presentations)

    - [`Semigroup< generators | relations >: SgpFPElt, ..., SgpFPElt, Rel, ...Rel → SgpFP`](presentation.md#constructor-constructor-semigroup-sgpfpelt-sgpfpelt-rel-rel-sgpfp)

    - [`Monoid< generators | relations >: MonFPElt, ..., MonFPElt, Rel, ..., Rel → MonFP`](presentation.md#constructor-constructor-monoid-monfpelt-monfpelt-rel-rel-monfp)

    - [`Example: Monoid`](presentation.md#example-ex-a36e1d)

  - [Accessing the Defining Generators and Relations](presentation.md#accessing-the-defining-generators-and-relations)

    - [`S . i: SgpFP, RngIntElt → SgpFPElt`](presentation.md#operation-operation-sgpfp-rngintelt-sgpfpelt)

    - [`Generators(S): SgpFP → { SgpFPElt}`](presentation.md#function-generators-sgpfp)

    - [`NumberOfGenerators(S): SgpFP → RngIntElt`](presentation.md#function-numberofgenerators-sgpfp)

    - [`Ngens(S): SgpFP → RngIntElt`](presentation.md#function-ngens-sgpfp)

    - [`Parent(u): SgpFPElt → SgpFP`](presentation.md#function-parent-sgpfpelt)

    - [`Relations(S): SgpFP → [ Rel ]`](presentation.md#function-relations-sgpfp)

- [Subsemigroups, Ideals and Quotients](subsemigroup-ideal-quotient.md)

  - [Subsemigroups and Ideals](subsemigroup-ideal-quotient.md#subsemigroups-and-ideals)

    - [`sub<S | L₁, ..., Lᵣ>: SgpFP, SgpFPElt, ..., SgpFPElt → SgpFP`](subsemigroup-ideal-quotient.md#constructor-constructor-sub-sgpfp-sgpfpelt-sgpfpelt-sgpfp)

    - [`ideal<S | L₁, ..., Lᵣ>: SgpFP, SgpFPElt, ..., SgpFPElt → SgpFPIdl`](subsemigroup-ideal-quotient.md#constructor-constructor-ideal-sgpfp-sgpfpelt-sgpfpelt-sgpfpidl)

    - [`lideal<G | L₁, ..., Lᵣ>: SgpFP, SgpFPElt, ..., SgpFPElt → SgpFPIdl`](subsemigroup-ideal-quotient.md#constructor-constructor-lideal-sgpfp-sgpfpelt-sgpfpelt-sgpfpidl)

    - [`rideal<G | L₁, ..., Lᵣ>: SgpFP, SgpFPElt, ..., SgpFPElt → SgpFPIdl`](subsemigroup-ideal-quotient.md#constructor-constructor-rideal-sgpfp-sgpfpelt-sgpfpelt-sgpfpidl)

  - [Quotients](subsemigroup-ideal-quotient.md#quotients)

    - [`quo< F | relations >: SgpFP, Rel, ..., Rel → SgpFP`](subsemigroup-ideal-quotient.md#constructor-constructor-quo-sgpfp-rel-rel-sgpfp)

- [Extensions](extension.md)

  - [`DirectProduct(R, S): SgpFP, SgpFP → SgpFP`](extension.md#function-directproduct-sgpfp-sgpfp)

  - [`FreeProduct(R, S): SgpFP, SgpFP → SgpFP`](extension.md#function-freeproduct-sgpfp-sgpfp)

- [Elementary Tietze Transformations](modification-Tietze.md)

  - [`AddRelation(S, r): SgpFP, Rel → SgpFP`](modification-Tietze.md#function-addrelation-sgpfp-rel)

  - [`AddRelation(S, r, i): SgpFP, Rel, RngIntElt → SgpFP`](modification-Tietze.md#function-addrelation-sgpfp-rel-rngintelt)

  - [`DeleteRelation(S, r): SgpFP, Rel → SgpFP`](modification-Tietze.md#function-deleterelation-sgpfp-rel)

  - [`DeleteRelation(S, i): SgpFP, RngIntElt → SgpFP`](modification-Tietze.md#function-deleterelation-sgpfp-rngintelt)

  - [`ReplaceRelation(S, r₁, r₂): SgpFP, Rel, Rel → SgpFP`](modification-Tietze.md#function-replacerelation-sgpfp-rel-rel)

  - [`ReplaceRelation(S, i, r): SgpFP, RngIntElt, Rel → SgpFP`](modification-Tietze.md#function-replacerelation-sgpfp-rngintelt-rel)

  - [`AddGenerator(S): SgpFP → SgpFP`](modification-Tietze.md#function-addgenerator-sgpfp)

  - [`AddGenerator(S, w): SgpFP, SgpFPElt → SgpFP`](modification-Tietze.md#function-addgenerator-sgpfp-sgpfpelt)

  - [`DeleteGenerator(S, y): SgpFP, SgpFPElt → SgpFP`](modification-Tietze.md#function-deletegenerator-sgpfp-sgpfpelt)

- [String Operations on Words](operation-element.md)

  - [`Eliminate(u, x, v): SgpFPElt, SgpFPElt, SgpFPElt → SgpFPElt`](operation-element.md#function-eliminate-sgpfpelt-sgpfpelt-sgpfpelt)

  - [`Match(u, v, f): SgpFPElt, SgpFPElt, RngIntElt → BoolElt, RngIntElt`](operation-element.md#function-match-sgpfpelt-sgpfpelt-rngintelt)

  - [`Random(S, m, n): SgpFP, RngIntElt, RngIntElt → SgpFPElt`](operation-element.md#function-random-sgpfp-rngintelt-rngintelt)

  - [`RotateWord(u, n): SgpFPElt, RngIntElt → SgpFPElt`](operation-element.md#function-rotateword-sgpfpelt-rngintelt)

  - [`Substitute(u, f, n, v): SgpFPElt, RngIntElt, SgpFPElt, RngIntElt → SgpFPElt`](operation-element.md#function-substitute-sgpfpelt-rngintelt-sgpfpelt-rngintelt)

  - [`Subword(u, f, n): SgpFPElt, RngIntElt, RngIntElt → SgpFPElt`](operation-element.md#function-subword-sgpfpelt-rngintelt-rngintelt)

  - [`ElementToSequence(u): SgpFPElt → [ SgpFPElt ]`](operation-element.md#function-elementtosequence-sgpfpelt)

  - [`Eltseq(u): SgpFPElt → [ SgpFPElt ]`](operation-element.md#function-eltseq-sgpfpelt)
