Introduction#

This Chapter describes the category of straight-line program groups (SLP-groups). A straight-line program is formally a sequence \([s_1, s_2, \ldots, s_n]\) such that each \(s_i\) is one of the following:

(i)

A generator of the SLP-group;

(ii)

A product \(s_j s_k,\quad j<i,k<i\);

(iii)

A power \(s_j^n,\quad j<i\);

(iv)

A conjugate \(s_j^{s_k},\quad j<i,k<i\).

Effectively, a straight-line program can be regarded as a word in the generators which is stored as an expression tree instead of a list of generator-exponent pairs.

The importance of such a category of groups is that storing a word as an expression tree allows much faster evaluation of homomorphisms given as the unique extension of a mapping of the generators into a group of any category, as common subexpressions may be computed once only, and powers or conjugates may be more efficiently computed in the target group than by a linear product of generators and their inverses.

The name in Magma for the category of SLP-groups is GrpSLP.