# Automatic and Hyperbolic Groups

- [Introduction](introduction.md)

- [Automatic Groups](automatic-groups.md)

  - [Construction of an Automatic Group](automatic-groups.md#construction-of-an-automatic-group)

    - [`AutomaticGroup(F: parameters): GrpFP → GrpAtc`](automatic-groups.md#function-automaticgroup-grpfp)

    - [`IsAutomaticGroup(F: parameters): GrpFP → BoolElt, GrpAtc`](automatic-groups.md#function-isautomaticgroup-grpfp)

    - [`Example: Automatic Group`](automatic-groups.md#example-ex-6ecc26)

  - [Modifying Limits](automatic-groups.md#modifying-limits)

    - [`AutomaticGroup(F: parameters): GrpFP → GrpAtc`](automatic-groups.md#function-automaticgroup-grpfp-2)

    - [`IsAutomaticGroup(F: parameters): GrpFP → BoolElt, GrpAtc`](automatic-groups.md#function-isautomaticgroup-grpfp-2)

    - [`SetVerbose("KBMAG", v): MonStgElt, RngIntElt`](automatic-groups.md#function-setverbose-monstgelt-rngintelt)

    - [`Example: AutomaticGroup 3`](automatic-groups.md#example-ex-048dc9)

    - [`Example: AutomaticGroup 4`](automatic-groups.md#example-ex-7b6c80)

  - [Accessing Group Information](automatic-groups.md#accessing-group-information)

    - [`G . i: GrpRWS, RngIntElt → GrpRWSElt`](automatic-groups.md#operation-operation-grprws-rngintelt-grprwselt)

    - [`Generators(G): GrpRWS → [GrpRWSElt]`](automatic-groups.md#function-generators-grprws)

    - [`NumberOfGenerators(G): GrpRWS → RngIntElt`](automatic-groups.md#function-numberofgenerators-grprws)

    - [`Ngens(G): GrpRWS → RngIntElt`](automatic-groups.md#function-ngens-grprws)

    - [`Example: Basic Access`](automatic-groups.md#example-ex-94d627)

    - [`FPGroup(G): GrpAtc → GrpFP, Map`](automatic-groups.md#function-fpgroup-grpatc)

    - [`WordAcceptor(G): GrpAtc → Rec`](automatic-groups.md#function-wordacceptor-grpatc)

    - [`WordAcceptorSize(G): GrpAtc → RngIntElt, RngIntElt`](automatic-groups.md#function-wordacceptorsize-grpatc)

    - [`WordDifferenceAutomaton(G): GrpAtc → Rec`](automatic-groups.md#function-worddifferenceautomaton-grpatc)

    - [`WordDifferenceSize(G): GrpAtc → RngIntElt, RngIntElt`](automatic-groups.md#function-worddifferencesize-grpatc)

    - [`WordDifferences(G): GrpAtc → SeqEnum`](automatic-groups.md#function-worddifferences-grpatc)

    - [`GeneratorOrder(G): GrpAtc → SeqEnum`](automatic-groups.md#function-generatororder-grpatc)

  - [Properties of an Automatic Group](automatic-groups.md#properties-of-an-automatic-group)

    - [`IsFinite(G): GrpRWS → BoolElt, RngIntElt`](automatic-groups.md#function-isfinite-grprws)

    - [`Order(G): GrpRWS → RngIntElt`](automatic-groups.md#function-order-grprws)

    - [`# G: GrpRWS → RngIntElt`](automatic-groups.md#operation-operation-grprws-rngintelt)

    - [`Example: Order`](automatic-groups.md#example-ex-0ae3d4)

    - [`Example: Order 2`](automatic-groups.md#example-ex-12f166)

  - [Constructing Words](automatic-groups.md#constructing-words)

    - [`G ! [ i₁, ..., iₛ ]: GrpAtc, [ RngIntElt ] → GrpAtcElt`](automatic-groups.md#operation-op-grpatc-rngintelt)

    - [`Identity(G): GrpAtc → GrpAtcElt`](automatic-groups.md#function-identity-grpatc)

    - [`Id(G): GrpAtc → GrpAtcElt`](automatic-groups.md#function-id-grpatc)

    - [`G ! 1: GrpAtc, RngIntElt → GrpAtcElt`](automatic-groups.md#operation-op-grpatc-rngintelt-2)

    - [`Parent(w): GrpAtcElt → GrpAtc`](automatic-groups.md#function-parent-grpatcelt)

    - [`Example: Words`](automatic-groups.md#example-ex-bccdb0)

  - [Operations on Elements](automatic-groups.md#operations-on-elements)

    - [`u * v: GrpRWSElt, GrpRWSElt → GrpRWSElt`](automatic-groups.md#operation-op-times-grprwselt-grprwselt)

    - [`u / v: GrpRWSElt, GrpRWSElt → GrpRWSElt`](automatic-groups.md#operation-op-div-grprwselt-grprwselt)

    - [`u ^ n: GrpRWSElt, RngIntElt → GrpRWSElt`](automatic-groups.md#operation-op-pow-grprwselt-rngintelt)

    - [`u ^ v: GrpRWSElt, GrpRWSElt → GrpRWSElt`](automatic-groups.md#operation-op-pow-grprwselt-grprwselt)

    - [`Inverse(w): GrpRWSElt → GrpRWSElt`](automatic-groups.md#function-inverse-grprwselt)

    - [`(u, v): GrpRWSElt, GrpRWSElt → GrpRWSElt`](automatic-groups.md#literal-literal-u-v-grprwselt-grprwselt-grprwselt)

    - [`(u₁, ..., uᵣ): GrpRWSElt, ..., GrpRWSElt → GrpRWSElt`](automatic-groups.md#literal-literal-u1-ur-grprwselt-grprwselt-grprwselt)

    - [`u eq v: GrpRWSElt, GrpRWSElt → BoolElt`](automatic-groups.md#operation-op-eq-grprwselt-grprwselt)

    - [`u ne v: GrpRWSElt, GrpRWSElt → BoolElt`](automatic-groups.md#operation-op-ne-grprwselt-grprwselt)

    - [`IsId(w): GrpRWSElt → BoolElt`](automatic-groups.md#function-isid-grprwselt)

    - [`IsIdentity(w): GrpRWSElt → BoolElt`](automatic-groups.md#function-isidentity-grprwselt)

    - [`# u: GrpRWSElt → RngIntElt`](automatic-groups.md#operation-operation-grprwselt-rngintelt)

    - [`ElementToSequence(u): GrpRWSElt → [ RngIntElt ]`](automatic-groups.md#function-elementtosequence-grprwselt)

    - [`Eltseq(u): GrpRWSElt → [ RngIntElt ]`](automatic-groups.md#function-eltseq-grprwselt)

    - [`Example: Arithmetic`](automatic-groups.md#example-ex-923349)

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

    - [`Random(G, n): GrpAtc, RngIntElt → GrpAtcElt`](automatic-groups.md#function-random-grpatc-rngintelt)

    - [`Random(G): GrpAtc → GrpAtcElt`](automatic-groups.md#function-random-grpatc)

    - [`Representative(G): GrpAtc → GrpAtcElt`](automatic-groups.md#function-representative-grpatc)

    - [`Rep(G): GrpAtc → GrpAtcElt`](automatic-groups.md#function-rep-grpatc)

    - [`Set(G, a, b): GrpAtc, RngIntElt, RngIntElt → SetEnum`](automatic-groups.md#function-set-grpatc-rngintelt-rngintelt)

    - [`Set(G): GrpAtc → SetEnum`](automatic-groups.md#function-set-grpatc)

    - [`Seq(G, a, b): GrpAtc, RngIntElt, RngIntElt → SeqEnum`](automatic-groups.md#function-seq-grpatc-rngintelt-rngintelt)

    - [`Seq(G): GrpAtc → SeqEnum`](automatic-groups.md#function-seq-grpatc)

    - [`Example: Set`](automatic-groups.md#example-ex-dc57c0)

  - [Homomorphisms](automatic-groups.md#homomorphisms)

    - [`hom< A -> G | S >: Struct, Struct → Map`](automatic-groups.md#constructor-constructor-hom-struct-struct-map)

  - [The Growth Function](automatic-groups.md#the-growth-function)

    - [`GrowthFunction(G): GrpAtc → FldFunRatElt`](automatic-groups.md#function-growthfunction-grpatc)

    - [`Example: Growth Function`](automatic-groups.md#example-ex-dfea9f)

- [Hyperbolic Groups](hyperbolic-groups.md)

  - [Testing an Automatic Group for Hyperbolicity](hyperbolic-groups.md#testing-an-automatic-group-for-hyperbolicity)

    - [`IsHyperbolic(G): GrpAtc → BoolElt, Rec`](hyperbolic-groups.md#function-ishyperbolic-grpatc)

    - [`Example: verbose`](hyperbolic-groups.md#example-ex-29ea10)

    - [`IsConjugate(G, x, y): GrpAtc, GrpAtcElt, GrpAtcElt → BoolElt, GrpAtcElt`](hyperbolic-groups.md#function-isconjugate-grpatc-grpatcelt-grpatcelt)

  - [Testing a Finitely Presented Group for Hyperbolicity](hyperbolic-groups.md#testing-a-finitely-presented-group-for-hyperbolicity)

    - [`IsHyperbolic(F, red, green): GrpFP, SeqEnum, SeqEnum → BoolElt, BoolElt, SeqEnum, SeqEnum`](hyperbolic-groups.md#function-ishyperbolic-grpfp-seqenum-seqenum)

    - [`Example: rsym1`](hyperbolic-groups.md#example-ex-d7a495)

    - [`Example: rsym6`](hyperbolic-groups.md#example-ex-b541e8)

  - [Common Error Messages, and How to Avoid Them](hyperbolic-groups.md#common-error-messages-and-how-to-avoid-them)

    - [`Example: rsym2`](hyperbolic-groups.md#example-ex-cd92b6)

    - [`Example: Rsym 3`](hyperbolic-groups.md#example-ex-976118)

  - [The Relators red](hyperbolic-groups.md#the-relators-red)

    - [`Example: Rsym 4`](hyperbolic-groups.md#example-ex-5a8018)

    - [`RedRelatorsForFreeProduct(groupList, freeFacs): List, RngIntElt → GrpFP, SeqEnum, SeqEnum, Map, SeqEnum`](hyperbolic-groups.md#function-redrelatorsforfreeproduct-list-rngintelt)

    - [`Example: Rsym Red1`](hyperbolic-groups.md#example-ex-fac47e)

    - [`Example: rsym5`](hyperbolic-groups.md#example-ex-2ba258)

    - [`Example: rsym6`](hyperbolic-groups.md#example-ex-7ee847)

  - [The Parameter epsilon](hyperbolic-groups.md#the-parameter-epsilon)

    - [`Example: Rsym Eps`](hyperbolic-groups.md#example-ex-9972b6)

  - [The Dehn Algorithm](hyperbolic-groups.md#the-dehn-algorithm)

    - [`IsIdentity(w, D1): GrpFPElt, Rec → BoolElt, GrpFPElt, SeqEnum, SeqEnum`](hyperbolic-groups.md#function-isidentity-grpfpelt-rec)

    - [`Example: Rsym Dehn`](hyperbolic-groups.md#example-ex-1c88ea)
