Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package gap-deepthought for openSUSE:Factory
checked in at 2026-08-03 17:15:10
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gap-deepthought (Old)
and /work/SRC/openSUSE:Factory/.gap-deepthought.new.16738 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gap-deepthought"
Mon Aug 3 17:15:10 2026 rev:5 rq:1369107 version:1.0.10
Changes:
--------
--- /work/SRC/openSUSE:Factory/gap-deepthought/gap-deepthought.changes
2025-06-20 16:54:59.110105940 +0200
+++
/work/SRC/openSUSE:Factory/.gap-deepthought.new.16738/gap-deepthought.changes
2026-08-03 17:16:34.053198027 +0200
@@ -1,0 +2,6 @@
+Sun Aug 2 18:01:01 UTC 2026 - Jan Engelhardt <[email protected]>
+
+- Update to release 1.0.10
+ * Drop the dependency on the GAPDoc package
+
+-------------------------------------------------------------------
Old:
----
DeepThought-1.0.9.tar.gz
New:
----
DeepThought-1.0.10.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ gap-deepthought.spec ++++++
--- /var/tmp/diff_new_pack.pisYkE/_old 2026-08-03 17:16:35.509248585 +0200
+++ /var/tmp/diff_new_pack.pisYkE/_new 2026-08-03 17:16:35.509248585 +0200
@@ -1,7 +1,7 @@
#
# spec file for package gap-deepthought
#
-# Copyright (c) 2025 SUSE LLC
+# Copyright (c) 2026 SUSE LLC and contributors
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -12,12 +12,12 @@
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
Name: gap-deepthought
-Version: 1.0.9
+Version: 1.0.10
Release: 0
Summary: GAP: Deep Thought for computations in nilpotent groups
License: GPL-2.0-or-later
@@ -29,7 +29,6 @@
BuildRequires: gap-devel
BuildRequires: gap-rpm-devel
Requires: gap-core >= 4.12
-Requires: gap-gapdoc >= 1.5
Requires: gap-polycyclic >= 2.11
%description
++++++ DeepThought-1.0.9.tar.gz -> DeepThought-1.0.10.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/DeepThought-1.0.9/CHANGES.md
new/DeepThought-1.0.10/CHANGES.md
--- old/DeepThought-1.0.9/CHANGES.md 1970-01-01 01:00:00.000000000 +0100
+++ new/DeepThought-1.0.10/CHANGES.md 2026-08-01 02:00:00.000000000 +0200
@@ -0,0 +1,64 @@
+This file describes changes in the DeepThought package.
+
+## 1.0.10 (2026-08-01)
+
+ - Drop the dependency on the GAPDoc package
+ - Do not require the SmallGrp package for using DeepThought; it is now only
+ needed for running the test suite
+ - Update the CI setup
+
+## 1.0.9 (2025-06-20)
+
+ - Replace the obsolete `compiled.h` header by `gap_all.h` in the kernel
+ extension
+ - Fix the code coverage setup
+
+## 1.0.8 (2025-01-03)
+
+ - Modernize the kernel extension by using `GVAR_FUNC` and designated
+ initializers for `StructInitInfo`
+ - Fix the return value of the package `AvailabilityTest`
+ - Test against GAP 4.14
+
+## 1.0.7 (2024-08-27)
+
+ - Use `LoadKernelExtension` and `IsKernelExtensionAvailable` to load the
+ kernel extension, and raise the minimum GAP version to 4.12
+ - Update the build system and maintainer contact details
+ - Test against GAP 4.13 and with a minimal set of packages loaded
+
+## 1.0.6 (2022-10-06)
+
+ - Adjust the kernel extension `#include`s for recent GAP versions
+ - Link to the MathJax version of the manual by default
+ - Update the build system and the code coverage setup
+
+## 1.0.5 (2021-04-05)
+
+ - Add GPL-2.0-or-later license metadata
+
+## 1.0.4 (2021-03-03)
+
+ - Rename the package from `DeepThoughtPackage` to `DeepThought`
+
+## 1.0.3 (2021-03-03)
+
+ - Switch to a new build system
+ - Add continuous integration via GitHub Actions
+ - Update package metadata, authors, and repository information
+
+## 1.0.2 (2018-09-13)
+
+ - Update the package `AvailabilityTest` function
+ - Make the test suite runnable from any location
+
+## 1.0.1 (2018-08-24)
+
+ - Fix restoring the kernel extension after loading a saved workspace
+ - Restore compatibility with GAP 4.8 and older
+ - Improve an error message and fix several typos
+ - Update the build system
+
+## 1.0.0 (2017-12-13)
+
+ - Initial release
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/DeepThought-1.0.9/PackageInfo.g
new/DeepThought-1.0.10/PackageInfo.g
--- old/DeepThought-1.0.9/PackageInfo.g 2025-06-20 13:10:25.000000000 +0200
+++ new/DeepThought-1.0.10/PackageInfo.g 2026-08-01 02:00:00.000000000
+0200
@@ -10,8 +10,8 @@
PackageName := "DeepThought",
Subtitle := "This package provides functions for computations in finitely
generated nilpotent groups based on the Deep Thought algorithm.",
-Version := "1.0.9",
-Date := "20/06/2025", # dd/mm/yyyy format
+Version := "1.0.10",
+Date := "01/08/2026", # dd/mm/yyyy format
License := "GPL-2.0-or-later",
Persons := [
@@ -29,6 +29,7 @@
IsMaintainer := true,
Email := "[email protected]",
WWWHome := "https://www.quendi.de/math",
+ GitHubUsername := "fingolfin",
PostalAddress := Concatenation(
"Fachbereich Mathematik\n",
"RPTU Kaiserslautern-Landau\n",
@@ -78,10 +79,10 @@
Dependencies := rec(
GAP := ">= 4.12",
NeededOtherPackages := [
- [ "GAPDoc", ">= 1.5" ],
[ "polycyclic", ">= 2.11" ],
],
SuggestedOtherPackages := [ ],
+ TestPackages := [ [ "SmallGrp", ">= 1.0" ] ],
ExternalConditions := [ ],
),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/DeepThought-1.0.9/README.md
new/DeepThought-1.0.10/README.md
--- old/DeepThought-1.0.9/README.md 2025-06-20 13:10:25.000000000 +0200
+++ new/DeepThought-1.0.10/README.md 2026-08-01 02:00:00.000000000 +0200
@@ -1,4 +1,4 @@
-[](https://github.com/gap-packages/DeepThought/actions?query=workflow%3ACI+branch%3Amaster)
+[](https://github.com/gap-packages/DeepThought/actions/workflows/CI.yml)
[](https://codecov.io/gh/gap-packages/DeepThought)
# README - DeepThought
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/DeepThought-1.0.9/doc/DeepThought.xml
new/DeepThought-1.0.10/doc/DeepThought.xml
--- old/DeepThought-1.0.9/doc/DeepThought.xml 2025-06-20 13:10:36.000000000
+0200
+++ new/DeepThought-1.0.10/doc/DeepThought.xml 1970-01-01 01:00:00.000000000
+0100
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!-- This is an automatically generated file. -->
-<!DOCTYPE Book SYSTEM "gapdoc.dtd"
-[
- [<#Include SYSTEM "_entities.xml">
-]
->
-<Book Name="DeepThought">
-<#Include SYSTEM "title.xml">
-<TableOfContents/>
-<Body>
-<#Include SYSTEM "_AutoDocMainFile.xml">
-</Body>
-<Bibliography Databases="dtbib.xml"/>
-<TheIndex/>
-</Book>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/DeepThought-1.0.9/doc/_Chapter_The_Deep_Thought_algorithm.xml
new/DeepThought-1.0.10/doc/_Chapter_The_Deep_Thought_algorithm.xml
--- old/DeepThought-1.0.9/doc/_Chapter_The_Deep_Thought_algorithm.xml
2025-06-20 13:10:36.000000000 +0200
+++ new/DeepThought-1.0.10/doc/_Chapter_The_Deep_Thought_algorithm.xml
2026-08-01 02:00:00.000000000 +0200
@@ -34,6 +34,5 @@
</List>
</Section>
-
</Chapter>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/DeepThought-1.0.9/doc/_Chapter_Using_Deep_Thought_functions.xml
new/DeepThought-1.0.10/doc/_Chapter_Using_Deep_Thought_functions.xml
--- old/DeepThought-1.0.9/doc/_Chapter_Using_Deep_Thought_functions.xml
2025-06-20 13:10:36.000000000 +0200
+++ new/DeepThought-1.0.10/doc/_Chapter_Using_Deep_Thought_functions.xml
2026-08-01 02:00:00.000000000 +0200
@@ -17,7 +17,6 @@
</Description>
</ManSection>
-
<ManSection>
<Func Arg="coll, [, rs_flag]" Name="DTP_DTObjFromCollector" />
<Returns>a DTObj
@@ -27,7 +26,6 @@
</Description>
</ManSection>
-
<Example><![CDATA[
gap> G := UnitriangularPcpGroup(10, 0);;
gap> coll := Collector(G);;
@@ -44,10 +42,8 @@
<DTObj>
]]></Example>
-
</Section>
-
<Section
Label="Chapter_Using_Deep_Thought_functions_Section_Computations_with_Deep_Thought_polynomials">
<Heading>Computations with Deep Thought polynomials</Heading>
@@ -60,7 +56,6 @@
</Description>
</ManSection>
-
<ManSection>
<Func Arg="expvec, DTObj" Name="DTP_Inverse" />
<Returns>an exponent vector
@@ -70,7 +65,6 @@
</Description>
</ManSection>
-
<ManSection>
<Func Arg="expvec, coll" Name="DTP_IsInNormalForm" />
<Returns>boolean or positive integer
@@ -80,7 +74,6 @@
</Description>
</ManSection>
-
<ManSection>
<Func Arg="expvec1, expvec2, DTObj" Name="DTP_Multiply" />
<Returns>an exponent vector
@@ -91,7 +84,6 @@
</Description>
</ManSection>
-
<ManSection>
<Func Arg="expvec1, expvec2, DTObj" Name="DTP_Multiply_r" />
<Returns>an exponent vector
@@ -101,7 +93,6 @@
</Description>
</ManSection>
-
<ManSection>
<Func Arg="expvec1, expvec2, DTObj" Name="DTP_Multiply_rs" />
<Returns>an exponent vector
@@ -111,7 +102,6 @@
</Description>
</ManSection>
-
<ManSection>
<Func Arg="expvec, DTObj" Name="DTP_NormalForm" />
<Returns>an exponent vector
@@ -121,7 +111,6 @@
</Description>
</ManSection>
-
<ManSection>
<Func Arg="expvec, DTObj" Name="DTP_Order" />
<Returns>positive integer or infinity
@@ -131,7 +120,6 @@
</Description>
</ManSection>
-
<ManSection>
<Func Arg="expvec1, expvec2, DTObj" Name="DTP_SolveEquation" />
<Returns>an exponent vector
@@ -142,7 +130,6 @@
</Description>
</ManSection>
-
<Example><![CDATA[
gap> G := PcGroupToPcpGroup(SmallGroup(23^5, 2));
Pcp-group with orders [ 23, 23, 23, 23, 23 ]
@@ -168,10 +155,8 @@
[ 12, 21, 4, 16, 20 ]
]]></Example>
-
</Section>
-
<Section
Label="Chapter_Using_Deep_Thought_functions_Section_Computations_with_pcp-elements">
<Heading>Computations with pcp-elements</Heading>
@@ -186,7 +171,6 @@
</Description>
</ManSection>
-
<ManSection>
<Func Arg="pcp-element" Name="DTP_PCP_Inverse" />
<Returns>pcp-element
@@ -196,7 +180,6 @@
</Description>
</ManSection>
-
<ManSection>
<Func Arg="pcp-element" Name="DTP_PCP_NormalForm" />
<Returns>pcp-element
@@ -206,7 +189,6 @@
</Description>
</ManSection>
-
<ManSection>
<Func Arg="pcp-element" Name="DTP_PCP_Order" />
<Returns>positive integer or infinity
@@ -216,7 +198,6 @@
</Description>
</ManSection>
-
<ManSection>
<Func Arg="pcp-element1, pcp-element2" Name="DTP_PCP_SolveEquation" />
<Returns>pcp-element
@@ -227,7 +208,6 @@
</Description>
</ManSection>
-
<Example><![CDATA[
gap> G := HeisenbergPcpGroup(7);;
gap> coll := Collector(G);;
@@ -244,10 +224,8 @@
g1*g2*g3^4*g4^-2*g5^2*g6*g8^-5*g9^-3*g10^-3*g11^3*g12^-1*g15^-33
]]></Example>
-
</Section>
-
<Section
Label="Chapter_Using_Deep_Thought_functions_Section_Accessing_Deep_Thought_polynomials">
<Heading>Accessing Deep Thought polynomials</Heading>
@@ -261,7 +239,6 @@
</Description>
</ManSection>
-
<ManSection>
<Func Arg="DTObj" Name="DTP_pols2GAPpols" />
<Returns>list
@@ -271,7 +248,6 @@
</Description>
</ManSection>
-
<Example><![CDATA[
gap> coll := FromTheLeftCollector(4);;
gap> SetConjugate(coll, 2, 1, [2, 1, 3, 2]);
@@ -315,9 +291,7 @@
Rationals[x1,x2,x3,x4,y1,y2,y3,y4] ]
]]></Example>
-
</Section>
-
</Chapter>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/DeepThought-1.0.9/doc/_entities.xml
new/DeepThought-1.0.10/doc/_entities.xml
--- old/DeepThought-1.0.9/doc/_entities.xml 2025-06-20 13:10:36.000000000
+0200
+++ new/DeepThought-1.0.10/doc/_entities.xml 2026-08-01 02:00:00.000000000
+0200
@@ -1,2 +1,5 @@
-<!ENTITY Polycyclic '<Package>Polycyclic</Package>'>
<!ENTITY DeepThought '<Package>DeepThought</Package>'>
+<!ENTITY Polycyclic '<Package>Polycyclic</Package>'>
+<!ENTITY RELEASEDATE '1 August 2026'>
+<!ENTITY RELEASEYEAR '2026'>
+<!ENTITY VERSION '1.0.10'>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/DeepThought-1.0.9/doc/_main.tex
new/DeepThought-1.0.10/doc/_main.tex
--- old/DeepThought-1.0.9/doc/_main.tex 1970-01-01 01:00:00.000000000 +0100
+++ new/DeepThought-1.0.10/doc/_main.tex 2026-08-01 02:00:00.000000000
+0200
@@ -0,0 +1,629 @@
+% generated by GAPDoc2LaTeX from XML source (Frank Luebeck)
+\documentclass[a4paper,11pt]{report}
+
+\usepackage[top=37mm,bottom=37mm,left=27mm,right=27mm]{geometry}
+\sloppy
+\pagestyle{myheadings}
+\usepackage{amssymb}
+\usepackage[utf8]{inputenc}
+\usepackage{makeidx}
+\makeindex
+\usepackage{color}
+\definecolor{FireBrick}{rgb}{0.5812,0.0074,0.0083}
+\definecolor{RoyalBlue}{rgb}{0.0236,0.0894,0.6179}
+\definecolor{RoyalGreen}{rgb}{0.0236,0.6179,0.0894}
+\definecolor{RoyalRed}{rgb}{0.6179,0.0236,0.0894}
+\definecolor{LightBlue}{rgb}{0.8544,0.9511,1.0000}
+\definecolor{Black}{rgb}{0.0,0.0,0.0}
+
+\definecolor{linkColor}{rgb}{0.0,0.0,0.554}
+\definecolor{citeColor}{rgb}{0.0,0.0,0.554}
+\definecolor{fileColor}{rgb}{0.0,0.0,0.554}
+\definecolor{urlColor}{rgb}{0.0,0.0,0.554}
+\definecolor{promptColor}{rgb}{0.0,0.0,0.589}
+\definecolor{brkpromptColor}{rgb}{0.589,0.0,0.0}
+\definecolor{gapinputColor}{rgb}{0.589,0.0,0.0}
+\definecolor{gapoutputColor}{rgb}{0.0,0.0,0.0}
+
+%% for a long time these were red and blue by default,
+%% now black, but keep variables to overwrite
+\definecolor{FuncColor}{rgb}{0.0,0.0,0.0}
+%% strange name because of pdflatex bug:
+\definecolor{Chapter }{rgb}{0.0,0.0,0.0}
+\definecolor{DarkOlive}{rgb}{0.1047,0.2412,0.0064}
+
+
+\usepackage{fancyvrb}
+
+\usepackage{mathptmx,helvet}
+\usepackage[T1]{fontenc}
+\usepackage{textcomp}
+
+
+\usepackage[
+ pdftex=true,
+ bookmarks=true,
+ a4paper=true,
+ pdftitle={Written with GAPDoc},
+ pdfcreator={LaTeX with hyperref package / GAPDoc},
+ colorlinks=true,
+ backref=page,
+ breaklinks=true,
+ linkcolor=linkColor,
+ citecolor=citeColor,
+ filecolor=fileColor,
+ urlcolor=urlColor,
+ pdfpagemode={UseNone},
+ ]{hyperref}
+
+\newcommand{\maintitlesize}{\fontsize{50}{55}\selectfont}
+
+% write page numbers to a .pnr log file for online help
+\newwrite\pagenrlog
+\immediate\openout\pagenrlog =\jobname.pnr
+\immediate\write\pagenrlog{PAGENRS := [}
+\newcommand{\logpage}[1]{\protect\write\pagenrlog{#1, \thepage,}}
+%% were never documented, give conflicts with some additional packages
+
+\newcommand{\GAP}{\textsf{GAP}}
+
+%% nicer description environments, allows long labels
+\usepackage{enumitem}
+\setdescription{style=nextline}
+
+%% depth of toc
+\setcounter{tocdepth}{1}
+
+
+
+
+
+%% command for ColorPrompt style examples
+\newcommand{\gapprompt}[1]{\color{promptColor}{\bfseries #1}}
+\newcommand{\gapbrkprompt}[1]{\color{brkpromptColor}{\bfseries #1}}
+\newcommand{\gapinput}[1]{\color{gapinputColor}{#1}}
+
+
+\begin{document}
+
+\logpage{[ 0, 0, 0 ]}
+\begin{titlepage}
+\mbox{}\vfill
+
+\begin{center}{\maintitlesize \textbf{ DeepThought \\
+\mbox{}}}\\
+\vfill
+
+\hypersetup{pdftitle={ DeepThought }}
+\markright{\scriptsize \mbox{}\hfill DeepThought \hfill\mbox{}}
+{\Huge \textbf{ This package provides functions for computations in finitely
generated
+nilpotent groups based on the Deep Thought algorithm. \\
+\mbox{}}}\\
+\vfill
+
+{\Huge 1.0.10 \mbox{}}\\[1cm]
+{ 1 August 2026 \mbox{}}\\[1cm]
+\mbox{}\\[2cm]
+{\Large \textbf{\strut Nina Wagner \strut\mbox{}}}\\
+\hypersetup{pdfauthor={ Nina Wagner }}
+\end{center}\vfill
+
+\mbox{}\\
+{\mbox{}\\
+\small \noindent \textbf{ Nina Wagner } Email:
\href{mailto://[email protected]}
{\texttt{github@n\texttt{\symbol{45}}i\texttt{\symbol{45}}n\texttt{\symbol{45}}a.de}}}\\
+\end{titlepage}
+
+\newpage\setcounter{page}{2}
+\newpage
+
+\def\contentsname{Contents\logpage{[ 0, 0, 1 ]}}
+
+\tableofcontents
+\newpage
+
+
+\chapter{\textcolor{Chapter }{The Deep Thought
algorithm}}\label{Chapter_The_Deep_Thought_algorithm}
+\logpage{[ 1, 0, 0 ]}
+\hyperdef{L}{X83D5BFC3847045B8}{}
+{
+ Polycyclic and, especially, finitely generated nilpotent groups exhibit a
rich
+structure allowing a special approach towards multiplication using
+polynomials. The so\texttt{\symbol{45}}called Deep Thought algorithm
+introduced in \cite{LGS} 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\texttt{\symbol{45}}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
\texttt{DTP{\textunderscore}DTapplicability}. For more theoretical background
see for example the documentation of the \textsf{GAP} package
\textsf{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
\texttt{DTP{\textunderscore}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 \texttt{coll}, as defined in the
\textsf{GAP} package \textsf{Polycyclic}. Moreover, the \textsf{Polycyclic}
package introduces the structure of exponent vectors \texttt{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 \texttt{[x{\textunderscore}1, ...,
x{\textunderscore}n]}. For example, if \texttt{expvec1, expvec2} are exponent
vectors of elements in the same group, then \texttt{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.
+
+
+\section{\textcolor{Chapter }{Category
DTObj}}\label{Chapter_The_Deep_Thought_algorithm_Section_Category_DTObj}
+\logpage{[ 1, 1, 0 ]}
+\hyperdef{L}{X7A5FAA018026C0B7}{}
+{
+ This package uses the category \texttt{DTObj}. A \texttt{DTObj} is a
\texttt{IsFromTheLeftCollectorRep} with certain further list entries to store
the Deep Thought polynomials of a
+collector together with some additional information. That is, the functions
\texttt{DTP{\textunderscore}DTpols{\textunderscore}r} and
\texttt{DTP{\textunderscore}DTpols{\textunderscore}rs} return a \texttt{DTObj}
which has entries as \texttt{IsFromTheLeftCollectorRep} and additionally:
+\begin{itemize}
+\item \texttt{DTObj![PC{\textunderscore}DTPPolynomials]}: Deep Thought
polynomials in form of (nested) lists
+\item \texttt{DTObj![PC{\textunderscore}DTPOrders]}: list containing orders
of group generators if the collector is confluent
+\item \texttt{DTObj![PC{\textunderscore}DTPConfluent]}: boolean value
indicating whether the collector is confluent or not
+\end{itemize}
+ }
+
+ }
+
+
+\chapter{\textcolor{Chapter }{Using Deep Thought
functions}}\label{Chapter_Using_Deep_Thought_functions}
+\logpage{[ 2, 0, 0 ]}
+\hyperdef{L}{X82DA17B77A8A5B61}{}
+{
+ In the following sections, functions provided for computing Deep Thought
+polynomials and using them for calculations are listed.
+\section{\textcolor{Chapter }{Computing Deep Thought
polynomials}}\label{Chapter_Using_Deep_Thought_functions_Section_Computing_Deep_Thought_polynomials}
+\logpage{[ 2, 1, 0 ]}
+\hyperdef{L}{X7EA3FBDF7B809C2B}{}
+{
+
+
+\subsection{\textcolor{Chapter }{DTP{\textunderscore}DTapplicability}}
+\logpage{[ 2, 1, 1 ]}\nobreak
+\hyperdef{L}{X85D338758560944F}{}
+{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{DTP{\textunderscore}DTapplicability({\mdseries\slshape
coll})\index{DTP{\textunderscore}DTapplicability@\texttt{DTP{\textunderscore}DTapplicability}}
+\label{DTPuScoreDTapplicability}
+}\hfill{\scriptsize (function)}}\\
+\textbf{\indent Returns:\ }
+boolean
+
+
+
+ Checks the collector \texttt{coll} for applicability of Deep Thought
functions. Note that depending on confluency
+some functions may be applicable, while others are not. Information on the
+applicability and which type of Deep Thought polynomials are suggested is
+printed to the terminal. Here, "+" means that the following property is
+fulfilled, otherwise there is a "\texttt{\symbol{45}}". The function returns
\texttt{false} if Deep Thought is not applicable to the collector \texttt{coll}
and \texttt{true} otherwise. Anyway, even if \texttt{true} is returned,
\emph{not all functions need to be applicable} (in case of inconfluencies). }
+
+
+
+\subsection{\textcolor{Chapter }{DTP{\textunderscore}DTObjFromCollector}}
+\logpage{[ 2, 1, 2 ]}\nobreak
+\hyperdef{L}{X86F89471783A781E}{}
+{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{DTP{\textunderscore}DTObjFromCollector({\mdseries\slshape
coll[,
rs{\textunderscore}flag]})\index{DTP{\textunderscore}DTObjFromCollector@\texttt{DTP{\textunderscore}}\-\texttt{D}\-\texttt{T}\-\texttt{Obj}\-\texttt{From}\-\texttt{Collector}}
+\label{DTPuScoreDTObjFromCollector}
+}\hfill{\scriptsize (function)}}\\
+\textbf{\indent Returns:\ }
+a DTObj
+
+
+
+ Computes a DTObj for the collector coll, either with polynomials of type
$f_{rs}$ (if \texttt{rs{\textunderscore}flag = true}) or with polynomials of
type $f_r$, if \texttt{rs{\textunderscore}flag = false}. If the optional
argument \texttt{rs{\textunderscore}flag} is not provided, polynomials of type
$f_{rs}$ are computed. The function checks whether the collector \texttt{coll}
is confluent. If not, a warning is displayed. Note that the function assumes
+the collector \texttt{coll} to be suitable for Deep Thought, see function
\texttt{DTP{\textunderscore}DTapplicability}. }
+
+
+\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
+ !gapprompt@gap>| !gapinput@G := UnitriangularPcpGroup(10, 0);;|
+ !gapprompt@gap>| !gapinput@coll := Collector(G);;|
+ !gapprompt@gap>| !gapinput@DTP_DTapplicability(coll);|
+ Checking collector for DT-applicability. "+" means the following property
+ is fulfilled.
+ + conjugacy relations
+ + power relations
+ + confluent
+ Suggestion: Call DTP_DTObjFromColl with rs_flag = true.
+ true
+ # calling DTP_DTObjFromCollector without rs_flag implies rs_flag = true:
+ !gapprompt@gap>| !gapinput@DTObj := DTP_DTObjFromCollector(coll);|
+ <DTObj>
+\end{Verbatim}
+ }
+
+
+\section{\textcolor{Chapter }{Computations with Deep Thought
polynomials}}\label{Chapter_Using_Deep_Thought_functions_Section_Computations_with_Deep_Thought_polynomials}
+\logpage{[ 2, 2, 0 ]}
+\hyperdef{L}{X7DEEE5BD87A77227}{}
+{
+
+
+\subsection{\textcolor{Chapter }{DTP{\textunderscore}Exp}}
+\logpage{[ 2, 2, 1 ]}\nobreak
+\hyperdef{L}{X7D7E8A7E837393D5}{}
+{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{DTP{\textunderscore}Exp({\mdseries\slshape
expvec, int,
DTObj})\index{DTP{\textunderscore}Exp@\texttt{DTP{\textunderscore}Exp}}
+\label{DTPuScoreExp}
+}\hfill{\scriptsize (function)}}\\
+\textbf{\indent Returns:\ }
+an exponent vector
+
+
+
+ Computes the exponent vector of \texttt{expvec}$^{int}$. If
\texttt{IsConfluent(DTObj) = true}, then the result is in normal form. }
+
+
+
+\subsection{\textcolor{Chapter }{DTP{\textunderscore}Inverse}}
+\logpage{[ 2, 2, 2 ]}\nobreak
+\hyperdef{L}{X7E6A77648287C534}{}
+{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{DTP{\textunderscore}Inverse({\mdseries\slshape
expvec,
DTObj})\index{DTP{\textunderscore}Inverse@\texttt{DTP{\textunderscore}Inverse}}
+\label{DTPuScoreInverse}
+}\hfill{\scriptsize (function)}}\\
+\textbf{\indent Returns:\ }
+an exponent vector
+
+
+
+ Computes the exponent vector of the inverse of the element corresponding to
\texttt{expvec}. If \texttt{IsConfluent(DTObj) = true}, then the result is in
normal form. }
+
+
+
+\subsection{\textcolor{Chapter }{DTP{\textunderscore}IsInNormalForm}}
+\logpage{[ 2, 2, 3 ]}\nobreak
+\hyperdef{L}{X832D51A385C2B55E}{}
+{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{DTP{\textunderscore}IsInNormalForm({\mdseries\slshape
expvec,
coll})\index{DTP{\textunderscore}IsInNormalForm@\texttt{DTP{\textunderscore}IsInNormalForm}}
+\label{DTPuScoreIsInNormalForm}
+}\hfill{\scriptsize (function)}}\\
+\textbf{\indent Returns:\ }
+boolean or positive integer
+
+
+
+ Checks whether \texttt{expvec} is in normal form or not. If yes, the return
value is \texttt{true}. Otherwise the return value is the smallest generator
index for which the
+normal form condition is violated, i.e. for which the relative order
\texttt{RelativeOrder(coll)[i]} is non\texttt{\symbol{45}}zero, and
\texttt{expvec[i]} {\textless} \texttt{0} or \texttt{expvec[i]} $\geq$
\texttt{RelativeOrder(coll)[i]}. }
+
+
+
+\subsection{\textcolor{Chapter }{DTP{\textunderscore}Multiply}}
+\logpage{[ 2, 2, 4 ]}\nobreak
+\hyperdef{L}{X81BFA2BC82C955D4}{}
+{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{DTP{\textunderscore}Multiply({\mdseries\slshape
expvec1, expvec2,
DTObj})\index{DTP{\textunderscore}Multiply@\texttt{DTP{\textunderscore}Multiply}}
+\label{DTPuScoreMultiply}
+}\hfill{\scriptsize (function)}}\\
+\textbf{\indent Returns:\ }
+an exponent vector
+
+
+
+ Computes the exponent vector of the product \texttt{expvec1 * expvec2} using
the Deep Thought polynomials. If \texttt{IsConfluent(DTObj) = true}, then the
result is returned in normal form. \texttt{DTP{\textunderscore}Multiply} either
calls \texttt{DTP{\textunderscore}Multiply{\textunderscore}r} or
\texttt{DTP{\textunderscore}Multiply{\textunderscore}rs} depending on which
type of polynomials are stored in \texttt{DTObj}. }
+
+
+
+\subsection{\textcolor{Chapter
}{DTP{\textunderscore}Multiply{\textunderscore}r}}
+\logpage{[ 2, 2, 5 ]}\nobreak
+\hyperdef{L}{X7CF4337B7C9E1559}{}
+{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{DTP{\textunderscore}Multiply{\textunderscore}r({\mdseries\slshape
expvec1, expvec2,
DTObj})\index{DTP{\textunderscore}Multiply{\textunderscore}r@\texttt{DTP{\textunderscore}}\-\texttt{Multiply{\textunderscore}r}}
+\label{DTPuScoreMultiplyuScorer}
+}\hfill{\scriptsize (function)}}\\
+\textbf{\indent Returns:\ }
+an exponent vector
+
+
+
+ Computes the exponent vector of the product \texttt{expvec1 * expvec2} using
the Deep Thought polynomials of type $f_r$ stored in
\texttt{DT{\textunderscore}Obj}. If \texttt{IsConfluent(DTObj) = true}, then
the result is returned in normal form. }
+
+
+
+\subsection{\textcolor{Chapter
}{DTP{\textunderscore}Multiply{\textunderscore}rs}}
+\logpage{[ 2, 2, 6 ]}\nobreak
+\hyperdef{L}{X80B149C187ED3B23}{}
+{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{DTP{\textunderscore}Multiply{\textunderscore}rs({\mdseries\slshape
expvec1, expvec2,
DTObj})\index{DTP{\textunderscore}Multiply{\textunderscore}rs@\texttt{DTP{\textunderscore}}\-\texttt{Multiply{\textunderscore}rs}}
+\label{DTPuScoreMultiplyuScorers}
+}\hfill{\scriptsize (function)}}\\
+\textbf{\indent Returns:\ }
+an exponent vector
+
+
+
+ Computes the exponent vector of the product \texttt{expvec1 * expvec2} using
the Deep Thought polynomials of type $f_{rs}$ stored in
\texttt{DT{\textunderscore}Obj}. If \texttt{IsConfluent(DTObj) = true}, then
the result is returned in normal form. }
+
+
+
+\subsection{\textcolor{Chapter }{DTP{\textunderscore}NormalForm}}
+\logpage{[ 2, 2, 7 ]}\nobreak
+\hyperdef{L}{X8159A2E083BADB3D}{}
+{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{DTP{\textunderscore}NormalForm({\mdseries\slshape
expvec,
DTObj})\index{DTP{\textunderscore}NormalForm@\texttt{DTP{\textunderscore}NormalForm}}
+\label{DTPuScoreNormalForm}
+}\hfill{\scriptsize (function)}}\\
+\textbf{\indent Returns:\ }
+an exponent vector
+
+
+
+ Computes the exponent vector of the normal form of \texttt{expvec}. For this
function to be applicable, we need \texttt{IsConfluent(DTObj) = true}. }
+
+
+
+\subsection{\textcolor{Chapter }{DTP{\textunderscore}Order}}
+\logpage{[ 2, 2, 8 ]}\nobreak
+\hyperdef{L}{X7C12EF818683CB66}{}
+{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{DTP{\textunderscore}Order({\mdseries\slshape
expvec,
DTObj})\index{DTP{\textunderscore}Order@\texttt{DTP{\textunderscore}Order}}
+\label{DTPuScoreOrder}
+}\hfill{\scriptsize (function)}}\\
+\textbf{\indent Returns:\ }
+positive integer or infinity
+
+
+
+ Computes the order of the element described by \texttt{expvec}. For this
function to be applicable, we need \texttt{IsConfluent(DTObj) = true}. }
+
+
+
+\subsection{\textcolor{Chapter }{DTP{\textunderscore}SolveEquation}}
+\logpage{[ 2, 2, 9 ]}\nobreak
+\hyperdef{L}{X7881AABE84C7EB33}{}
+{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{DTP{\textunderscore}SolveEquation({\mdseries\slshape
expvec1, expvec2,
DTObj})\index{DTP{\textunderscore}SolveEquation@\texttt{DTP{\textunderscore}SolveEquation}}
+\label{DTPuScoreSolveEquation}
+}\hfill{\scriptsize (function)}}\\
+\textbf{\indent Returns:\ }
+an exponent vector
+
+
+
+ Computes the exponent vector of the element corresponding to
\texttt{expvec1}$^{-1}$ \texttt{* expvec2}, i.e. the result solves the equation
\texttt{expvec1 * result = expvec2}. If \texttt{IsConfluent(DTObj) = true},
then the result describes a normal form. }
+
+
+\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
+ !gapprompt@gap>| !gapinput@G := PcGroupToPcpGroup(SmallGroup(23^5, 2));|
+ Pcp-group with orders [ 23, 23, 23, 23, 23 ]
+ !gapprompt@gap>| !gapinput@coll := Collector(G);|
+ <<from the left collector with 5 generators>>
+ !gapprompt@gap>| !gapinput@DTObj := DTP_DTObjFromCollector(coll);|
+ <DTObj>
+ !gapprompt@gap>| !gapinput@g := [100, 134, -31, 52, 5235];|
+ [ 100, 134, -31, 52, 5235 ]
+ !gapprompt@gap>| !gapinput@DTP_IsInNormalForm(g, DTObj);|
+ 1
+ !gapprompt@gap>| !gapinput@g := DTP_NormalForm(g, DTObj);|
+ [ 8, 19, 15, 10, 19 ]
+ !gapprompt@gap>| !gapinput@DTP_IsInNormalForm(g, DTObj);|
+ true
+ !gapprompt@gap>| !gapinput@DTP_Inverse(g, DTObj);|
+ [ 15, 4, 22, 12, 3 ]
+ !gapprompt@gap>| !gapinput@DTP_Order(g, DTObj);|
+ 529
+ !gapprompt@gap>| !gapinput@h := [142, 2, -41, 23, 1];|
+ [ 142, 2, -41, 23, 1 ]
+ !gapprompt@gap>| !gapinput@DTP_Multiply(g, h, DTObj);|
+ [ 12, 21, 4, 16, 20 ]
+\end{Verbatim}
+ }
+
+
+\section{\textcolor{Chapter }{Computations with
pcp\texttt{\symbol{45}}elements}}\label{Chapter_Using_Deep_Thought_functions_Section_Computations_with_pcp-elements}
+\logpage{[ 2, 3, 0 ]}
+\hyperdef{L}{X7E972B8C7A6CD87A}{}
+{
+ When Deep Thought polynomials are available, certain computations allow
+different approaches which may be faster than the methods used by default. In
+this section, computations for which such extra functions taking
+pcp\texttt{\symbol{45}}elements as input are available are listed. All of
+these functions expect the collector belonging to the
+pcp\texttt{\symbol{45}}elements to be a \texttt{DTObj}.
+
+\subsection{\textcolor{Chapter }{DTP{\textunderscore}PCP{\textunderscore}Exp}}
+\logpage{[ 2, 3, 1 ]}\nobreak
+\hyperdef{L}{X82FE9D938612F732}{}
+{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{DTP{\textunderscore}PCP{\textunderscore}Exp({\mdseries\slshape
pcp\texttt{\symbol{45}}element,
int})\index{DTP{\textunderscore}PCP{\textunderscore}Exp@\texttt{DTP{\textunderscore}}\-\texttt{P}\-\texttt{C}\-\texttt{P{\textunderscore}Exp}}
+\label{DTPuScorePCPuScoreExp}
+}\hfill{\scriptsize (function)}}\\
+\textbf{\indent Returns:\ }
+pcp\texttt{\symbol{45}}element
+
+
+
+ Returns the pcp\texttt{\symbol{45}}element
\texttt{pcp\texttt{\symbol{45}}element}$^{int}$. If \texttt{IsConfluent(DTObj)
= true}, then the result is in normal form. }
+
+
+
+\subsection{\textcolor{Chapter
}{DTP{\textunderscore}PCP{\textunderscore}Inverse}}
+\logpage{[ 2, 3, 2 ]}\nobreak
+\hyperdef{L}{X87E377E5844A7841}{}
+{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{DTP{\textunderscore}PCP{\textunderscore}Inverse({\mdseries\slshape
pcp\texttt{\symbol{45}}element})\index{DTP{\textunderscore}PCP{\textunderscore}Inverse@\texttt{DTP{\textunderscore}}\-\texttt{P}\-\texttt{C}\-\texttt{P{\textunderscore}}\-\texttt{Inverse}}
+\label{DTPuScorePCPuScoreInverse}
+}\hfill{\scriptsize (function)}}\\
+\textbf{\indent Returns:\ }
+pcp\texttt{\symbol{45}}element
+
+
+
+ Returns the pcp\texttt{\symbol{45}}elment
\texttt{pcp\texttt{\symbol{45}}element\texttt{\symbol{94}}\texttt{\symbol{45}}1}.
If \texttt{IsConfluent(DTObj) = true}, then the result is in normal form. }
+
+
+
+\subsection{\textcolor{Chapter
}{DTP{\textunderscore}PCP{\textunderscore}NormalForm}}
+\logpage{[ 2, 3, 3 ]}\nobreak
+\hyperdef{L}{X836633C77892C287}{}
+{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{DTP{\textunderscore}PCP{\textunderscore}NormalForm({\mdseries\slshape
pcp\texttt{\symbol{45}}element})\index{DTP{\textunderscore}PCP{\textunderscore}NormalForm@\texttt{DTP{\textunderscore}}\-\texttt{P}\-\texttt{C}\-\texttt{P{\textunderscore}}\-\texttt{Normal}\-\texttt{Form}}
+\label{DTPuScorePCPuScoreNormalForm}
+}\hfill{\scriptsize (function)}}\\
+\textbf{\indent Returns:\ }
+pcp\texttt{\symbol{45}}element
+
+
+
+ Returns a pcp\texttt{\symbol{45}}element which is the normal form of the input
+pcp\texttt{\symbol{45}}element. For this function to be applicable, we need
\texttt{IsConfluent(DTObj) = true}. }
+
+
+
+\subsection{\textcolor{Chapter
}{DTP{\textunderscore}PCP{\textunderscore}Order}}
+\logpage{[ 2, 3, 4 ]}\nobreak
+\hyperdef{L}{X85B1ED637A2A4D79}{}
+{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{DTP{\textunderscore}PCP{\textunderscore}Order({\mdseries\slshape
pcp\texttt{\symbol{45}}element})\index{DTP{\textunderscore}PCP{\textunderscore}Order@\texttt{DTP{\textunderscore}}\-\texttt{P}\-\texttt{C}\-\texttt{P{\textunderscore}}\-\texttt{Order}}
+\label{DTPuScorePCPuScoreOrder}
+}\hfill{\scriptsize (function)}}\\
+\textbf{\indent Returns:\ }
+positive integer or infinity
+
+
+
+ Computes the order of the pcp\texttt{\symbol{45}}element. For this function to
+be applicable, we need \texttt{IsConfluent(DTObj) = true}. }
+
+
+
+\subsection{\textcolor{Chapter
}{DTP{\textunderscore}PCP{\textunderscore}SolveEquation}}
+\logpage{[ 2, 3, 5 ]}\nobreak
+\hyperdef{L}{X86E6DA84863440B5}{}
+{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{DTP{\textunderscore}PCP{\textunderscore}SolveEquation({\mdseries\slshape
pcp\texttt{\symbol{45}}element1,
pcp\texttt{\symbol{45}}element2})\index{DTP{\textunderscore}PCP{\textunderscore}SolveEquation@\texttt{DTP{\textunderscore}}\-\texttt{P}\-\texttt{C}\-\texttt{P{\textunderscore}}\-\texttt{Solve}\-\texttt{Equation}}
+\label{DTPuScorePCPuScoreSolveEquation}
+}\hfill{\scriptsize (function)}}\\
+\textbf{\indent Returns:\ }
+pcp\texttt{\symbol{45}}element
+
+
+
+ Returns the pcp\texttt{\symbol{45}}element
\texttt{pcp\texttt{\symbol{45}}element1}$^{-1}$ \texttt{*
pcp\texttt{\symbol{45}}element2}, i.e. the result solves the equation
\texttt{pcp\texttt{\symbol{45}}element1 * pcp\texttt{\symbol{45}}element =
+pcp\texttt{\symbol{45}}element2}. If \texttt{IsConfluent(DTObj) = true}, then
the result describes a normal form. }
+
+
+\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
+ !gapprompt@gap>| !gapinput@G := HeisenbergPcpGroup(7);;|
+ !gapprompt@gap>| !gapinput@coll := Collector(G);;|
+ !gapprompt@gap>| !gapinput@DTObj := DTP_DTObjFromCollector(coll);;|
+ !gapprompt@gap>| !gapinput@H := PcpGroupByCollector(DTObj);;|
+ !gapprompt@gap>| !gapinput@g := Random(H);; h := Random(H);;|
+ !gapprompt@gap>| !gapinput@DTP_PCP_SolveEquation(g, h);|
+ g1^-3*g2^-1*g3^-7*g4*g5^-6*g6*g7*g8^2*g9^3*g11^-4*g12^5*g14^-2*g15^7
+ g1^-3*g2^-1*g3^-7*g4*g5^-6*g6*g7*g8^2*g9^3*g11^-4*g12^5*g14^-2*g15^7
+ infinity
+ !gapprompt@gap>| !gapinput@g^-1;|
+ g1^-2*g3^-3*g4^-1*g5^-4*g6^2*g7*g8^-3*g10^-3*g11^-1*g12^4*g14^-2*g15^-3
+ !gapprompt@gap>| !gapinput@DTP_PCP_Inverse(h);|
+ g1*g2*g3^4*g4^-2*g5^2*g6*g8^-5*g9^-3*g10^-3*g11^3*g12^-1*g15^-33
+\end{Verbatim}
+ }
+
+
+\section{\textcolor{Chapter }{Accessing Deep Thought
polynomials}}\label{Chapter_Using_Deep_Thought_functions_Section_Accessing_Deep_Thought_polynomials}
+\logpage{[ 2, 4, 0 ]}
+\hyperdef{L}{X81E6D7BE805AEA32}{}
+{
+ In this section, functions which can be used to display the content of a
\texttt{DTObj} are documented. Furthermore, Deep Thought polynomials stored in
a \texttt{DTObj} can be converted to \textsf{GAP} polynomials.
+
+\subsection{\textcolor{Chapter
}{DTP{\textunderscore}Display{\textunderscore}DTObj}}
+\logpage{[ 2, 4, 1 ]}\nobreak
+\hyperdef{L}{X85DDC77C7B704389}{}
+{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{DTP{\textunderscore}Display{\textunderscore}DTObj({\mdseries\slshape
DTObj})\index{DTP{\textunderscore}Display{\textunderscore}DTObj@\texttt{DTP{\textunderscore}}\-\texttt{Display{\textunderscore}}\-\texttt{D}\-\texttt{TObj}}
+\label{DTPuScoreDisplayuScoreDTObj}
+}\hfill{\scriptsize (function)}}\\
+\textbf{\indent Returns:\ }
+nothing
+
+
+
+ Prints information about \texttt{DTObj} to the terminal. In particular, the
Deep Thought polynomials are printed in
+human\texttt{\symbol{45}}readable form. This function is also called by the
+method of \texttt{Display} for a \texttt{DTObj}. }
+
+
+
+\subsection{\textcolor{Chapter }{DTP{\textunderscore}pols2GAPpols}}
+\logpage{[ 2, 4, 2 ]}\nobreak
+\hyperdef{L}{X7BD122177D9A9D4F}{}
+{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{DTP{\textunderscore}pols2GAPpols({\mdseries\slshape
DTObj})\index{DTP{\textunderscore}pols2GAPpols@\texttt{DTP{\textunderscore}pols2GAPpols}}
+\label{DTPuScorepols2GAPpols}
+}\hfill{\scriptsize (function)}}\\
+\textbf{\indent Returns:\ }
+list
+
+
+
+ Converts the Deep Thought polynomials stored in
\texttt{DTObj[PC{\textunderscore}DTPPolynomials]} to \textsf{GAP} polynomials
and returns them in a list together with their polynomial ring. }
+
+
+\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
+ !gapprompt@gap>| !gapinput@coll := FromTheLeftCollector(4);;|
+ !gapprompt@gap>| !gapinput@SetConjugate(coll, 2, 1, [2, 1, 3, 2]);|
+ !gapprompt@gap>| !gapinput@SetConjugate(coll, 3, 1, [3, 1, 4, 1]);|
+ !gapprompt@gap>| !gapinput@SetConjugate(coll, 3, 2, [3, 1, 4, 5]);|
+ !gapprompt@gap>| !gapinput@UpdatePolycyclicCollector(coll);|
+ !gapprompt@gap>| !gapinput@DTObj := DTP_DTObjFromCollector(coll);|
+ <DTObj>
+ !gapprompt@gap>| !gapinput@Display(DTObj);|
+ Polynomials f_rs for s = 1:
+ f_1,s = X_1 + Y_1
+ f_2,s = X_2
+ f_3,s = X_3 + 2 * X_2 Y_1
+ f_4,s = X_4 + X_3 Y_1 + 2 * X_2 Binomial(Y_1, 2) + 10 * Binomial(X_2, 2) Y_1
+ Polynomials f_rs for s = 2:
+ f_1,s = X_1
+ f_2,s = X_2 + Y_2
+ f_3,s = X_3
+ f_4,s = X_4 + 5 * X_3 Y_2
+ Polynomials f_rs for s = 3:
+ f_1,s = X_1
+ f_2,s = X_2
+ f_3,s = X_3 + Y_3
+ f_4,s = X_4
+ Polynomials f_rs for s = 4:
+ f_1,s = X_1
+ f_2,s = X_2
+ f_3,s = X_3
+ f_4,s = X_4 + Y_4
+ !gapprompt@gap>| !gapinput@DTObj := DTP_DTObjFromCollector(coll, false);|
+ <DTObj>
+ !gapprompt@gap>| !gapinput@Display(DTObj);|
+ f_1 = X_1 + Y_1
+ f_2 = X_2 + Y_2
+ f_3 = X_3 + Y_3 + 2 * X_2 Y_1
+ f_4 = X_4 + Y_4 + X_3 Y_1 + 2 * X_2 Binomial(Y_1, 2) +
+ 10 * Binomial(X_2, 2) Y_1 + 5 * X_3 Y_2 + 10 * X_2 Y_1 Y_2
+ !gapprompt@gap>| !gapinput@DTP_pols2GAPpols(DTObj);|
+ [ [ x1+y1, x2+y2, 2*x2*y1+x3+y3,
+ 5*x2^2*y1+x2*y1^2+10*x2*y1*y2-6*x2*y1+x3*y1+5*x3*y2+x4+y4 ],
+ Rationals[x1,x2,x3,x4,y1,y2,y3,y4] ]
+\end{Verbatim}
+ }
+
+ }
+
+ \def\bibname{References\logpage{[ "Bib", 0, 0 ]}
+\hyperdef{L}{X7A6F98FD85F02BFE}{}
+}
+
+\bibliographystyle{alpha}
+\bibliography{dtbib.xml}
+
+\addcontentsline{toc}{chapter}{References}
+
+\def\indexname{Index\logpage{[ "Ind", 0, 0 ]}
+\hyperdef{L}{X83A0356F839C696F}{}
+}
+
+\cleardoublepage
+\phantomsection
+\addcontentsline{toc}{chapter}{Index}
+
+
+\printindex
+
+\immediate\write\pagenrlog{["Ind", 0, 0], \arabic{page},}
+\newpage
+\immediate\write\pagenrlog{["End"], \arabic{page}];}
+\immediate\closeout\pagenrlog
+\end{document}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/DeepThought-1.0.9/doc/_main.xml
new/DeepThought-1.0.10/doc/_main.xml
--- old/DeepThought-1.0.9/doc/_main.xml 1970-01-01 01:00:00.000000000 +0100
+++ new/DeepThought-1.0.10/doc/_main.xml 2026-08-01 02:00:00.000000000
+0200
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- This is an automatically generated file. -->
+<!DOCTYPE Book SYSTEM "gapdoc.dtd"
+[
+ <#Include SYSTEM "_entities.xml">
+]
+>
+<Book Name="DeepThought">
+<#Include SYSTEM "title.xml">
+<TableOfContents/>
+<Body>
+<#Include SYSTEM "_AutoDocMainFile.xml">
+</Body>
+<Bibliography Databases="dtbib.xml"/>
+<TheIndex/>
+</Book>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/DeepThought-1.0.9/doc/chap0.html
new/DeepThought-1.0.10/doc/chap0.html
--- old/DeepThought-1.0.9/doc/chap0.html 2025-06-20 13:10:41.000000000
+0200
+++ new/DeepThought-1.0.10/doc/chap0.html 2026-08-01 02:00:00.000000000
+0200
@@ -29,17 +29,16 @@
<h2>This package provides functions for computations in finitely generated
nilpotent groups based on the Deep Thought algorithm.</h2>
<p>
- 1.0.9</p>
+ 1.0.10</p>
<p>
- 20 June 2025
+ 1 August 2026
</p>
</div>
<p><b>
Nina Wagner
-
</b>
<br />Email: <span class="URL"><a
href="mailto:[email protected]">[email protected]</a></span>
</p>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/DeepThought-1.0.9/doc/chap0.txt
new/DeepThought-1.0.10/doc/chap0.txt
--- old/DeepThought-1.0.9/doc/chap0.txt 2025-06-20 13:10:37.000000000 +0200
+++ new/DeepThought-1.0.10/doc/chap0.txt 2026-08-01 02:00:00.000000000
+0200
@@ -7,10 +7,10 @@
nilpotent groups based on the Deep Thought algorithm. [101X
- 1.0.9
+ 1.0.10
- 20 June 2025
+ 1 August 2026
Nina Wagner
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/DeepThought-1.0.9/doc/chap0_mj.html
new/DeepThought-1.0.10/doc/chap0_mj.html
--- old/DeepThought-1.0.9/doc/chap0_mj.html 2025-06-20 13:10:41.000000000
+0200
+++ new/DeepThought-1.0.10/doc/chap0_mj.html 2026-08-01 02:00:00.000000000
+0200
@@ -32,17 +32,16 @@
<h2>This package provides functions for computations in finitely generated
nilpotent groups based on the Deep Thought algorithm.</h2>
<p>
- 1.0.9</p>
+ 1.0.10</p>
<p>
- 20 June 2025
+ 1 August 2026
</p>
</div>
<p><b>
Nina Wagner
-
</b>
<br />Email: <span class="URL"><a
href="mailto:[email protected]">[email protected]</a></span>
</p>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/DeepThought-1.0.9/doc/chooser.html
new/DeepThought-1.0.10/doc/chooser.html
--- old/DeepThought-1.0.9/doc/chooser.html 2025-06-20 13:10:41.000000000
+0200
+++ new/DeepThought-1.0.10/doc/chooser.html 2026-08-01 02:00:00.000000000
+0200
@@ -23,9 +23,18 @@
return "";
}
+<!-- load dark appearance either explicitly or via the OS preference -->
+function writeAppearanceStyle(mode) {
+ if (mode == "dark") {
+ document.writeln('<link rel="stylesheet" type="text/css" href="dark.css"
/>');
+ } else if (mode != "light") {
+ document.writeln('<style type="text/css">@import "dark.css"
(prefers-color-scheme: dark);</style>');
+ }
+}
+
<!-- find style from current values in form -->
function getstyle() {
- var choices = ["toggle","colorprompt","tocside","font","justify"];
+ var choices =
["toggle","colorprompt","tocside","font","justify","appearance"];
var style = "";
for (var i=0; choices.length > i; i++) {
var a = currval(choices[i]);
@@ -55,17 +64,23 @@
<!-- initialize form from GAPDocStyle cookie -->
function initform() {
var style = valueString(document.cookie, "GAPDocStyle");
+ if (style == 0 || style == "default")
+ writeAppearanceStyle("");
if (style != 0 && style.length > 0 && style.length != "default") {
stlist = style.split(",");
var chform = document.forms[0].elements;
+ var appearance = "";
for (var i=0; chform.length > i; i++) {
if (chform[i].type == "radio") {
for (var j=0; stlist.length > j; j++) {
- if (chform[i].value == stlist[j])
+ if (stlist[j] == "dark" || stlist[j] == "light")
+ appearance = stlist[j];
+ if (chform[i].value == stlist[j])
chform[i].checked = true;
}
}
}
+ writeAppearanceStyle(appearance);
}
}
@@ -119,6 +134,15 @@
<input type="radio" name="justify" value="ragged"
onclick="javascript:f()"/> ragged right
</p>
+<p>
+Appearance:
+<input type="radio" name="appearance" value=""
+onclick="javascript:f()"/> system (default)
+<input type="radio" name="appearance" value="light" checked="checked"
+onclick="javascript:f()"/> light
+<input type="radio" name="appearance" value="dark"
+onclick="javascript:f()"/> dark
+</p>
</form>
<p>
<a name="backLINK" href=""><strong>Apply settings to last page.</strong></a>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/DeepThought-1.0.9/doc/dark.css
new/DeepThought-1.0.10/doc/dark.css
--- old/DeepThought-1.0.9/doc/dark.css 1970-01-01 01:00:00.000000000 +0100
+++ new/DeepThought-1.0.10/doc/dark.css 2026-08-01 02:00:00.000000000 +0200
@@ -0,0 +1,178 @@
+/* dark.css Frank Luebeck */
+/* Initial dark theme contributed by kiryph in issue #75. */
+
+/* colors */
+body {
+ background: #121212;
+ color: #eee;
+}
+
+a:link {
+ color: #576cad;
+}
+
+a:visited {
+ color: #576cad;
+}
+
+a:active {
+ color: #eee;
+}
+
+a:hover {
+ background: #eee;
+}
+
+pre {
+ color: black;
+}
+
+tt, code {
+ color: #eee;
+}
+
+/* layout for the definitions of functions, variables, ... */
+div.func {
+ background: #909090;
+}
+
+/* Example elements (for old converted manuals, now in div+pre */
+table.example {
+ background: #efefef;
+}
+
+/* becomes ... */
+div.example {
+ background: #efefef;
+ color: black;
+}
+
+/* Links to chapters in all files at top and bottom. */
+div.chlinktop {
+ background: #22272e;
+ border-color: #3a414a;
+ color: #d7dde5;
+}
+
+div.chlinktop a:hover {
+ background: #2f3742;
+}
+
+div.chlinkbot {
+ background: #22272e;
+ border-color: #3a414a;
+ color: #d7dde5;
+}
+
+/* and this is for the "Top", "Prev", "Next" links */
+div.chlinkprevnexttop {
+ background: #22272e;
+ border-color: #3a414a;
+ color: #d7dde5;
+}
+
+div.chlinkprevnexttop a:hover {
+ background: #2f3742;
+}
+
+div.chlinkprevnextbot {
+ background: #22272e;
+ border-color: #3a414a;
+ color: #d7dde5;
+}
+
+div.chlinkprevnextbot a:hover {
+ background: #2f3742;
+}
+
+div.ContChap div.ContSect:hover div.ContSSBlock {
+ background: #eee;
+ border-color: #666;
+ color: #000;
+}
+
+div.ContSSBlock a:hover {
+ background: #fff;
+}
+
+/* and here for the side menu of contents in the chapter files */
+div.ChapSects a:hover {
+ background: #eee;
+ color: #000;
+}
+
+div.ChapSects div.ContSect:hover div.ContSSBlock {
+ background: #b5b5b5;
+ border-color: #666;
+ color: #000;
+}
+
+div.ChapSects div.ContSect:hover div.ContSSBlock a:hover {
+ background: #828282;
+}
+
+/* Table elements */
+table.GAPDocTable {
+ border-color: black;
+}
+
+table.GAPDocTable td, table.GAPDocTable th {
+ border-color: #555;
+}
+
+table.GAPDocTablenoborder td, table.GAPDocTable th {
+ border-color: #555;
+}
+
+/* Colors and fonts can be overwritten for some types of elements. */
+/* Verb elements */
+pre.normal {
+ color: #eee;
+}
+
+/* Func-like elements and Ref to Func-like */
+code.func {
+ color: #eee;
+}
+
+/* K elements */
+code.keyw {
+ color: #983d3d;
+}
+
+/* F elements */
+code.file {
+ color: #8e4510;
+}
+
+/* Arg elements */
+var.Arg {
+ color: #060;
+}
+
+/* colors for ColorPrompt like examples */
+span.GAPprompt {
+ color: #000097;
+}
+
+span.GAPbrkprompt {
+ color: #970000;
+}
+
+span.GAPinput {
+ color: #970000;
+}
+
+/* Bib entries */
+span.BibKey {
+ color: #052;
+}
+
+/* for light and dark mode pictures */
+.only-on-dark {
+ display: block;
+}
+
+.only-on-light {
+ display: none;
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/DeepThought-1.0.9/doc/manual.css
new/DeepThought-1.0.10/doc/manual.css
--- old/DeepThought-1.0.9/doc/manual.css 2025-06-20 13:10:41.000000000
+0200
+++ new/DeepThought-1.0.10/doc/manual.css 2026-08-01 02:00:00.000000000
+0200
@@ -477,6 +477,10 @@
span.BibHowpublished {
}
+/* for light and dark mode pictures */
+.only-on-dark {
+ display: none;
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/DeepThought-1.0.9/doc/manual.js
new/DeepThought-1.0.10/doc/manual.js
--- old/DeepThought-1.0.9/doc/manual.js 2025-06-20 13:10:41.000000000 +0200
+++ new/DeepThought-1.0.10/doc/manual.js 2026-08-01 02:00:00.000000000
+0200
@@ -47,6 +47,20 @@
return 0;
}
+/* load dark appearance either explicitly or via the OS preference */
+function writeAppearanceStyle(mode) {
+ if (mode == "dark") {
+ document.writeln(
+ '<link rel="stylesheet" type="text/css" href="dark.css" />'
+ );
+ } else if (mode != "light") {
+ document.writeln(
+ '<style type="text/css">@import "dark.css" ' +
+ '(prefers-color-scheme: dark);</style>'
+ );
+ }
+}
+
/* when a non-default style is chosen via URL or a cookie, then
the cookie is reset and the styles .js and .css files are read */
function overwriteStyle() {
@@ -55,6 +69,8 @@
/* otherwise check cookie */
if (style == 0)
style = valueString(document.cookie, "GAPDocStyle");
+ if (style == 0 || style == "default")
+ writeAppearanceStyle("");
if (style == 0)
return;
if (style == "default")
@@ -70,13 +86,19 @@
document.cookie = "GAPDocStyle="+style+";Path="+path;
/* split into names of style files */
var stlist = style.split(",");
+ var appearance = "";
/* read style's css and js files */
for (var i=0; i < stlist.length; i++) {
- document.writeln('<link rel="stylesheet" type="text/css" href="'+
- stlist[i]+'.css" />');
- document.writeln('<script src="'+stlist[i]+
- '.js" type="text/javascript"></script>');
+ if (stlist[i] == "dark" || stlist[i] == "light") {
+ appearance = stlist[i];
+ } else {
+ document.writeln('<link rel="stylesheet" type="text/css" href="'+
+ stlist[i]+'.css"
/>');
+ document.writeln('<script src="'+stlist[i]+
+ '.js"
type="text/javascript"></script>');
+ }
}
+ writeAppearanceStyle(appearance);
}
}
@@ -110,4 +132,3 @@
for (var i=0; i < jscontentfuncs.length; i++)
jscontentfuncs[i]();
}
-
Binary files old/DeepThought-1.0.9/doc/manual.pdf and
new/DeepThought-1.0.10/doc/manual.pdf differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/DeepThought-1.0.9/doc/title.xml
new/DeepThought-1.0.10/doc/title.xml
--- old/DeepThought-1.0.9/doc/title.xml 2025-06-20 13:10:36.000000000 +0200
+++ new/DeepThought-1.0.10/doc/title.xml 2026-08-01 02:00:00.000000000
+0200
@@ -9,14 +9,13 @@
This package provides functions for computations in finitely generated
nilpotent groups based on the Deep Thought algorithm.
</Subtitle>
<Version>
- 1.0.9
+ 1.0.10
</Version>
<Author>
- Nina Wagner<Alt Only="LaTeX"><Br/></Alt>
+ Nina Wagner
<Email>[email protected]</Email>
-
</Author>
<Date>
- 20 June 2025
+ 1 August 2026
</Date>
</TitlePage>
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/DeepThought-1.0.9/tst/testall.g
new/DeepThought-1.0.10/tst/testall.g
--- old/DeepThought-1.0.9/tst/testall.g 2025-06-20 13:10:25.000000000 +0200
+++ new/DeepThought-1.0.10/tst/testall.g 2026-08-01 02:00:00.000000000
+0200
@@ -5,6 +5,7 @@
# metadata in PackageInfo.g.
#
LoadPackage( "DeepThought" );
+LoadPackage( "smallgrp" ); # used by tst/finite.tst and
tst/compare-dtpols.tst
TestDirectory(DirectoriesPackageLibrary( "DeepThought", "tst" ),
rec(exitGAP := true));
++++++ _scmsync.obsinfo ++++++
--- /var/tmp/diff_new_pack.pisYkE/_old 2026-08-03 17:16:35.689254835 +0200
+++ /var/tmp/diff_new_pack.pisYkE/_new 2026-08-03 17:16:35.693254975 +0200
@@ -1,5 +1,5 @@
-mtime: 1750421226
-commit: fc1b82d034542b9abbb878841f4100c1b827293c8f4d206ef23cc6bd0682b29b
+mtime: 1785693696
+commit: 8c4609dbe418d738f47d611cb53bdfcf0a8b4339730eea431eaa56c350e3314a
url: https://src.opensuse.org/jengelh/gap-deepthought
revision: master
++++++ build.specials.obscpio ++++++
++++++ build.specials.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/.gitignore new/.gitignore
--- old/.gitignore 1970-01-01 01:00:00.000000000 +0100
+++ new/.gitignore 2026-08-02 20:01:36.000000000 +0200
@@ -0,0 +1 @@
+.osc