String Operations on Words

Eliminate(u, x, v): SgpFPElt, SgpFPElt, SgpFPElt -> SgpFPElt

Given words \(u\) and \(v\), and a generator \(x\), belonging to a semigroup \(S\), return the word obtained from \(u\) by replacing each occurrence of \(x\) by \(v\).

Match(u, v, f): SgpFPElt, SgpFPElt, RngIntElt -> BoolElt, RngIntElt

Suppose \(u\) and \(v\) are words belonging to the same semigroup \(S\), and that \(f\) is an integer such that \(1 \leq f \leq \# u\). If \(v\) is a subword of \(u\), the function returns true, as well as the least integer \(l\) such that:

(a)

\(l\geq f\); and,

(b)

\(v\) appears as a subword of \(u\), starting at the \(l\)-th letter of \(u\).

If no such \(l\) is found, Match returns only false.

Random(S, m, n): SgpFP, RngIntElt, RngIntElt -> SgpFPElt

A random word of length \(l\) in the generators of the semigroup \(S\), where \(m \leq l \leq n\).

RotateWord(u, n): SgpFPElt, RngIntElt -> SgpFPElt

The word obtained by cyclically permuting the word \(u\) by \(n\) places. If \(n\) is positive, the rotation is from left to right, while if \(n\) is negative the rotation is from right to left. In the case where \(n\) is zero, the function returns \(u\).

Substitute(u, f, n, v): SgpFPElt, RngIntElt, SgpFPElt, RngIntElt -> SgpFPElt

Given words \(u\) and \(v\) belonging to a semigroup \(S\), and non-negative integers \(f\) and \(n\), this function replaces the substring of \(u\) of length \(n\), starting at position \(f\), by the word \(v\). Thus, if \(u = x_{i_1}\cdots x_{i_f}\cdots x_{i_{f+n-1}}\cdots x_{i_m}\) then the substring \(x_{i_f}\cdots x_{i_{f+n-1}}\) is replaced by \(v\). If \(u\) and \(v\) belong to a monoid \(M\) and the function is invoked with \(v =\) Id(M), then the substring \(x_{i_f}\cdots x_{i_{f+n-1}}\) of \(u\) is deleted.

Subword(u, f, n): SgpFPElt, RngIntElt, RngIntElt -> SgpFPElt

The subword of the word \(u\) comprising the \(n\) consecutive letters commencing at the \(f\)-th letter of \(u\).

ElementToSequence(u): SgpFPElt -> [ SgpFPElt ]
Eltseq(u): SgpFPElt -> [ SgpFPElt ]

The sequence obtained by decomposing \(u\) into the indices of its constituent generators. Thus, if \(u = x_{i_1}\ldots x_{i_m}\), then the sequence constructed by ElementToSequence is \([i_1,i_2, \ldots, i_m]\).