Associative Words
Categories of Associative Words
<#Include Label="[1]{wordass}"> <#Include Label="IsAssocWord">

Free Groups, Monoids and Semigroups

Usually a family of associative words will be generated by constructing the free object generated by them. See , for details.

<#Include Label="FreeGroup"> <#Include Label="IsFreeGroup"> <#Include Label="AssignGeneratorVariables">

Comparison of Associative Words
<#Include Label="[2]{wordass}"> <#Include Label="IsShortLexLessThanOrEqual"> <#Include Label="IsBasicWreathLessThanOrEqual">

Operations for Associative Words
<#Include Label="[3]{wordass}">

<#Include Label="Length:wordass"> <#Include Label="ExponentSumWord"> <#Include Label="Subword"> <#Include Label="PositionWord"> <#Include Label="SubstitutedWord"> <#Include Label="EliminatedWord">

Operations for Associative Words by their Syllables
<#Include Label="[5]{wordass}"> <#Include Label="NumberSyllables"> <#Include Label="ExponentSyllable"> <#Include Label="GeneratorSyllable"> <#Include Label="SubSyllables">

Representations for Associative Words

&GAP; provides two different internal kinds of representations of associative words. The first one are syllable representations in which words are stored in syllable (i.e. generator,exponent) form. (Older versions of &GAP; only used this representation.) The second kind are letter representations in which each letter in a word is represented by its index number. Negative numbers are used for inverses. Unless the syllable representation is specified explicitly when creating the free group/monoid or semigroup, a letter representation is used by default.

Depending on the task in mind, either of these two representations will perform better in time or in memory use and algorithms that are syllable or letter based (for example and ) perform substantially better in the corresponding representation. For example when creating pc groups (see ), it is advantageous to use a syllable representation while calculations in free groups usually benefit from using a letter representation.

<#Include Label="IsLetterAssocWordRep"> <#Include Label="IsLetterWordsFamily"> <#Include Label="IsBLetterAssocWordRep"> <#Include Label="IsBLetterWordsFamily"> <#Include Label="IsSyllableAssocWordRep"> <#Include Label="IsSyllableWordsFamily"> <#Include Label="Is8BitsFamily"> <#Include Label="LetterRepAssocWord"> <#Include Label="AssocWordByLetterRep">

The External Representation for Associative Words
<#Include Label="[6]{wordass}">

Straight Line Programs
<#Include Label="[1]{straight}"> <#Include Label="IsStraightLineProgram"> <#Include Label="StraightLineProgram"> <#Include Label="LinesOfStraightLineProgram"> <#Include Label="NrInputsOfStraightLineProgram"> <#Include Label="ResultOfStraightLineProgram"> <#Include Label="StringOfResultOfStraightLineProgram"> <#Include Label="CompositionOfStraightLinePrograms"> <#Include Label="IntegratedStraightLineProgram"> <#Include Label="RestrictOutputsOfSLP"> <#Include Label="IntermediateResultOfSLP"> <#Include Label="IntermediateResultOfSLPWithoutOverwrite"> <#Include Label="IntermediateResultsOfSLPWithoutOverwrite"> <#Include Label="ProductOfStraightLinePrograms"> <#Include Label="SlotUsagePattern">

Straight Line Program Elements
<#Include Label="[2]{straight}"> <#Include Label="IsStraightLineProgElm"> <#Include Label="StraightLineProgElm"> <#Include Label="StraightLineProgGens"> <#Include Label="EvalStraightLineProgElm"> <#Include Label="StretchImportantSLPElement">