[gap-sonata] 02/02: Imported Zeroth Debian patch 2.8+ds-1

Jerome Benoit calculus-guest at moszumanska.debian.org
Sat Dec 10 05:03:52 UTC 2016


This is an automated email from the git hooks/post-receive script.

calculus-guest pushed a commit to branch master
in repository gap-sonata.

commit 013c283c08856a478c8d5e4c258ce82e08c36653
Author: Jerome Benoit <calculus at rezozer.net>
Date:   Sat Dec 10 04:55:33 2016 +0000

    Imported Zeroth Debian patch 2.8+ds-1
---
 debian/adhoc/update-tst.sh               |  46 ++
 debian/changelog                         |   5 +
 debian/clean                             |  17 +
 debian/compat                            |   1 +
 debian/control                           |  25 +
 debian/copyright                         |  52 ++
 debian/gap-sonata.doc-base.ref           |  22 +
 debian/gap-sonata.doc-base.tut           |  21 +
 debian/gap-sonata.docs                   |   1 +
 debian/gap-sonata.install                |   9 +
 debian/gap-sonata.links                  |   2 +
 debian/gap-sonata.lintian-overrides      |   1 +
 debian/patches/debianization-tests.patch | 866 +++++++++++++++++++++++++++++++
 debian/patches/debianization.patch       |  79 +++
 debian/patches/series                    |   2 +
 debian/rules                             |  32 ++
 debian/source/format                     |   1 +
 debian/source/lintian-overrides          |   1 +
 debian/tests/control                     |   1 +
 debian/tests/makecheck.tst               |  11 +
 debian/watch                             |   3 +
 21 files changed, 1198 insertions(+)

