GAP (DeepThought) - Chapter 1: The Deep Thought algorithm

Goto Chapter: Top 1 2 Bib Ind
[Top of Book] [Contents] [Previous Chapter] [Next Chapter]

[MathJax off]

1 The Deep Thought algorithm
1.1 Category DTObj

### 1 The Deep Thought algorithm

Polycyclic and, especially, finitely generated nilpotent groups exhibit a rich structure allowing a special approach towards multiplication using polynomials. The so-called Deep Thought algorithm introduced in [LGS98] computes these polynomials in practice for a suitable presentation of a finitely generated nilpotent group. Such a presentation is of the following form

\[ \langle a_1, \ldots, a_n \mid a_i^{s_i} = a_{i+1}^{c_{i, i, i+1}} \cdots a_n^{c_{i, i, n}}, 1 \leq i \leq n, a_j a_i = a_i a_j a_{j+1}^{c_{i, j, j+1}} \cdots a_n^{c_{i, j, n}}, 1 \leq i < j \leq n \rangle \]

with \(s_i \in \mathbb{N} \cup \{ \infty \}\) and \(c_{i, j, k} \in \mathbb{Z}\). If \(s_i = \infty\), then the power relation \(a_i^{s_i}\) is skipped.

Let \(G\) denote the group presented by the above presentation. Then every element in \(G\) can be written uniquely in a so-called normal form. That is, if \(G_i := \langle a_i, \ldots, a_n \rangle\) and \(r_i := | G_i : G_{i+1}|\), \(1 \leq i \leq n\), are the relative orders, then for certain \(e_i \in \mathbb{Z}\) each element can be written as

\[ a_1^{e_1} \cdots a_n^{e_n} \]

with \(0 \leq e_i < r_i\) if \(r_i < \infty\). A presentation is called confluent if and only if \(s_i = r_i\) for all \(1 \leq i \leq n\). If a presentation is not confluent, not all functions provided in this package are applicable, see function `DTP_DTapplicability`. For more theoretical background see for example the documentation of the GAP package Polycyclic.

The Deep Thought algorithm computes rational polynomials \(f_1, \ldots, f_n\) in \(2n\) indeterminates such that if \( x := a_1^{x_1} \cdots a_n^{x_n} \) and \(y := a_1^{y_1} \cdots a_n^{y_n} \) are two elements (in normal form or not with \(x_1, \ldots, x_n, y_1, \ldots, y_n \in \mathbb{Z}\)), then their product \(xy\) is given by

\[a_1^{f_1(x_1, \ldots, x_n, y_1, \ldots, y_n)} \cdots a_n^{f_n(x_1, \ldots, x_n, y_1, \ldots, y_n)}.\]

If the collector is confluent, also the normal form of the product can be computed. Otherwise this is not possible. Moreover, there exists a second version of the Deep Thought algorithms which computes \(n^2\) polynomials \(f_{rs}\), \(1 \leq r, s \leq n\), suitable for multiplications of the form

\[(a_1^{x_1} \cdots a_n^{x_n}) \cdot a_s^{y_s} = a_1^{f_{1s}(x_1, \ldots, x_n, y_s)} \cdots a_n^{f_{ns}(x_1, \ldots, x_n, y_s)} \]

for \(1 \leq s \leq n\). Each general multiplication can be expressed using these special multiplications. Depending on the presentation, polynomials of one version may be more efficient for computations than the polynomials of the other version. For a suggestion on which polynomials to use for a given presentation, see `DTP_DTapplicability`. In the following, Deep Thought type \(f_r\) refers to the Deep Thought algorithm which uses \(n\) polynomials and type \(f_{rs}\) refers to the Deep Thought algorithm using \(n^2\) polynomials.

In order to work with the Deep Thought functions, the group presentation is expected to be given as a collector `coll`, as defined in the GAP package Polycyclic. Moreover, the Polycyclic package introduces the structure of exponent vectors `expvec`, which will be used also in this package to represent group elements. In the following text, a group element \(a_1^{x_1} \cdots a_n^{x_n}\) is identified with its exponent vector in form of the list `[x_1, ..., x_n]`. For example, if `expvec1, expvec2` are exponent vectors of elements in the same group, then `expvec1 * expvec2` describes the multiplication of the corresponding group elements, and so on. Note that generally exponent vectors are not assumed to represent normal forms.

#### 1.1 Category DTObj

This package uses the category `DTObj`. A `DTObj` is a `IsFromTheLeftCollectorRep` with certain further list entries to store the Deep Thought polynomials of a collector together with some additional information. That is, the functions `DTP_DTpols_r` and `DTP_DTpols_rs` return a `DTObj` which has entries as `IsFromTheLeftCollectorRep` and additionally:

- `DTObj![PC_DTPPolynomials]`: Deep Thought polynomials in form of (nested) lists

- `DTObj![PC_DTPOrders]`: list containing orders of group generators if the collector is confluent

- `DTObj![PC_DTPConfluent]`: boolean value indicating whether the collector is confluent or not

[Top of Book] [Contents] [Previous Chapter] [Next Chapter]
Goto Chapter: Top 1 2 Bib Ind

generated by GAPDoc2HTML