# Groups of Straight-Line Programs

- [Introduction](introduction.md)

- [Construction of an SLP-Group and its Elements](creation.md)

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

    - [`SLPGroup(n): RngIntElt → GrpSLP`](creation.md#function-slpgroup-rngintelt)

    - [`Example: SLP Group`](creation.md#example-ex-059102)

  - [Construction of an Element](creation.md#construction-of-an-element)

    - [`Identity(G): GrpSLP → GrpSLPElt`](creation.md#function-identity-grpslp)

    - [`Id(G): GrpSLP → GrpSLPElt`](creation.md#function-id-grpslp)

    - [`G ! 1: GrpSLP, RngIntElt → GrpSLPElt`](creation.md#operation-op-grpslp-rngintelt)

- [Arithmetic with Elements](operation.md)

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

  - [`u ^ m: GrpSLPElt, RngIntElt → GrpSLPElt`](operation.md#operation-op-pow-grpslpelt-rngintelt)

  - [`u ^ v: GrpSLPElt, GrpSLPElt → GrpSLPElt`](operation.md#operation-op-pow-grpslpelt-grpslpelt)

  - [`# u: GrpSLPElt → RngIntElt`](operation.md#operation-operation-grpslpelt-rngintelt)

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

    - [`G . i: GrpSLP, RngIntElt → GrpSLPElt`](operation.md#operation-operation-grpslp-rngintelt-grpslpelt)

    - [`Generators(G): GrpSLP → { GrpSLPElt}`](operation.md#function-generators-grpslp)

    - [`NumberOfGenerators(G): GrpSLP → RngIntElt`](operation.md#function-numberofgenerators-grpslp)

    - [`Ngens(G): GrpSLP → RngIntElt`](operation.md#function-ngens-grpslp)

    - [`Parent(u): GrpSLPElt → GrpSLP`](operation.md#function-parent-grpslpelt)

- [Addition of Extra Generators](extra-generators.md)

  - [`AddRedundantGenerators(G, Q): GrpSLP, [ GrpSLPElt ] → GrpSLP`](extra-generators.md#function-addredundantgenerators-grpslp-grpslpelt)

- [Creating Homomorphisms](homomorphisms.md)

  - [`hom< G -> H | L: parameters>: GrpSLP, Grp → Map`](homomorphisms.md#constructor-constructor-hom-grpslp-grp-map)

  - [`Evaluate(u, Q): GrpSLPElt, [ GrpElt ] → GrpElt`](homomorphisms.md#function-evaluate-grpslpelt-grpelt)

  - [`Evaluate(u, G): GrpSLPElt, Grp → GrpElt`](homomorphisms.md#function-evaluate-grpslpelt-grp)

  - [`Evaluate(v, Q): [ GrpSLPElt ], [ GrpElt ] → GrpElt`](homomorphisms.md#function-evaluate-grpslpelt-grpelt-2)

  - [`Evaluate(v, G): [ GrpSLPElt ], Grp → GrpElt`](homomorphisms.md#function-evaluate-grpslpelt-grp-2)

  - [`Example: Constructing Homomorphisms`](homomorphisms.md#example-ex-efbc6c)

- [Operations on Elements](operation-element.md)

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

    - [`u eq v: GrpSLPElt, GrpSLPElt → BoolElt`](operation-element.md#operation-op-eq-grpslpelt-grpslpelt)

    - [`u ne v: GrpSLPElt, GrpSLPElt → BoolElt`](operation-element.md#operation-op-ne-grpslpelt-grpslpelt)

- [Set-Theoretic Operations](set.md)

  - [Membership and Equality](set.md#membership-and-equality)

    - [`g in G: GrpSLPElt, GrpSLP → BoolElt`](set.md#operation-op-in-grpslpelt-grpslp)

    - [`g notin G: GrpSLPElt, GrpSLP → BoolElt`](set.md#operation-op-notin-grpslpelt-grpslp)

    - [`S subset G: { GrpSLPElt}, GrpSLP → BoolElt`](set.md#operation-op-subset-grpslpelt-grpslp)

    - [`S notsubset G: { GrpSLPElt}, GrpSLP → BoolElt`](set.md#operation-operation-notsubset-grpslpelt-grpslp-boolelt)

  - [Set Operations](set.md#set-operations)

    - [`RandomProcess(G): GrpSLP → Process`](set.md#function-randomprocess-grpslp)

    - [`Random(P): Process → GrpSLPElt`](set.md#function-random-process)

    - [`Rep(G): GrpSLP → GrpSLPElt`](set.md#function-rep-grpslp)

    - [`Example: Homomorphism Speed`](set.md#example-ex-827c15)

  - [Coercions Between Related Groups](set.md#coercions-between-related-groups)

    - [`G ! g: GrpSLP, GrpSLPElt → GrpSLPElt`](set.md#operation-op-grpslp-grpslpelt)