diff --git a/debian/adhoc/update-tst.sh b/debian/adhoc/update-tst.sh
new file mode 100755
index 0000000..d3d0b72
--- /dev/null
+++ b/debian/adhoc/update-tst.sh
@@ -0,0 +1,46 @@
+#!/bin/sh
+#
+# Ad hoc script to rewrite the GAP test files tst/*.tst ;
+# see debian/patches/debianization-tests.patch for further information.
+#
+# written for Debian by Jerome Benoit <calculus at rezozer.net>
+# on behalf of the Debian Science Team
+# copyright: 2016 Jerome Benoit <calculus at rezozer.net>
+# distributed under the terms and conditions of GPL version 2 or later
+#
+TOP_SRCDIR=$PWD
+[ -f $TOP_SRCDIR/README.sonata ] || exit 2
+GAP=/usr/bin/gap
+[ -e $GAP ] || exit 3
+TESTWIDTH=2048
+if [ -d $TOP_SRCDIR/tst ]; then
+	listof_TestFile=$(find $TOP_SRCDIR/tst -name '*.tst' | sort)
+	for idx in $(seq 1 9999); do
+		new_TestDirectory=$TOP_SRCDIR/$(printf "tst-%04d" ${idx})
+		if [ ! -e ${new_TestDirectory} ]; then
+			mkdir ${new_TestDirectory}
+			break;
+		fi
+		new_TestDirectory=''
+	done
+	[ -n "${new_TestDirectory}" ] || exit 4
+	echo "======= Rewritting each test file"
+	for tstfl in $listof_TestFile; do
+		$GAP -A -q -T -x ${TESTWIDTH} <<-EOF
+			SetPackagePath("sonata",".");
+			LoadPackage("autpgrp");
+			LoadPackage("sonata");
+			rtstfl := Filename(Directory("${new_TestDirectory}"),"${tstfl##*/}");
+			Test("${tstfl}", rec( width := ${TESTWIDTH}, reportDiff := Ignore, showProgress := false, rewriteToFile := rtstfl ) );
+			QUIT_GAP(last);
+			EOF
+	done
+	echo "======= Testing each rewritten test file"
+	for tstfl in $listof_TestFile; do
+		echo "SetPackagePath(\"sonata\",\".\"); LoadPackage(\"autpgrp\"); LoadPackage(\"sonata\"); QUIT_GAP(Test(\"${new_TestDirectory}/${tstfl##*/}\",rec(width:=${TESTWIDTH})));" | $GAP -A -q -T -x ${TESTWIDTH} || exit 5
+	done
+	echo "======= Testing the rewritten test directory"
+	echo "SetPackagePath(\"sonata\",\".\"); LoadPackage(\"autpgrp\"); LoadPackage(\"sonata\"); QUIT_GAP(TestDirectory(\"${new_TestDirectory}\",rec(testOptions:=rec(width:=${TESTWIDTH}))));" | $GAP -A -q -T -x ${TESTWIDTH} || exit 6
+fi
+exit 0
+# eos
diff --git a/debian/changelog b/debian/changelog
new file mode 100644
index 0000000..58649b2
--- /dev/null
+++ b/debian/changelog
@@ -0,0 +1,5 @@
+gap-sonata (2.8+ds-1) unstable; urgency=medium
+
+  * Initial release (Closes: #847547).
+
+ -- Jerome Benoit <calculus at rezozer.net>  Sat, 10 Dec 2016 05:00:24 +0000
diff --git a/debian/clean b/debian/clean
new file mode 100644
index 0000000..318f1ce
--- /dev/null
+++ b/debian/clean
@@ -0,0 +1,17 @@
+htm/
+doc/*/manual.aux
+doc/*/manual.bbl
+doc/*/manual.blg
+doc/*/manual.idx
+doc/*/manual.ilg
+doc/*/manual.ind
+doc/*/manual.lab
+doc/*/manual.log
+doc/*/manual.dvi
+doc/*/manual.pdf
+doc/*/manual.six
+doc/*/manual.toc
+doc/*/manualtex.ilg
+doc/*/manualtex.ind
+doc/*/manual.example-*.tst
+doc/*/missfont.log
diff --git a/debian/compat b/debian/compat
new file mode 100644
index 0000000..f599e28
--- /dev/null
+++ b/debian/compat
@@ -0,0 +1 @@
+10
diff --git a/debian/control b/debian/control
new file mode 100644
index 0000000..1765380
--- /dev/null
+++ b/debian/control
@@ -0,0 +1,25 @@
+Source: gap-sonata
+Section: math
+Priority: optional
+Maintainer: Debian Science Maintainers <debian-science-maintainers at lists.alioth.debian.org>
+Uploaders: Jerome Benoit <calculus at rezozer.net>
+Build-Depends:
+ debhelper (>= 10),
+ gap (>=4r8p6), gap-small-groups, gap-autpgrp,
+ texlive-generic-recommended, texlive-fonts-recommended, tth
+Standards-Version: 3.9.8
+Homepage: http://www.gap-system.org/Packages/sonata.html
+Vcs-Git: https://anonscm.debian.org/git/debian-science/packages/gap-sonata.git
+Vcs-Browser: https://anonscm.debian.org/cgit/debian-science/packages/gap-sonata.git
+
+Package: gap-sonata
+Provides: gap-pkg-sonata
+Architecture: all
+Depends: gap (>=4r8p6), gap-small-groups, gap-autpgrp, ${misc:Depends}
+Description: Systems Of Nearrings And Their Applications for GAP
+ GAP is a system for computational discrete algebra with particular
+ emphasis on computational group theory, but which has already proved
+ useful also in other areas.
+ .
+ This package provides to GAP methods for the construction and analysis
+ of finite nearrings.
diff --git a/debian/copyright b/debian/copyright
new file mode 100644
index 0000000..e115b39
--- /dev/null
+++ b/debian/copyright
@@ -0,0 +1,52 @@
+Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0
+Upstream-Name: GAP package SONATA
+Upstream-Contact: the SONATA Team <sonata at algebra.uni-linz.ac.at>
+Source: http://www.gap-system.org/Packages/sonata.html
+Files-Excluded:
+ htm
+ doc/*/manual.aux
+ doc/*/manual.bbl
+ doc/*/manual.blg
+ doc/*/manual.idx
+ doc/*/manual.ilg
+ doc/*/manual.ind
+ doc/*/manual.lab
+ doc/*/manual.log
+ doc/*/manual.pdf
+ doc/*/manual.six
+ doc/*/manual.toc
+ doc/gapmacro.tex
+ doc/convert.pl
+ */.directory
+
+Files: *
+Copyright:
+ 2012-2016 the SONATA Team <sonata at algebra.uni-linz.ac.at>
+             Erhard Aichinger
+             Franz Binder
+             Jürgen Ecker
+             Peter Mayr
+             Christof Nöbauer
+License: GPL-2+
+
+Files: debian/*
+Copyright:
+ 2016 Jerome Benoit <calculus at rezozer.net>
+License: GPL-2+
+
+License: GPL-2+
+ This package is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+ .
+ This package is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+ .
+ You should have received a copy of the GNU General Public License
+ along with this package. If not, see <http://www.gnu.org/licenses/>.
+ .
+ On Debian systems, the complete text of the GNU General
+ Public License version 2 can be found in "/usr/share/common-licenses/GPL-2".
diff --git a/debian/gap-sonata.doc-base.ref b/debian/gap-sonata.doc-base.ref
new file mode 100644
index 0000000..3b2daf5
--- /dev/null
+++ b/debian/gap-sonata.doc-base.ref
@@ -0,0 +1,22 @@
+Document: gap-sonata-ref
+Title: The Package SONATA - Reference Manual
+Author: the SONATA Team:
+  Erhard Aichinger
+  Franz Binder
+  Jürgen Ecker
+  Peter Mayr
+  Christof Nöbauer
+Abstract:
+ WIP
+ This reference manual describes in details the SONATA GAP package.
+ This package provides methods for the construction and analysis of
+ finite nearrings; SONATA stands for `systems of nearrings and their
+ applications'.
+Section: Science/Mathematics
+
+Format: pdf
+Files: /usr/share/doc/gap-sonata/doc/ref/manual.pdf
+
+Format: HTML
+Index: /usr/share/doc/gap-sonata/htm/ref/chapters.htm
+Files: /usr/share/doc/gap-sonata/htm/ref/*.htm
diff --git a/debian/gap-sonata.doc-base.tut b/debian/gap-sonata.doc-base.tut
new file mode 100644
index 0000000..d153e3f
--- /dev/null
+++ b/debian/gap-sonata.doc-base.tut
@@ -0,0 +1,21 @@
+Document: gap-sonata-tut
+Title: 8 easy pieces for SONATA - Tutorial
+Author: the SONATA Team:
+  Erhard Aichinger
+  Franz Binder
+  Jürgen Ecker
+  Peter Mayr
+  Christof Nöbauer
+Abstract:
+ WIP
+ This tutorial manual introduces us to the SONATA GAP package. This package
+ provides methods for the construction and analysis of finite nearrings;
+ SONATA stands for `systems of nearrings and their applications'.
+Section: Science/Mathematics
+
+Format: pdf
+Files: /usr/share/doc/gap-sonata/doc/tut/manual.pdf
+
+Format: HTML
+Index: /usr/share/doc/gap-sonata/htm/tut/chapters.htm
+Files: /usr/share/doc/gap-sonata/htm/tut/*.htm
diff --git a/debian/gap-sonata.docs b/debian/gap-sonata.docs
new file mode 100644
index 0000000..9cc54ae
--- /dev/null
+++ b/debian/gap-sonata.docs
@@ -0,0 +1 @@
+README.sonata
diff --git a/debian/gap-sonata.install b/debian/gap-sonata.install
new file mode 100644
index 0000000..6277328
--- /dev/null
+++ b/debian/gap-sonata.install
@@ -0,0 +1,9 @@
+PackageInfo.g init.g read.g usr/share/gap/pkg/sonata
+lib usr/share/gap/pkg/sonata
+grp usr/share/gap/pkg/sonata
+nr  usr/share/gap/pkg/sonata
+nri usr/share/gap/pkg/sonata
+tst usr/share/gap/pkg/sonata
+htm usr/share/gap/pkg/sonata
+doc/ref/manual.lab doc/ref/manual.six doc/ref/manual.pdf usr/share/gap/pkg/sonata/doc/ref
+doc/tut/manual.lab doc/tut/manual.six doc/tut/manual.pdf usr/share/gap/pkg/sonata/doc/tut
diff --git a/debian/gap-sonata.links b/debian/gap-sonata.links
new file mode 100644
index 0000000..6c3afa1
--- /dev/null
+++ b/debian/gap-sonata.links
@@ -0,0 +1,2 @@
+usr/share/gap/pkg/sonata/doc usr/share/doc/gap-sonata/doc
+usr/share/gap/pkg/sonata/htm usr/share/doc/gap-sonata/htm
diff --git a/debian/gap-sonata.lintian-overrides b/debian/gap-sonata.lintian-overrides
new file mode 100644
index 0000000..fc882fe
--- /dev/null
+++ b/debian/gap-sonata.lintian-overrides
@@ -0,0 +1 @@
+no-upstream-changelog
diff --git a/debian/patches/debianization-tests.patch b/debian/patches/debianization-tests.patch
new file mode 100644
index 0000000..6aa1d8f
--- /dev/null
+++ b/debian/patches/debianization-tests.patch
@@ -0,0 +1,866 @@
+Description: debianization: tests
+ Essentially meant to maintain both a minimal debian/rules and a minimal
+ debian/test/control by fixing annoying warnings and errors and by addressing
+ Debian specific stuff in general.
+ Precisely, this patch essentially reshapes and refreshes the upstream
+ tst/*.tst by discarding confussing white spaces and reordering the set
+ (implicit computing order, not mathematical order since sets by definition are
+ not oredered contrary to lists). In particular, each input or output holds in
+ one line only (efficient way to eliminate the so confusing end-of-line white
+ spaces).
+ Technically, the Test Files (subsection 7.9 in GAP Reference Manual) have been
+ first rewritten (subsubsection 7.9.2 ibidem, option `rewriteToFile') using a
+ large `width' (idem, option `width') with the help of the ad hoc script
+ debian/adhoc/update-tst.sh , and then the input lines (gap> prompt lines) have
+ been lined up by hand. And so forth.
+Origin: vendor, Debian
+Forwarded: not-needed
+Author: Jerome Benoit <calculus at rezozer.net>
+Last-Update: 2016-12-09
+
+--- a/tst/fpf.tst
++++ b/tst/fpf.tst
+@@ -13,10 +13,8 @@
+ gap> C15 := CyclicGroup( 15 );;
+ gap> FpfAutomorphismGroupsMaxSize( C15 );
+ [ 2, 1 ]
+-gap> aux := FpfAutomorphismGroupsMetacyclic( [3,3,5,5], 4, -1 ); 
+-[ [ [ [ f1, f2, f3, f4 ] -> [ f1^2, f2^3, f3*f4, f3*f4^2 ], 
+-          [ f1, f2, f3, f4 ] -> [ f2^4, f1, f4^2, f3 ] ] ], 
+-  <pc group of size 225 with 4 generators> ]
++gap> aux := FpfAutomorphismGroupsMetacyclic( [3,3,5,5], 4, -1 );
++[ [ [ [ f1, f2, f3, f4 ] -> [ f1^2, f2^3, f3*f4, f3*f4^2 ], [ f1, f2, f3, f4 ] -> [ f2^4, f1, f4^2, f3 ] ] ], <pc group of size 225 with 4 generators> ]
+ gap> phi := Group( aux[1][1] );
+ <group with 2 generators>
+ gap> G := aux[2];
+@@ -32,99 +30,65 @@
+ 6
+ gap> DegreeOfIrredFpfRepMetacyclic( 5, 4, -1 );
+ 2
+-gap> DegreeOfIrredFpfRep2( 7, 30, 11, -1 );    
++gap> DegreeOfIrredFpfRep2( 7, 30, 11, -1 );
+ 8
+-gap> DegreeOfIrredFpfRep3( 5, 3, 1 );                                  
++gap> DegreeOfIrredFpfRep3( 5, 3, 1 );
+ 2
+-gap> DegreeOfIrredFpfRep4( 5, 3, 1, -1 );   
++gap> DegreeOfIrredFpfRep4( 5, 3, 1, -1 );
+ 4
+ gap> aux := FpfRepresentationsCyclic( 5, 8 );
+-[ [ [ [ Z(5)^3, Z(5)^2 ], [ Z(5), Z(5) ] ], 
+-      [ [ Z(5)^2, Z(5) ], [ Z(5)^0, Z(5)^0 ] ] ], [ 1, 7 ] ]
++[ [ [ [ Z(5)^3, Z(5)^2 ], [ Z(5), Z(5) ] ], [ [ Z(5)^2, Z(5) ], [ Z(5)^0, Z(5)^0 ] ] ], [ 1, 7 ] ]
+ gap> mats := aux[1];
+-[ [ [ Z(5)^3, Z(5)^2 ], [ Z(5), Z(5) ] ], 
+-  [ [ Z(5)^2, Z(5) ], [ Z(5)^0, Z(5)^0 ] ] ]
++[ [ [ Z(5)^3, Z(5)^2 ], [ Z(5), Z(5) ] ], [ [ Z(5)^2, Z(5) ], [ Z(5)^0, Z(5)^0 ] ] ]
+ gap> indexlist := aux[2];
+ [ 1, 7 ]
+ gap> aux := FpfRepresentationsMetacyclic( 7, 4, -1 );
+-[ [ [ [ [ Z(7)^2, Z(7) ], [ Z(7), Z(7)^5 ] ], 
+-          [ [ 0*Z(7), Z(7)^3 ], [ Z(7)^0, 0*Z(7) ] ] ] ], [ 1 ] ]
++[ [ [ [ [ Z(7)^2, Z(7) ], [ Z(7), Z(7)^5 ] ], [ [ 0*Z(7), Z(7)^3 ], [ Z(7)^0, 0*Z(7) ] ] ] ], [ 1 ] ]
+ gap> mats := aux[1];
+-[ [ [ [ Z(7)^2, Z(7) ], [ Z(7), Z(7)^5 ] ], 
+-      [ [ 0*Z(7), Z(7)^3 ], [ Z(7)^0, 0*Z(7) ] ] ] ]
++[ [ [ [ Z(7)^2, Z(7) ], [ Z(7), Z(7)^5 ] ], [ [ 0*Z(7), Z(7)^3 ], [ Z(7)^0, 0*Z(7) ] ] ] ]
+ gap> DegreeOfIrredFpfRep2( 11, 30, 11, -1 );
+ 4
+ gap> aux := FpfRepresentations2( 11, 30, 11, -1 );
+-[ [ [ <block matrix of dimensions (2*2)x(2*2)>, 
+-          <block matrix of dimensions (2*2)x(2*2)>, 
+-          <block matrix of dimensions (2*2)x(2*2)> ], 
+-      [ <block matrix of dimensions (2*2)x(2*2)>, 
+-          <block matrix of dimensions (2*2)x(2*2)>, 
+-          <block matrix of dimensions (2*2)x(2*2)> ] ], [ 1, 13 ] ]
++[ [ [ <block matrix of dimensions (2*2)x(2*2)>, <block matrix of dimensions (2*2)x(2*2)>, <block matrix of dimensions (2*2)x(2*2)> ], [ <block matrix of dimensions (2*2)x(2*2)>, <block matrix of dimensions (2*2)x(2*2)>, <block matrix of dimensions (2*2)x(2*2)> ] ], [ 1, 13 ] ]
+ gap> aux := FpfRepresentations3( 5, 3, 1 );
+-[ [ [ [ [ Z(5), 0*Z(5) ], [ 0*Z(5), Z(5)^3 ] ], 
+-          [ [ 0*Z(5), Z(5)^2 ], [ Z(5)^0, 0*Z(5) ] ], 
+-          [ [ Z(5)^3, Z(5)^0 ], [ Z(5), Z(5)^0 ] ] ] ], [ 1 ] ]
++[ [ [ [ [ Z(5), 0*Z(5) ], [ 0*Z(5), Z(5)^3 ] ], [ [ 0*Z(5), Z(5)^2 ], [ Z(5)^0, 0*Z(5) ] ], [ [ Z(5)^3, Z(5)^0 ], [ Z(5), Z(5)^0 ] ] ] ], [ 1 ] ]
+ gap> aux := FpfRepresentations4( 7, 3, 1, -1 );
+-[ [ [ [ [ Z(7)^2, Z(7) ], [ Z(7), Z(7)^5 ] ], 
+-          [ [ 0*Z(7), Z(7)^3 ], [ Z(7)^0, 0*Z(7) ] ], 
+-          [ [ Z(7)^2, 0*Z(7) ], [ Z(7)^0, Z(7)^4 ] ], 
+-          [ [ Z(7)^5, Z(7) ], [ Z(7), Z(7)^2 ] ] ], 
+-      [ [ [ Z(7)^2, Z(7) ], [ Z(7), Z(7)^5 ] ], 
+-          [ [ 0*Z(7), Z(7)^3 ], [ Z(7)^0, 0*Z(7) ] ], 
+-          [ [ Z(7)^2, 0*Z(7) ], [ Z(7)^0, Z(7)^4 ] ], 
+-          [ [ Z(7)^2, Z(7)^4 ], [ Z(7)^4, Z(7)^5 ] ] ] ], 
+-  [ [ 1, 1 ], [ -1, 1 ] ] ]
+-gap> aux := FpfAutomorphismGroupsCyclic( [25,5], 4 ); 
+-[ [ [ f1, f3 ] -> [ f1^2*f2, f3^2 ], [ f1, f3 ] -> [ f1^2*f2, f3^3 ] ], 
+-  <pc group of size 125 with 2 generators> ]
++[ [ [ [ [ Z(7)^2, Z(7) ], [ Z(7), Z(7)^5 ] ], [ [ 0*Z(7), Z(7)^3 ], [ Z(7)^0, 0*Z(7) ] ], [ [ Z(7)^2, 0*Z(7) ], [ Z(7)^0, Z(7)^4 ] ], [ [ Z(7)^5, Z(7) ], [ Z(7), Z(7)^2 ] ] ], [ [ [ Z(7)^2, Z(7) ], [ Z(7), Z(7)^5 ] ], [ [ 0*Z(7), Z(7)^3 ], [ Z(7)^0, 0*Z(7) ] ], [ [ Z(7)^2, 0*Z(7) ], [ Z(7)^0, Z(7)^4 ] ], [ [ Z(7)^2, Z(7)^4 ], [ Z(7)^4, Z(7)^5 ] ] ] ], [ [ 1, 1 ], [ -1, 1 ] ] ]
++gap> aux := FpfAutomorphismGroupsCyclic( [25,5], 4 );
++[ [ [ f1, f3 ] -> [ f1^2*f2, f3^2 ], [ f1, f3 ] -> [ f1^2*f2, f3^3 ] ], <pc group of size 125 with 2 generators> ]
+ gap> as := aux[1];
+ [ [ f1, f3 ] -> [ f1^2*f2, f3^2 ], [ f1, f3 ] -> [ f1^2*f2, f3^3 ] ]
+ gap> G := aux[2];
+ <pc group of size 125 with 2 generators>
+ gap> aux := FpfAutomorphismGroupsMetacyclic( [3,3,5,5], 4, -1 );
+-[ [ [ [ f1, f2, f3, f4 ] -> [ f1^2, f2^3, f3*f4, f3*f4^2 ], 
+-          [ f1, f2, f3, f4 ] -> [ f2^4, f1, f4^2, f3 ] ] ], 
+-  <pc group of size 225 with 4 generators> ]
++[ [ [ [ f1, f2, f3, f4 ] -> [ f1^2, f2^3, f3*f4, f3*f4^2 ], [ f1, f2, f3, f4 ] -> [ f2^4, f1, f4^2, f3 ] ] ], <pc group of size 225 with 4 generators> ]
+ gap> fs := aux[1];
+-[ [ [ f1, f2, f3, f4 ] -> [ f1^2, f2^3, f3*f4, f3*f4^2 ], 
+-      [ f1, f2, f3, f4 ] -> [ f2^4, f1, f4^2, f3 ] ] ]
++[ [ [ f1, f2, f3, f4 ] -> [ f1^2, f2^3, f3*f4, f3*f4^2 ], [ f1, f2, f3, f4 ] -> [ f2^4, f1, f4^2, f3 ] ] ]
+ gap> phi := Group( fs[1] );
+ <group with 2 generators>
+ gap> G := aux[2];
+ <pc group of size 225 with 4 generators>
+ gap> aux := FpfAutomorphismGroupsMetacyclic( [7,7,17,17], 8, -1 );;
+ gap> fs := aux[1];
+-[ [ [ f1, f2, f3, f4 ] -> [ f1^9, f2^2, f3^4*f4^2, f3*f4^6 ], 
+-      [ f1, f2, f3, f4 ] -> [ f2^16, f1, f3^4*f4^5, f3^5*f4^3 ] ], 
+-  [ [ f1, f2, f3, f4 ] -> [ f1^9, f2^2, f3^3*f4^5, f3^6*f4 ], 
+-      [ f1, f2, f3, f4 ] -> [ f2^16, f1, f3^3*f4^4, f3*f4^4 ] ] ]
++[ [ [ f1, f2, f3, f4 ] -> [ f1^9, f2^2, f3^4*f4^2, f3*f4^6 ], [ f1, f2, f3, f4 ] -> [ f2^16, f1, f3^4*f4^5, f3^5*f4^3 ] ], [ [ f1, f2, f3, f4 ] -> [ f1^9, f2^2, f3^3*f4^5, f3^6*f4 ], [ f1, f2, f3, f4 ] -> [ f2^16, f1, f3^3*f4^4, f3*f4^4 ] ] ]
+ gap> phis := List( fs, Group );
+ [ <group with 2 generators>, <group with 2 generators> ]
+ gap> G := aux[2];
+ <pc group of size 14161 with 4 generators>
+ gap> aux := FpfAutomorphismGroups2( [11,11,11,11], 30, 11, -1 );
+-[ [ [ [ f1, f2, f3, f4 ] -> [ f1^5*f2^4, f1^3*f2^10, f3^2*f4^8, f3^6*f4 ], 
+-          [ f1, f2, f3, f4 ] -> [ f1^3*f2^10, f1^10*f2^8, f3^8*f4, f3*f4^3 ], 
+-          [ f1, f2, f3, f4 ] -> [ f3^10, f4^10, f1, f2 ] ] ], 
+-  <pc group of size 14641 with 4 generators> ]
++[ [ [ [ f1, f2, f3, f4 ] -> [ f1^5*f2^4, f1^3*f2^10, f3^2*f4^8, f3^6*f4 ], [ f1, f2, f3, f4 ] -> [ f1^3*f2^10, f1^10*f2^8, f3^8*f4, f3*f4^3 ], [ f1, f2, f3, f4 ] -> [ f3^10, f4^10, f1, f2 ] ] ], <pc group of size 14641 with 4 generators> ]
+ gap> phi := Group( aux[1][1] );
+ <group with 3 generators>
+ gap> G := aux[2];
+ <pc group of size 14641 with 4 generators>
+-gap> aux := FpfAutomorphismGroups3( [5,5], 3, 1 ); 
+-[ [ [ [ f1, f2 ] -> [ f1^2, f2^3 ], [ f1, f2 ] -> [ f2^4, f1 ], 
+-          [ f1, f2 ] -> [ f1^3*f2, f1^2*f2 ] ] ], 
+-  <pc group of size 25 with 2 generators> ]
++gap> aux := FpfAutomorphismGroups3( [5,5], 3, 1 );
++[ [ [ [ f1, f2 ] -> [ f1^2, f2^3 ], [ f1, f2 ] -> [ f2^4, f1 ], [ f1, f2 ] -> [ f1^3*f2, f1^2*f2 ] ] ], <pc group of size 25 with 2 generators> ]
+ gap> phi := Group( aux[1][1] );
+ <group with 3 generators>
+ gap> G := aux[2];
+ <pc group of size 25 with 2 generators>
+ gap> aux := FpfAutomorphismGroups4( [7,7], 3, 1, -1 );
+-[ [ [ [ f1, f2 ] -> [ f1^2*f2^3, f1^3*f2^5 ], [ f1, f2 ] -> [ f2^6, f1 ],
+-          [ f1, f2 ] -> [ f1^2, f1*f2^4 ], 
+-          [ f1, f2 ] -> [ f1^5*f2^3, f1^3*f2^2 ] ] ], 
+-  <pc group of size 49 with 2 generators> ]
++[ [ [ [ f1, f2 ] -> [ f1^2*f2^3, f1^3*f2^5 ], [ f1, f2 ] -> [ f2^6, f1 ], [ f1, f2 ] -> [ f1^2, f1*f2^4 ], [ f1, f2 ] -> [ f1^5*f2^3, f1^3*f2^2 ] ] ], <pc group of size 49 with 2 generators> ]
+ gap> phi := Group( aux[1][1] );
+ <group with 4 generators>
+ gap> G := aux[2];
+@@ -132,30 +96,13 @@
+ gap> IsPairOfDicksonNumbers( 5, 4 );
+ true
+ gap> DicksonNearFields( 5, 4 );
+-[ ExplicitMultiplicationNearRing ( <pc group of size 625 with 
+-    4 generators> , multiplication ), 
+-  ExplicitMultiplicationNearRing ( <pc group of size 625 with 
+-    4 generators> , multiplication ) ]
++[ ExplicitMultiplicationNearRing ( <pc group of size 625 with 4 generators> , multiplication ), ExplicitMultiplicationNearRing ( <pc group of size 625 with 4 generators> , multiplication ) ]
+ gap> NumberOfDicksonNearFields( 5, 4 );
+ 2
+ gap> ExceptionalNearFields( 25 );
+-[ ExplicitMultiplicationNearRing ( <pc group of size 25 with 
+-    2 generators> , multiplication ) ]
++[ ExplicitMultiplicationNearRing ( <pc group of size 25 with 2 generators> , multiplication ) ]
+ gap> AllExceptionalNearFields();
+-[ ExplicitMultiplicationNearRing ( <pc group of size 25 with 
+-    2 generators> , multiplication ), 
+-  ExplicitMultiplicationNearRing ( <pc group of size 49 with 
+-    2 generators> , multiplication ), 
+-  ExplicitMultiplicationNearRing ( <pc group of size 121 with 
+-    2 generators> , multiplication ), 
+-  ExplicitMultiplicationNearRing ( <pc group of size 121 with 
+-    2 generators> , multiplication ), 
+-  ExplicitMultiplicationNearRing ( <pc group of size 529 with 
+-    2 generators> , multiplication ), 
+-  ExplicitMultiplicationNearRing ( <pc group of size 841 with 
+-    2 generators> , multiplication ), 
+-  ExplicitMultiplicationNearRing ( <pc group of size 3481 with 
+-    2 generators> , multiplication ) ]
++[ ExplicitMultiplicationNearRing ( <pc group of size 25 with 2 generators> , multiplication ), ExplicitMultiplicationNearRing ( <pc group of size 49 with 2 generators> , multiplication ), ExplicitMultiplicationNearRing ( <pc group of size 121 with 2 generators> , multiplication ), ExplicitMultiplicationNearRing ( <pc group of size 121 with 2 generators> , multiplication ), ExplicitMultiplicationNearRing ( <pc group of size 529 with 2 generators> , multiplication ), ExplicitMultiplicatio [...]
+ gap> C7 := CyclicGroup( 7 );;
+ gap> i := GroupHomomorphismByFunction( C7, C7, x -> x^-1 );;
+ gap> phi := Group( i );;
+@@ -164,8 +111,7 @@
+ gap> reps := [orbs[2][1], orbs[3][2]];
+ [ f1, f1^5 ]
+ gap> n := PlanarNearRing( C7, phi, reps );
+-ExplicitMultiplicationNearRing ( <pc group of size 7 with 
+-1 generators> , multiplication )
++ExplicitMultiplicationNearRing ( <pc group of size 7 with 1 generators> , multiplication )
+ gap> C7 := CyclicGroup( 7 );;
+ gap> i := GroupHomomorphismByFunction( C7, C7, x -> x^-1 );;
+ gap> phi := Group( i );;
+@@ -176,14 +122,11 @@
+ gap> IsIsomorphicNearRing( n1, n2 );
+ false
+ gap> points := [1..7];;
+-gap> blocks := [[1,2,3],[1,4,5],[1,6,7],[2,4,7],[2,5,6],[3,5,7],       
+->                                                          [3,4,6]];;  
+-gap> D := DesignFromPointsAndBlocks( points, blocks );                 
++gap> blocks := [[1,2,3],[1,4,5],[1,6,7],[2,4,7],[2,5,6],[3,5,7],[3,4,6]];;
++gap> D := DesignFromPointsAndBlocks( points, blocks );
+ <an incidence structure with 7 points and 7 blocks>
+-gap> M := [[1,0,1,1],
+->          [1,1,0,0],
+->          [1,1,1,0]];;
+-gap> DesignFromIncidenceMat( M ); 
++gap> M := [[1,0,1,1],[1,1,0,0],[1,1,1,0]];;
++gap> DesignFromIncidenceMat( M );
+ <an incidence structure with 3 points and 4 blocks>
+ gap> n := LibraryNearRing( GTW9_2, 90 );
+ LibraryNearRing(9/2, 90)
+@@ -194,13 +137,12 @@
+ gap> D2 := DesignFromPlanarNearRing( n, " " );
+ <a 2 - ( 9, 5, 5 ) nearring generated design>
+ gap> aux := FpfAutomorphismGroupsCyclic( [3,3], 4 );
+-[ [ [ f1, f2 ] -> [ f1*f2, f1*f2^2 ] ], 
+-  <pc group of size 9 with 2 generators> ]
++[ [ [ f1, f2 ] -> [ f1*f2, f1*f2^2 ] ], <pc group of size 9 with 2 generators> ]
+ gap> f := aux[1][1];
+ [ f1, f2 ] -> [ f1*f2, f1*f2^2 ]
+ gap> phi := Group( f );
+ <group with 1 generators>
+-gap> G := aux[2]; 
++gap> G := aux[2];
+ <pc group of size 9 with 2 generators>
+ gap> D3 := DesignFromFerreroPair( G, phi, "*" );
+ <a 2 - ( 9, 4, 3 ) nearring generated design>
+@@ -221,15 +163,7 @@
+ [ 2, 9, 18, 8, 4, 3 ]
+ gap> # t = 2, v = 9, b = 18, r = 8, k = 4, lambda = 3
+ gap> M1 := IncidenceMat( D1 );
+-[ [ 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1 ], 
+-  [ 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1 ], 
+-  [ 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0 ], 
+-  [ 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1 ], 
+-  [ 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1 ], 
+-  [ 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0 ], 
+-  [ 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0 ], 
+-  [ 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0 ], 
+-  [ 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0 ] ]
++[ [ 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1 ], [ 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1 ], [ 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0 ], [ 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1 ], [ 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1 ], [ 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0 ], [ 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0 ], [ 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0 ], [ 0, 1, 0, 1, 1, 0, 0, 1, [...]
+ gap> PrintIncidenceMat( D1 );
+ ..1.1.1..1.11..1.1
+ 1...1..11..1.11..1
+@@ -249,25 +183,21 @@
+ gap> IsPointIncidentBlock( D1, 3, 1 );
+ true
+ gap> # point 3 is incident with block 1
+-gap> IsPointIncidentBlock( D1, 3, 2 );       
++gap> IsPointIncidentBlock( D1, 3, 2 );
+ false
+-gap> PointsIncidentBlocks( D1, [1, 4] );                 
++gap> PointsIncidentBlocks( D1, [1, 4] );
+ [ 4, 7 ]
+-gap> # block 1 and block 4 are together incident with 
+-gap> # points 4 and 7
+-gap> BlocksIncidentPoints( D1, [2, 7] );   
++gap> # block 1 and block 4 are together incident with points 4 and 7
++gap> BlocksIncidentPoints( D1, [2, 7] );
+ [ 1, 12, 15 ]
+-gap> # point 2 and point 7 are together incident with     
+-gap> # blocks 1, 12, 15
++gap> # point 2 and point 7 are together incident with blocks 1, 12, 15
+ gap> BlocksOfDesign( D1 ){last};
+-[ [ ((4,5,6)), ((4,6,5)), ((1,2,3)), ((1,3,2)) ], 
+-  [ ((1,3,2)), ((1,3,2)(4,5,6)), (()), ((4,5,6)) ], 
+-  [ ((1,3,2)(4,6,5)), ((1,3,2)), ((4,5,6)), ((1,2,3)(4,5,6)) ] ]
+-gap> # the actual point sets of blocks 1, 12, and 15 
++[ [ ((4,5,6)), ((4,6,5)), ((1,2,3)), ((1,3,2)) ], [ ((1,3,2)), ((1,3,2)(4,5,6)), (()), ((4,5,6)) ], [ ((1,3,2)(4,6,5)), ((1,3,2)), ((4,5,6)), ((1,2,3)(4,5,6)) ] ]
++gap> # the actual point sets of blocks 1, 12, and 15
+ gap> BlocksIncidentPoints( D1, [2, 3, 7] );
+ [ 1 ]
+ gap> # points 2, 3, 7 are together incident with block 1
+ gap> PointsIncidentBlocks( D1, [1] );
+ [ 2, 3, 4, 7 ]
+-gap> # block 1 is incident with points 2, 3, 4, 7 
+-gap> STOP_TEST( "fpf.tst", 10000);
+\ No newline at end of file
++gap> # block 1 is incident with points 2, 3, 4, 7
++gap> STOP_TEST( "fpf.tst", 10000);
+--- a/tst/ideals.tst
++++ b/tst/ideals.tst
+@@ -1,7 +1,7 @@
+ gap> START_TEST("ideals.tst");
+ gap> n := LibraryNearRing( GTW8_4, 12 );
+ LibraryNearRing(8/4, 12)
+-gap> e := AsNearRingElement( n, (1,3)(2,4) );         
++gap> e := AsNearRingElement( n, (1,3)(2,4) );
+ ((1,3)(2,4))
+ gap> r := NearRingRightIdealByGenerators( n, [e] );
+ < nearring right ideal >
+@@ -15,27 +15,21 @@
+ false
+ gap> l = r;
+ false
+-gap> a := GroupReduct( n );                                          
++gap> a := GroupReduct( n );
+ 8/4
+ gap> nsgps := NormalSubgroups( a );
+-[ 8/4, Group([ (1,2,3,4), (1,3)(2,4) ]), Group([ (1,4)(2,3), (1,3)(2,4) ]), 
+-  Group([ (2,4), (1,3)(2,4) ]), Group([ (1,3)(2,4) ]), Group(()) ]
+-gap> l := Filtered( nsgps,                                             
+-> s -> IsSubgroupNearRingRightIdeal( n, s ) );
+-[ 8/4, Group([ (2,4), (1,3)(2,4) ]), Group(()) ]
+-gap> l := List( l,      
+-> s -> NearRingRightIdealBySubgroupNC( n, s ) );
+-[ < nearring right ideal >, < nearring right ideal >, 
+-  < nearring right ideal > ]
++[ Group(()), Group([ (1,3)(2,4) ]), Group([ (1,3)(2,4), (1,2)(3,4) ]), Group([ (1,3)(2,4), (2,4) ]), Group([ (1,2,3,4), (1,3)(2,4) ]), 8/4 ]
++gap> l := Filtered( nsgps, s -> IsSubgroupNearRingRightIdeal( n, s ) );
++[ Group(()), Group([ (1,3)(2,4), (2,4) ]), 8/4 ]
++gap> l := List( l, s -> NearRingRightIdealBySubgroupNC( n, s ) );
++[ < nearring right ideal >, < nearring right ideal >, < nearring right ideal > ]
+ gap> NearRingIdeals( n );
+ [ < nearring ideal >, < nearring ideal >, < nearring ideal > ]
+ gap> NearRingRightIdeals( n );
+-[ < nearring right ideal >, < nearring right ideal >, 
+-  < nearring right ideal > ]
++[ < nearring right ideal >, < nearring right ideal >, < nearring right ideal > ]
+ gap> NearRingLeftIdeals( n );
+-[ < nearring left ideal >, < nearring left ideal >, < nearring left ideal >, 
+-  < nearring left ideal > ]
+-gap> n := LibraryNearRing( GTW6_2, 39 );                    
++[ < nearring left ideal >, < nearring left ideal >, < nearring left ideal >, < nearring left ideal > ]
++gap> n := LibraryNearRing( GTW6_2, 39 );
+ LibraryNearRing(6/2, 39)
+ gap> s := Subgroups( GroupReduct( n ) );;
+ gap> List( s, sg -> IsSubgroupNearRingLeftIdeal( n, sg ) );
+@@ -45,7 +39,7 @@
+ gap> n := LibraryNearRingWithOne( GTW27_2, 5 );
+ LibraryNearRingWithOne(27/2, 5)
+ gap> Filtered( NearRingIdeals( n ), IsPrimeNearRingIdeal );
+-[ < nearring ideal of size 27 >, < nearring ideal of size 9 > ]
++[ < nearring ideal of size 9 >, < nearring ideal of size 27 > ]
+ gap> n := LibraryNearRingWithOne( GTW27_2, 5 );
+ LibraryNearRingWithOne(27/2, 5)
+ gap> Filtered( NearRingIdeals( n ), IsMaximalNearRingIdeal );
+@@ -53,25 +47,23 @@
+ gap> n := LibraryNearRing( GTW8_2, 2 );
+ LibraryNearRing(8/2, 2)
+ gap> li := NearRingLeftIdeals( n );
+-[ < nearring left ideal >, < nearring left ideal >, < nearring left ideal >,
+-  < nearring left ideal >, < nearring left ideal >, < nearring left ideal > ]
++[ < nearring left ideal >, < nearring left ideal >, < nearring left ideal >, < nearring left ideal >, < nearring left ideal >, < nearring left ideal > ]
+ gap> l := LibraryNearRing( GTW6_2, 3 );
+ LibraryNearRing(6/2, 3)
+-gap> i := NearRingIdeals( l );               
++gap> i := NearRingIdeals( l );
+ [ < nearring ideal >, < nearring ideal > ]
+ gap> List( i, Size );
+-[ 6, 1 ]
++[ 1, 6 ]
+ gap> NearRingCommutator( i[2], i[2] );
+-< nearring ideal >
++< nearring ideal of size 6 >
+ gap> l := LibraryNearRing( GTW8_4, 13 );
+ LibraryNearRing(8/4, 13)
+ gap> NearRingIdeals( l );
+ [ < nearring ideal >, < nearring ideal >, < nearring ideal > ]
+-gap> NumberLibraryNearRings( GTW4_2 );                         
++gap> NumberLibraryNearRings( GTW4_2 );
+ 23
+ gap> Filtered( AllLibraryNearRings( GTW4_2 ), IsSimpleNearRing );
+-[ LibraryNearRing(4/2, 3), LibraryNearRing(4/2, 16), LibraryNearRing(4/2, 17)
+- ]
++[ LibraryNearRing(4/2, 3), LibraryNearRing(4/2, 16), LibraryNearRing(4/2, 17) ]
+ gap> n := LibraryNearRing( GTW8_2, 2 );
+ LibraryNearRing(8/2, 2)
+ gap> e := AsNearRingElement( n, (1,2) );
+@@ -86,17 +78,15 @@
+ true
+ gap> i;
+ < nearring ideal of size 4 >
+-gap> f := n/i;          
++gap> f := n/i;
+ FactorNearRing( LibraryNearRing(8/2, 2), < nearring ideal of size 4 > )
+ gap> IdLibraryNearRing(f);
+ [ 2/1, 1 ]
+-gap> G := GTW4_2;                
++gap> G := GTW4_2;
+ 4/2
+ gap> n := MapNearRing( G );
+ TransformationNearRing(4/2)
+-gap> action := function ( g, f )
+-> return Image( f, g );
+-> end;  
++gap> action := function ( g, f ) return Image( f, g ); end;
+ function( g, f ) ... end
+ gap> gamma := NGroup( G, n, action );
+ < N-group of TransformationNearRing(4/2) >
+@@ -180,7 +170,7 @@
+ LibraryNearRing(8/2, 3)
+ gap> gamma := NGroupByNearRingMultiplication( n );
+ < N-group of LibraryNearRing(8/2, 3) >
+-gap> NearRingActingOnNGroup( gamma );                   
++gap> NearRingActingOnNGroup( gamma );
+ LibraryNearRing(8/2, 3)
+ gap> ActionOfNearRingOnNGroup( gamma );
+ function( g, n ) ... end
+@@ -191,17 +181,15 @@
+ gap> Length( N0Subgroups( ng ) );
+ 9
+ gap> NIdeals( ng );
+-[ < N-group of LibraryNearRing(12/3, 20465) >, 
+-  < N-group of LibraryNearRing(12/3, 20465) >, 
+-  < N-group of LibraryNearRing(12/3, 20465) > ]
++[ < N-group of LibraryNearRing(12/3, 20465) >, < N-group of LibraryNearRing(12/3, 20465) >, < N-group of LibraryNearRing(12/3, 20465) > ]
+ gap> TypeOfNGroup( ng );
+ fail
+ gap> N := LibraryNearRing( GTW12_3, 100 );
+ LibraryNearRing(12/3, 100)
+-gap> I := NearRingIdeals( N );            
++gap> I := NearRingIdeals( N );
+ [ < nearring ideal >, < nearring ideal >, < nearring ideal > ]
+ gap> List(I,Size);
+-[ 12, 6, 1 ]
++[ 1, 6, 12 ]
+ gap> NN := NGroupByNearRingMultiplication( N );
+ < N-group of LibraryNearRing(12/3, 100) >
+ gap> NoetherianQuotient( N, NN, GroupReduct(I[2]), GroupReduct(I[2]) );
+@@ -211,15 +199,13 @@
+ gap> f := LibraryNearRing( GTW8_4, 3 );
+ LibraryNearRing(8/4, 3)
+ gap> NuRadicals( f );
+-rec( J0 := < nearring ideal >, J1 := < nearring ideal >, 
+-  J1_2 := < nearring right ideal >, J2 := < nearring ideal > )
++rec( J0 := < nearring ideal >, J1 := < nearring ideal >, J1_2 := < nearring right ideal >, J2 := < nearring ideal > )
+ gap> NuRadical( f, 1/2 );
+ < nearring right ideal >
+-gap> Size( NuRadical( f, 0 ) );  
++gap> Size( NuRadical( f, 0 ) );
+ 8
+ gap> AsList( NuRadical( f, 1 ) );
+-[ (()), ((2,4)), ((1,2)(3,4)), ((1,2,3,4)), ((1,3)), ((1,3)(2,4)), 
+-  ((1,4,3,2)), ((1,4)(2,3)) ]
++[ (()), ((2,4)), ((1,3)(2,4)), ((1,3)), ((1,4,3,2)), ((1,4)(2,3)), ((1,2,3,4)), ((1,2)(3,4)) ]
+ gap> NuRadical( f, 1/2 ) = NuRadical( f, 2 );
+ true
+-gap> STOP_TEST( "tfms.tst", 10000);
+\ No newline at end of file
++gap> STOP_TEST( "tfms.tst", 10000);
+--- a/tst/nr.tst
++++ b/tst/nr.tst
+@@ -1,4 +1,4 @@
+-gap> START_TEST("nr.tst");    
++gap> START_TEST("nr.tst");
+ gap> G := TWGroup( 24, 6 );
+ 24/6
+ gap> mul_l := function ( x, y ) return y; end;
+@@ -12,7 +12,7 @@
+ false
+ gap> IsNearRingMultiplication( G, mul_r, ["closed","ldistr"] );
+ true
+-gap> G := CyclicGroup( 4 );       
++gap> G := CyclicGroup( 4 );
+ <pc group of size 4 with 2 generators>
+ gap> GeneratorsOfGroup( G );
+ [ f1, f2 ]
+@@ -25,10 +25,7 @@
+ [ <identity> of ..., f1, f2, f1*f2 ]
+ gap> # Let:  1 := identity of ..., 2 := f1, 3 := f2, 4 := f1*f2
+ gap> # Consider the following multiplication table on G:
+-gap> OT := [[1, 1, 1, 1],
+-> [1, 4, 3, 2],                                                   
+-> [1, 1, 1, 1],
+-> [1, 2, 3, 4]];;
++gap> OT := [[1, 1, 1, 1],[1, 4, 3, 2],[1, 1, 1, 1],[1, 2, 3, 4]];;
+ gap> mul := NearRingMultiplicationByOperationTable( G, OT, elmlist );
+ function( x, y ) ... end
+ gap> IsNearRingMultiplication( G, mul );
+@@ -37,7 +34,7 @@
+ ExplicitMultiplicationNearRing ( 18/3 , multiplication )
+ gap> n = ExplicitMultiplicationNearRingNC( GTW18_3, mul_l );
+ true
+-gap> IsNearRing( n );                                       
++gap> IsNearRing( n );
+ true
+ gap> IsNearRing( GroupReduct( n ) );
+ false
+@@ -50,15 +47,13 @@
+ gap> z := ExplicitMultiplicationNearRingNC( GTW12_3, zero_mul );
+ ExplicitMultiplicationNearRing ( 12/3 , multiplication )
+ gap> d := DirectProductNearRing( n, z );
+-DirectProductNearRing( ExplicitMultiplicationNearRing ( 18/3 , multiplication \
+-), ExplicitMultiplicationNearRing ( 12/3 , multiplication ) )
++DirectProductNearRing( ExplicitMultiplicationNearRing ( 18/3 , multiplication ), ExplicitMultiplicationNearRing ( 12/3 , multiplication ) )
+ gap> IsExplicitMultiplicationNearRing( d );
+ true
+ gap> n := ExplicitMultiplicationNearRingNC( CyclicGroup( 3 ), mul_l );
+-ExplicitMultiplicationNearRing ( <pc group of size 3 with 
+-1 generators> , multiplication )
++ExplicitMultiplicationNearRing ( <pc group of size 3 with 1 generators> , multiplication )
+ gap> SetSymbols( n, ["0","1","2"] );
+-gap> PrintTable( n );               
++gap> PrintTable( n );
+ Let:
+ 0 := (<identity> of ...)
+ 1 := (f1)
+@@ -75,7 +70,7 @@
+   0  | 0  1  2  
+   1  | 0  1  2  
+   2  | 0  1  2  
+-gap> mul_l := function ( x, y ) return y; end;              
++gap> mul_l := function ( x, y ) return y; end;
+ function( x, y ) ... end
+ gap> n := ExplicitMultiplicationNearRingNC( GTW6_2, mul_l );
+ ExplicitMultiplicationNearRing ( 6/2 , multiplication )
+@@ -91,15 +86,15 @@
+ ((1,3,2))
+ gap> e * f;
+ ((1,3))
+-gap> n := LibraryNearRing( GTW6_2, 39 );                    
++gap> n := LibraryNearRing( GTW6_2, 39 );
+ LibraryNearRing(6/2, 39)
+-gap> e := Enumerator( n );                                  
++gap> e := Enumerator( n );
+ <enumerator of near ring>
+ gap> e[1];
+ (())
+ gap> Length(e);
+ 6
+-gap> AsSortedList( n );                                     
++gap> AsSortedList( n );
+ [ (()), ((2,3)), ((1,2)), ((1,2,3)), ((1,3,2)), ((1,3)) ]
+ gap> n := ExplicitMultiplicationNearRingNC( GTW8_4, mul_l );
+ ExplicitMultiplicationNearRing ( 8/4 , multiplication )
+@@ -112,38 +107,22 @@
+ gap> GroupReduct( LibraryNearRingWithOne( GTW24_3, 8 ) );
+ 24/3
+ gap> Endomorphisms ( LibraryNearRing( GTW12_4, 4 ) ) ;
+-[ [ (1,2,4), (2,3,4) ] -> [ (), () ], 
+-  [ (1,2,4), (2,3,4) ] -> [ (1,2,4), (2,3,4) ] ]
++[ [ (1,2,4), (2,3,4) ] -> [ (), () ], [ (1,2,4), (2,3,4) ] -> [ (1,2,4), (2,3,4) ] ]
+ gap> Length( Endomorphisms( GTW12_4 ) );
+ 33
+ gap> Automorphisms( LibraryNearRing( GTW12_4, 4 ) );
+-[ IdentityMapping( 12/4 ) ]
+-gap> IsIsomorphicNearRing( MapNearRing( GTW2_1 ),                       
+-> LibraryNearRingWithOne( GTW4_2, 5 ) );
++[ ^() ]
++gap> IsIsomorphicNearRing( MapNearRing( GTW2_1 ),LibraryNearRingWithOne( GTW4_2, 5 ) );
+ true
+ gap> n := LibraryNearRing( GTW12_4, 8 );
+ LibraryNearRing(12/4, 8)
+ gap> SubNearRings( n );
+-[ ExplicitMultiplicationNearRing ( Group(()) , multiplication ),
+-  ExplicitMultiplicationNearRing ( Group([ (1,4)(2,3) ]) , multiplication ),
+-  ExplicitMultiplicationNearRing ( Group([ (1,2)(3,4) ]) , multiplication ),
+-  ExplicitMultiplicationNearRing ( Group([ (2,3,4) ]) , multiplication ),
+-  ExplicitMultiplicationNearRing ( Group([ (1,2,4) ]) , multiplication ),
+-  ExplicitMultiplicationNearRing ( Group([ (1,3,2) ]) , multiplication ),
+-  ExplicitMultiplicationNearRing ( Group([ (1,4,3) ]) , multiplication ),
+-  ExplicitMultiplicationNearRing ( Group([ (1,4)(2,3), (1,3)(2,4)
+-     ]) , multiplication ), ExplicitMultiplicationNearRing ( Group(
+-    [ (1,4)(2,3), (1,3)(2,4), (2,3,4) ]) , multiplication ) ]
++[ ExplicitMultiplicationNearRing ( Group(()) , multiplication ), ExplicitMultiplicationNearRing ( Group([ (1,4)(2,3) ]) , multiplication ), ExplicitMultiplicationNearRing ( Group([ (1,2)(3,4) ]) , multiplication ), ExplicitMultiplicationNearRing ( Group([ (2,3,4) ]) , multiplication ), ExplicitMultiplicationNearRing ( Group([ (1,2,4) ]) , multiplication ), ExplicitMultiplicationNearRing ( Group([ (1,3,2) ]) , multiplication ), ExplicitMultiplicationNearRing ( Group([ (1,4,3) ]) , multip [...]
+ gap> n := LibraryNearRing( GTW12_4, 8 );
+ LibraryNearRing(12/4, 8)
+ gap> i := InvariantSubNearRings( n );
+-[ ExplicitMultiplicationNearRing ( Group(()) , multiplication ),
+-  ExplicitMultiplicationNearRing ( Group([ (1,2)(3,4) ]) , multiplication ),
+-  ExplicitMultiplicationNearRing ( Group([ (2,3,4) ]) , multiplication ),
+-  ExplicitMultiplicationNearRing ( Group([ (1,4,3) ]) , multiplication ),
+-  ExplicitMultiplicationNearRing ( Group([ (1,4)(2,3), (1,3)(2,4), (2,3,4)
+-     ]) , multiplication ) ]
+-gap> n := LibraryNearRing( GTW12_4, 8 );            
++[ ExplicitMultiplicationNearRing ( Group(()) , multiplication ), ExplicitMultiplicationNearRing ( Group([ (1,2)(3,4) ]) , multiplication ), ExplicitMultiplicationNearRing ( Group([ (2,3,4) ]) , multiplication ), ExplicitMultiplicationNearRing ( Group([ (1,4,3) ]) , multiplication ), ExplicitMultiplicationNearRing ( Group([ (1,4)(2,3), (1,3)(2,4), (2,3,4) ]) , multiplication ) ]
++gap> n := LibraryNearRing( GTW12_4, 8 );
+ LibraryNearRing(12/4, 8)
+ gap> S := Subgroup( GTW12_4, [ (1,2)(3,4) ] );
+ Group([ (1,2)(3,4) ])
+@@ -152,41 +131,28 @@
+ gap> n := LibraryNearRingWithOne( GTW27_4, 5 );
+ LibraryNearRingWithOne(27/4, 5)
+ gap> si := Filtered( SubNearRings( n ), s -> Identity( n ) in s );
+-[ ExplicitMultiplicationNearRing ( Group(
+-    [ (1,23,14)(2,13,6)(3,27,22)(4,18,9)(5,20,12)(7,16,26)(8,25,17)(10,21,
+-        19)(11,24,15) ]) , multiplication ), 
+-  ExplicitMultiplicationNearRing ( Group(
+-    [ (1,22,16)(2,12,21)(3,26,23)(4,17,11)(5,19,13)(6,20,10)(7,14,27)(8,24,
+-        18)(9,25,15), (1,26,27)(2,19,20)(3,14,16)(4,24,25)(5,6,21)(7,22,23)(8,
+-        9,11)(10,12,13)(15,17,18) ]) , multiplication ), 
+-  ExplicitMultiplicationNearRing ( Group(
+-    [ (1,6,15)(2,9,7)(3,13,25)(4,14,10)(5,18,27)(8,23,20)(11,22,19)(12,24,
+-        16)(17,26,21), (1,5,17)(2,8,22)(3,12,4)(6,18,26)(7,20,11)(9,23,19)(10,
+-        25,16)(13,24,14)(15,27,21), (1,2,4)(3,6,11)(5,9,16)(7,13,17)(8,14,
+-        21)(10,18,22)(12,15,23)(19,24,26)(20,25,27) ]) , multiplication ) ]
++[ ExplicitMultiplicationNearRing ( Group([ (1,23,14)(2,13,6)(3,27,22)(4,18,9)(5,20,12)(7,16,26)(8,25,17)(10,21,19)(11,24,15) ]) , multiplication ), ExplicitMultiplicationNearRing ( Group([ (1,22,16)(2,12,21)(3,26,23)(4,17,11)(5,19,13)(6,20,10)(7,14,27)(8,24,18)(9,25,15), (1,26,27)(2,19,20)(3,14,16)(4,24,25)(5,6,21)(7,22,23)(8,9,11)(10,12,13)(15,17,18) ]) , multiplication ), ExplicitMultiplicationNearRing ( Group([ (1,6,15)(2,9,7)(3,13,25)(4,14,10)(5,18,27)(8,23,20)(11,22,19)(12,24,16)(1 [...]
+ gap> Intersection( si );
+-ExplicitMultiplicationNearRing ( Group(
+-[ (1,23,14)(2,13,6)(3,27,22)(4,18,9)(5,20,12)(7,16,26)(8,25,17)(10,21,19)(11,
+-    24,15) ]) , multiplication )
++ExplicitMultiplicationNearRing ( Group([ (1,23,14)(2,13,6)(3,27,22)(4,18,9)(5,20,12)(7,16,26)(8,25,17)(10,21,19)(11,24,15) ]) , multiplication )
+ gap> Size( last );
+ 3
+-gap> n := LibraryNearRing( GTW12_4, 8 );            
++gap> n := LibraryNearRing( GTW12_4, 8 );
+ LibraryNearRing(12/4, 8)
+ gap> Identity( n );
+ fail
+ gap> One( n );
+ fail
+-gap> n := LibraryNearRingWithOne( GTW24_4, 8 ); 
++gap> n := LibraryNearRingWithOne( GTW24_4, 8 );
+ LibraryNearRingWithOne(24/4, 8)
+ gap> Identity( n );
+ ((1,2,3,4,5,6)(7,8))
+ gap> One( n );
+ ((1,2,3,4,5,6)(7,8))
+-gap> n := LibraryNearRing( GTW12_4, 8 );             
++gap> n := LibraryNearRing( GTW12_4, 8 );
+ LibraryNearRing(12/4, 8)
+ gap> IsNearRingWithOne( n );
+ false
+-gap> n := LibraryNearRingWithOne( GTW24_4, 8 ); 
++gap> n := LibraryNearRingWithOne( GTW24_4, 8 );
+ LibraryNearRingWithOne(24/4, 8)
+ gap> Identity( n );
+ ((1,2,3,4,5,6)(7,8))
+@@ -194,31 +160,26 @@
+ false
+ gap> n := LibraryNearRingWithOne( GTW24_4, 8 );
+ LibraryNearRingWithOne(24/4, 8)
+-gap> NearRingUnits( n );    
++gap> NearRingUnits( n );
+ [ ((1,2,3,4,5,6)(7,8)), ((1,6,5,4,3,2)(7,8)) ]
+-gap> n := LibraryNearRing( GTW12_4, 8 );             
++gap> n := LibraryNearRing( GTW12_4, 8 );
+ LibraryNearRing(12/4, 8)
+ gap> IsNearRingWithOne( n );
+ false
+ gap> Distributors( n );
+-[ (()), ((2,3,4)), ((2,4,3)), ((1,2)(3,4)), ((1,2,3)), ((1,2,4)), ((1,3,2)), 
+-  ((1,3,4)), ((1,3)(2,4)), ((1,4,2)), ((1,4,3)), ((1,4)(2,3)) ]
++[ (()), ((2,3,4)), ((2,4,3)), ((1,2)(3,4)), ((1,2,3)), ((1,2,4)), ((1,3,2)), ((1,3,4)), ((1,3)(2,4)), ((1,4,2)), ((1,4,3)), ((1,4)(2,3)) ]
+ gap> DistributiveElements( n );
+ [ (()) ]
+ gap> IsDistributiveNearRing( n );
+ false
+ gap> ZeroSymmetricElements( n );
+-[ (()), ((2,3,4)), ((2,4,3)), ((1,2)(3,4)), ((1,2,3)), ((1,2,4)), ((1,3,2)), 
+-  ((1,3,4)), ((1,3)(2,4)), ((1,4,2)), ((1,4,3)), ((1,4)(2,3)) ]
++[ (()), ((2,3,4)), ((2,4,3)), ((1,2)(3,4)), ((1,2,3)), ((1,2,4)), ((1,3,2)), ((1,3,4)), ((1,3)(2,4)), ((1,4,2)), ((1,4,3)), ((1,4)(2,3)) ]
+ gap> IdempotentElements( n );
+ [ (()), ((1,4)(2,3)) ]
+ gap> NilpotentElements( n );
+-[ [ (()), 1 ], [ ((2,3,4)), 2 ], [ ((2,4,3)), 2 ], [ ((1,2)(3,4)), 2 ], 
+-  [ ((1,2,3)), 2 ], [ ((1,2,4)), 2 ], [ ((1,3,2)), 2 ], [ ((1,3,4)), 2 ], 
+-  [ ((1,4,2)), 2 ], [ ((1,4,3)), 2 ] ]
++[ [ (()), 1 ], [ ((2,3,4)), 2 ], [ ((2,4,3)), 2 ], [ ((1,2)(3,4)), 2 ], [ ((1,2,3)), 2 ], [ ((1,2,4)), 2 ], [ ((1,3,2)), 2 ], [ ((1,3,4)), 2 ], [ ((1,4,2)), 2 ], [ ((1,4,3)), 2 ] ]
+ gap> QuasiregularElements( n );
+-[ (()), ((2,3,4)), ((2,4,3)), ((1,2)(3,4)), ((1,2,3)), ((1,2,4)), ((1,3,2)), 
+-  ((1,3,4)), ((1,3)(2,4)), ((1,4,2)), ((1,4,3)) ]
++[ (()), ((2,3,4)), ((2,4,3)), ((1,2)(3,4)), ((1,2,3)), ((1,2,4)), ((1,3,2)), ((1,3,4)), ((1,3)(2,4)), ((1,4,2)), ((1,4,3)) ]
+ gap> RegularElements( n );
+ [ (()), ((1,3)(2,4)), ((1,4)(2,3)) ]
+ gap> IsAbelianNearRing( n );
+@@ -245,19 +206,18 @@
+ false
+ gap> IsRegularNearRing( n );
+ false
+-gap> IsNearField( n );                        
+-false    
++gap> IsNearField( n );
++false
+ gap> n := LibraryNearRing( GTW9_2, 90 );
+ LibraryNearRing(9/2, 90)
+-gap> IsPlanarNearRing( n );     
++gap> IsPlanarNearRing( n );
+ true
+ gap> nr := LibraryNearRing( GTW9_1, 185 );
+ LibraryNearRing(9/1, 185)
+ gap> IsWdNearRing( nr );
+ true
+ gap> l := AllLibraryNearRings( GTW3_1 );
+-[ LibraryNearRing(3/1, 1), LibraryNearRing(3/1, 2), LibraryNearRing(3/1, 3), 
+-  LibraryNearRing(3/1, 4), LibraryNearRing(3/1, 5) ]
++[ LibraryNearRing(3/1, 1), LibraryNearRing(3/1, 2), LibraryNearRing(3/1, 3), LibraryNearRing(3/1, 4), LibraryNearRing(3/1, 5) ]
+ gap> Filtered( l, IsNearField );
+ [ LibraryNearRing(3/1, 3) ]
+ gap> NumberLibraryNearRings( GTW14_2 );
+@@ -284,13 +244,8 @@
+ [ 9/2, 220 ]
+ gap> l := LibraryNearRingWithOne( GTW12_3, 1 );
+ LibraryNearRingWithOne(12/3, 1)
+-gap> IdLibraryNearRingWithOne( l );           
++gap> IdLibraryNearRingWithOne( l );
+ [ 12/3, 1 ]
+ gap> IsLibraryNearRing( LNwI24_4_8 );
+ true
+ gap> STOP_TEST( "nr.tst", 10000);
+-
+-
+-
+-
+-
+--- a/tst/tfms.tst
++++ b/tst/tfms.tst
+@@ -28,18 +28,14 @@
+ gap> IsEndoMapping ( InnerAutomorphisms ( GTW6_2 ) [3] );
+ true
+ gap> AsList ( UnderlyingRelation ( IdentityEndoMapping ( Group ((1,2,3,4)) ) ) );
+-[ DirectProductElement( [ (), () ] ), DirectProductElement( [ (1,2,3,4), 
+-    (1,2,3,4) ] ), DirectProductElement( [ (1,3)(2,4), (1,3)(2,4) ] ), 
+-  DirectProductElement( [ (1,4,3,2), (1,4,3,2) ] ) ]
++[ DirectProductElement( [ (), () ] ), DirectProductElement( [ (1,2,3,4), (1,2,3,4) ] ), DirectProductElement( [ (1,3)(2,4), (1,3)(2,4) ] ), DirectProductElement( [ (1,4,3,2), (1,4,3,2) ] ) ]
+ gap> C3 := CyclicGroup (3);
+ <pc group of size 3 with 1 generators>
+ gap> m := ConstantEndoMapping (C3, AsSortedList (C3) [2]);
+-MappingByFunction( <pc group of size 3 with 1 generators>, <pc group of size 
+-3 with 1 generators>, function( x ) ... end )
++MappingByFunction( <pc group of size 3 with 1 generators>, <pc group of size 3 with 1 generators>, function( x ) ... end )
+ gap> List (AsList (C3), x -> Image (m, x));
+ [ f1, f1, f1 ]
+-gap> IsIdentityEndoMapping (EndoMappingByFunction ( 
+-> AlternatingGroup ( [1..5] ), x -> x^31));
++gap> IsIdentityEndoMapping (EndoMappingByFunction ( AlternatingGroup ( [1..5] ), x -> x^31));
+ true
+ gap> C3 := CyclicGroup ( 3 );
+ <pc group of size 3 with 1 generators>
+@@ -65,11 +61,9 @@
+ <mapping: SymmetricGroup( [ 1 .. 3 ] ) -> SymmetricGroup( [ 1 .. 3 ] ) >
+ gap> AsSortedList ( G );
+ [ (), (2,3), (1,2), (1,2,3), (1,3,2), (1,3) ]
+-gap> List ( AsSortedList (G), 
+->              x -> Image ( identityOnG * invertingOnG, x ));
++gap> List ( AsSortedList (G), x -> Image ( identityOnG * invertingOnG, x ));
+ [ (), (2,3), (1,2), (1,3,2), (1,2,3), (1,3) ]
+-gap> List ( AsSortedList (G),
+->              x -> Image ( identityOnG + invertingOnG, x ));
++gap> List ( AsSortedList (G), x -> Image ( identityOnG + invertingOnG, x ));
+ [ (), (), (), (), (), () ]
+ gap> IsIdentityEndoMapping ( - invertingOnG );
+ true
+@@ -78,27 +72,22 @@
+ gap> G := SymmetricGroup ( 3 );
+ Sym( [ 1 .. 3 ] )
+ gap> m := ConstantEndoMapping (G, (1,2,3)) + IdentityEndoMapping( G );
+-MappingByFunction( Sym( [ 1 .. 3 ] ), Sym( [ 1 .. 3 ] ), function( g ) ... end\
+- )
++MappingByFunction( Sym( [ 1 .. 3 ] ), Sym( [ 1 .. 3 ] ), function( g ) ... end )
+ gap> PrintArray( GraphOfMapping( m ) );
+ [ [       (),  (1,2,3) ],
+   [    (2,3),    (1,3) ],
+-  [    (1,2),    (2,3) ],
+-  [  (1,2,3),  (1,3,2) ],
++  [    (1,3),    (1,2) ],
+   [  (1,3,2),       () ],
+-  [    (1,3),    (1,2) ] ]
++  [  (1,2,3),  (1,3,2) ],
++  [    (1,2),    (2,3) ] ]
+ gap> g := AlternatingGroup ( 4 );
+ Alt( [ 1 .. 4 ] )
+ gap> AsSortedList ( g );
+-[ (), (2,3,4), (2,4,3), (1,2)(3,4), (1,2,3), (1,2,4), (1,3,2), (1,3,4),
+-  (1,3)(2,4), (1,4,2), (1,4,3), (1,4)(2,3) ]
++[ (), (2,3,4), (2,4,3), (1,2)(3,4), (1,2,3), (1,2,4), (1,3,2), (1,3,4), (1,3)(2,4), (1,4,2), (1,4,3), (1,4)(2,3) ]
+ gap> t := EndoMappingByPositionList ( g, [1,3,4,5,2,1,1,1,1,1,1,1] );
+ <mapping: AlternatingGroup( [ 1 .. 4 ] ) -> AlternatingGroup( [ 1 .. 4 ] ) >
+ gap> m := TransformationNearRingByGenerators ( g, [t] );
+-TransformationNearRingByGenerators(
+-[ 
+-  <mapping: AlternatingGroup( [ 1 .. 4 ] ) -> AlternatingGroup( [ 1 .. 4 ] ) > 
+- ])
++TransformationNearRingByGenerators([ <mapping: AlternatingGroup( [ 1 .. 4 ] ) -> AlternatingGroup( [ 1 .. 4 ] ) > ])
+ gap> Size (m); # may take a few moments
+ 20736
+ gap> IsCommutative ( m );
+@@ -119,9 +108,7 @@
+ <pc group of size 4 with 2 generators>
+ gap> m := MapNearRing ( g );
+ TransformationNearRing(<pc group of size 4 with 2 generators>)
+-gap> gens := Filtered ( AsList ( m ), 
+->       f -> IsFullTransformationNearRing ( 
+->               TransformationNearRingByGenerators ( g, [ f ] )));;
++gap> gens := Filtered ( AsList ( m ), f -> IsFullTransformationNearRing ( TransformationNearRingByGenerators ( g, [ f ] )));;
+ gap> Length(gens);
+ 12
+ gap> P := PolynomialNearRing ( GTW16_6 );
+@@ -146,10 +133,7 @@
+ <mapping: AlternatingGroup( [ 1 .. 4 ] ) -> AlternatingGroup( [ 1 .. 4 ] ) >
+ gap> graph := List ( AsList ( AlternatingGroup ( 4 ) ),
+ > x -> [x, Image (m, x)] );
+-[ [ (), () ], [ (2,3,4), (1,2,3) ], [ (2,4,3), (2,3,4) ], 
+-  [ (1,2)(3,4), (1,2)(3,4) ], [ (1,2,3), (1,2,4) ], [ (1,2,4), (1,4,2) ], 
+-  [ (1,3,2), (1,3,4) ], [ (1,3,4), (1,3,2) ], [ (1,3)(2,4), (1,3)(2,4) ], 
+-  [ (1,4,2), (1,4,3) ], [ (1,4,3), (2,4,3) ], [ (1,4)(2,3), (1,4)(2,3) ] ]
++[ [ (), () ], [ (2,3,4), (1,2,3) ], [ (2,4,3), (2,3,4) ], [ (1,2)(3,4), (1,2)(3,4) ], [ (1,2,3), (1,2,4) ], [ (1,2,4), (1,4,2) ], [ (1,3,2), (1,3,4) ], [ (1,3,4), (1,3,2) ], [ (1,3)(2,4), (1,3)(2,4) ], [ (1,4,2), (1,4,3) ], [ (1,4,3), (2,4,3) ], [ (1,4)(2,3), (1,4)(2,3) ] ]
+ gap> autos := Automorphisms ( GTW8_4 );;
+ gap> C := CentralizerNearRing ( GTW8_4, autos );
+ CentralizerNearRing( 8/4, ... )
+@@ -158,25 +142,18 @@
+ gap> Size ( C0 );
+ 32
+ gap> Is := NearRingIdeals ( C0 );
+-[ < nearring ideal >, < nearring ideal >, < nearring ideal >,
+-  < nearring ideal >, < nearring ideal >, < nearring ideal >,
+-  < nearring ideal >, < nearring ideal >, < nearring ideal >,
+-  < nearring ideal >, < nearring ideal >, < nearring ideal >,
+-  < nearring ideal > ]
++[ < nearring ideal >, < nearring ideal >, < nearring ideal >, < nearring ideal >, < nearring ideal >, < nearring ideal >, < nearring ideal >, < nearring ideal >, < nearring ideal >, < nearring ideal >, < nearring ideal >, < nearring ideal >, < nearring ideal > ]
+ gap> G := GTW16_8;
+ 16/8
+-gap> U := First ( NormalSubgroups ( G ),
+->              x -> Size (x) = 2 );
++gap> U := First ( NormalSubgroups ( G ), x -> Size (x) = 2 );
+ Group([ (1,5)(2,10)(3,11)(4,12)(6,15)(7,16)(8,9)(13,14) ])
+ gap> HGU := RestrictedEndomorphismNearRing (G, U);
+-RestrictedEndomorphismNearRing( 16/8, Group(
+-[ (1,5)(2,10)(3,11)(4,12)(6,15)(7,16)(8,9)(13,14) ]) )
++RestrictedEndomorphismNearRing( 16/8, Group([ (1,5)(2,10)(3,11)(4,12)(6,15)(7,16)(8,9)(13,14) ]) )
+ gap> Size (HGU);
+ 8
+ gap> IsDistributiveNearRing ( HGU );
+ true
+-gap> Filtered ( AsList ( HGU),
+->       x -> x = x * x );
++gap> Filtered ( AsList ( HGU), x -> x = x * x );
+ [ <mapping: 16/8 -> 16/8 > ]
+ gap> P := PolynomialNearRing ( GTW8_5 );
+ PolynomialNearRing( 8/5 )
+@@ -197,9 +174,7 @@
+ gap> P := PolynomialNearRing ( GTW4_2 );
+ PolynomialNearRing( 4/2 )
+ gap> n := AsExplicitMultiplicationNearRing ( P );
+-ExplicitMultiplicationNearRing ( Group(
+-[ (1,2)(5,6)(9,10)(13,14), (3,4)(7,8)(11,12)(15,16), 
+-  (7,8)(9,10)(13,14)(15,16) ]) , multiplication )
++ExplicitMultiplicationNearRing ( Group([ (1,2)(5,6)(9,10)(13,14), (3,4)(7,8)(11,12)(15,16), (7,8)(9,10)(13,14)(15,16) ]) , multiplication )
+ gap> G := SymmetricGroup ( 4 );
+ Sym( [ 1 .. 4 ] )
+ gap> V := First ( NormalSubgroups ( G ), x -> Size ( x ) = 4 );
+@@ -234,4 +209,4 @@
+ < transformation nearring with 3 generators >
+ gap> I = Zp;
+ true
+-gap> STOP_TEST( "tfms.tst", 10000);
+\ No newline at end of file
++gap> STOP_TEST( "tfms.tst", 10000);
+--- a/PackageInfo.g
++++ b/PackageInfo.g
+@@ -428,7 +428,7 @@
+ 
+ ##  *Optional*, but recommended: path relative to package root to a file which 
+ ##  contains as many tests of the package functionality as sensible.
+-#TestFile := "tst/testall.g",
++TestFile := "tst/testall.g",
+ 
+ ##  *Optional*: Here you can list some keyword related to the topic 
+ ##  of the package.
+--- /dev/null
++++ b/tst/testall.g
+@@ -0,0 +1,7 @@
++LoadPackage("autpgrp");
++LoadPackage("sonata");
++dirs := DirectoriesPackageLibrary("sonata","tst");
++Test(Filename(dirs,"fpf.tst"),rec(width:=2048));
++Test(Filename(dirs,"ideals.tst"),rec(width:=2048));
++Test(Filename(dirs,"nr.tst"),rec(width:=2048));
++Test(Filename(dirs,"tfms.tst"),rec(width:=2048));
diff --git a/debian/patches/debianization.patch b/debian/patches/debianization.patch
new file mode 100644
index 0000000..1729bdc
--- /dev/null
+++ b/debian/patches/debianization.patch
@@ -0,0 +1,79 @@
+Description: debianization
+ Meant to maintain a minimal debian/rules, to fix annoying
+ warnings, to address Debian specific stuff in general.
+Origin: vendor, Debian
+Forwarded: not-needed
+Author: Jerome Benoit <calculus at rezozer.net>
+Last-Update: 2016-12-09
+
+--- a/doc/ref/manual.tex
++++ b/doc/ref/manual.tex
+@@ -1,4 +1,4 @@
+-\input ../gapmacro
++\input gapmacro
+ \usecmfonts
+ \BeginningOfBook{sonata}
+   \TitlePage{
+--- a/doc/tut/manual.tex
++++ b/doc/tut/manual.tex
+@@ -1,4 +1,4 @@
+-\input ../gapmacro
++\input gapmacro
+ \usecmfonts
+ \BeginningOfBook{etudes}
+   \TitlePage{
+--- a/doc/make_doc
++++ b/doc/make_doc
+@@ -4,32 +4,42 @@
+ #W  make_doc        make SONATA Package documentation     Alexander Hulpke
+ ##
+ 
++GAPDATADIR=/usr/share/gap
++
++TEXINPUTS=$GAPDATADIR/etc:${TEXINPUTS}
++export TEXINPUTS
++
++PDFTEX='/usr/bin/pdftex -no-shell-escape -interaction batchmode'
++BIBTEX=/usr/bin/bibtex
++GAPMANUALINDEX=$GAPDATADIR/etc/manualindex
++GAPCONVERT=$GAPDATADIR/etc/convert.pl
++
+ echo "TeXing documentation:ref"
+ # TeX the manual and build its bibliography
+ # CAVEAT: For version 2.4 manualindex did not produce a proper file manual.mst
+ # for the reference-manual, hence no index. Copying manual.mst for the
+ # tutorial-manual into the directory ref/ did the trick.
+-(cd ref;tex manual;bibtex manual\
+-tex manual; ../../doc/manualindex manual\
+-tex manual;pdftex manual;pdftex manual)
++(cd ref; $PDFTEX manual; $BIBTEX manual;\
++$PDFTEX manual; $GAPMANUALINDEX manual;\
++$PDFTEX manual; $PDFTEX manual; $PDFTEX manual;)
+ 
+ echo "TeXing documentation:tut"
+-(cd tut;tex manual;bibtex manual\
+-tex manual; ../../doc/manualindex manual\
+-tex manual;pdftex manual;pdftex manual)
++(cd tut; $PDFTEX manual; $BIBTEX manual;\
++$PDFTEX manual; $GAPMANUALINDEX manual;\
++$PDFTEX manual; $PDFTEX manual; $PDFTEX manual;)
+ 
+ # The HTML version of the manual
+ mkdir -p ../htm
+ mkdir -p ../htm/ref
+ mkdir -p ../htm/tut
+ echo "Creating HTML documentation:ref"
+-(cd ref;../convert.pl -t -c -n SONATA . ../../htm/ref)
+-(cd ../htm/ref;for d in *.htm; do sed 's/cite\([^ .,]\+\)/[\1]/g' < $d > tmp; cp tmp $d; done; rm -f tmp)
++(cd ref; $GAPCONVERT -t -c -n SONATA . ../../htm/ref)
++(cd ../htm/ref; for d in *.htm; do sed 's/cite\([^ .,]\+\)/[\1]/g' < $d > tmp; cp tmp $d; done; rm -f tmp;)
+ 
+ #(cd ref;/home/staff/juergen/SSOONNAATTAA/gap/etc/convert.pl -t -c -n SONATA . ../../htm/ref)
+ echo "Creating HTML documentation:tut"
+-(cd tut;../convert.pl -t -c -n SONATA-tutorial . ../../htm/tut)
+-(cd ../htm/tut;for d in *.htm; do sed 's/cite\([^ .,]\+\)/[\1]/g' < $d > tmp; cp tmp $d; done; rm -f tmp)
++(cd tut; $GAPCONVERT -t -c -n SONATA-tutorial . ../../htm/tut)
++(cd ../htm/tut; for d in *.htm; do sed 's/cite\([^ .,]\+\)/[\1]/g' < $d > tmp; cp tmp $d; done; rm -f tmp;)
+ #(cd tut;/home/staff/juergen/SSOONNAATTAA/gap/etc/convert.pl -t -c -n SONATA-tutorial . ../../htm/tut)
+ #########################################################################
+ ##
diff --git a/debian/patches/series b/debian/patches/series
new file mode 100644
index 0000000..9b5890f
--- /dev/null
+++ b/debian/patches/series
@@ -0,0 +1,2 @@
+debianization.patch
+debianization-tests.patch
diff --git a/debian/rules b/debian/rules
new file mode 100755
index 0000000..c149c47
--- /dev/null
+++ b/debian/rules
@@ -0,0 +1,32 @@
+#!/usr/bin/make -f
+
+GAP=/usr/bin/gap
+
+DEB_PKG_VERSION = $(shell dpkg-parsechangelog -S Version)
+DEB_BUILD_GAP_PKGINFO_DATE = $(shell sed -n 's|^Date[ ]*:=[ ]*\"\([0-9]*\)/\([0-9]*\)/20\([0-9]*\)\",|20\3-\2-\1|p' PackageInfo.g)
+
+export GAP_CONVERT_DATE = $(shell LC_ALL=C date -u -d $(DEB_BUILD_GAP_PKGINFO_DATE) +"%B %Y (Debian $(DEB_PKG_VERSION))")
+
+default:
+	@uscan --no-conf --dehs --report || true
+
+%:
+	dh $@
+
+override_dh_auto_build:
+	cd doc && sh make_doc
+
+override_dh_auto_test:
+	echo "\
+		SetPackagePath(\"sonata\",\".\"); \
+		LoadPackage(\"autpgrp\"); \
+		LoadPackage(\"sonata\"); \
+		QUIT_GAP(TestDirectory(\"tst\",rec(testOptions:=rec(width:=2048)))); \
+		" | $(GAP) -A -q -T
+
+override_dh_compress:
+	cd $(CURDIR)/debian/gap-sonata/usr/share/gap/pkg/sonata && gzip --recursive --no-name --best nr nri grp
+	dh_compress
+
+get-orig-source:
+	uscan --no-conf --download-current-version --compression xz --verbose
diff --git a/debian/source/format b/debian/source/format
new file mode 100644
index 0000000..163aaf8
--- /dev/null
+++ b/debian/source/format
@@ -0,0 +1 @@
+3.0 (quilt)
diff --git a/debian/source/lintian-overrides b/debian/source/lintian-overrides
new file mode 100644
index 0000000..8b06cb1
--- /dev/null
+++ b/debian/source/lintian-overrides
@@ -0,0 +1 @@
+debian-watch-may-check-gpg-signature
diff --git a/debian/tests/control b/debian/tests/control
new file mode 100644
index 0000000..0b322d9
--- /dev/null
+++ b/debian/tests/control
@@ -0,0 +1 @@
+Test-command: echo "QUIT_GAP(TestDirectory(\"debian/tests\"));" | gap -A -q -T
diff --git a/debian/tests/makecheck.tst b/debian/tests/makecheck.tst
new file mode 100644
index 0000000..41a66e6
--- /dev/null
+++ b/debian/tests/makecheck.tst
@@ -0,0 +1,11 @@
+## debian/tests/makecheck.tst -- GAP Test script
+## script format: GAP Reference Manual section 7.9 Test Files (GAP 4r8)
+##
+gap> TestPackageAvailability( "sonata" , "=2.8" , true );
+"/usr/share/gap/pkg/sonata"
+gap> TestPackage( "sonata" );
+#I  You may wish to install the xgap package
+#I  and enjoy the graphic capabilities of SONATA.
+
+##
+## eos
diff --git a/debian/watch b/debian/watch
new file mode 100644
index 0000000..a93f98d
--- /dev/null
+++ b/debian/watch
@@ -0,0 +1,3 @@
+version=4
+opts=repack,dversionmangle=s/\+ds//,repacksuffix=+ds \
+ftp://ftp.gap-system.org/pub/gap/gap4/tar.bz2/packages/sonata-([\d\.]+)\.tar\.bz2

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/gap-sonata.git



More information about the debian-science-commits mailing list