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 @@
-[![Build 
Status](https://github.com/gap-packages/DeepThought/workflows/CI/badge.svg?branch=master)](https://github.com/gap-packages/DeepThought/actions?query=workflow%3ACI+branch%3Amaster)
+[![CI](https://github.com/gap-packages/DeepThought/actions/workflows/CI.yml/badge.svg)](https://github.com/gap-packages/DeepThought/actions/workflows/CI.yml)
 [![Code 
Coverage](https://codecov.io/github/gap-packages/DeepThought/coverage.svg?branch=master&token=)](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. 
   
   
-                                     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) &nbsp;&nbsp;&nbsp;
+<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

Reply via email to