Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package gap-sonata for openSUSE:Factory 
checked in at 2025-09-24 15:24:26
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gap-sonata (Old)
 and      /work/SRC/openSUSE:Factory/.gap-sonata.new.27445 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "gap-sonata"

Wed Sep 24 15:24:26 2025 rev:2 rq:1306816 version:2.9.7

Changes:
--------
--- /work/SRC/openSUSE:Factory/gap-sonata/gap-sonata.changes    2023-12-28 
23:01:10.913825150 +0100
+++ /work/SRC/openSUSE:Factory/.gap-sonata.new.27445/gap-sonata.changes 
2025-09-24 15:26:41.670445866 +0200
@@ -1,0 +2,6 @@
+Tue Sep 23 22:49:49 UTC 2025 - Jan Engelhardt <[email protected]>
+
+- Update to release 2.9.7
+  * Replace calls to AUTO by DeclareAutoreadableVariables
+
+-------------------------------------------------------------------

Old:
----
  sonata-2.9.6.tar.gz

New:
----
  _scmsync.obsinfo
  build.specials.obscpio
  sonata-2.9.7.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ gap-sonata.spec ++++++
--- /var/tmp/diff_new_pack.tf3uFu/_old  2025-09-24 15:26:42.194467929 +0200
+++ /var/tmp/diff_new_pack.tf3uFu/_new  2025-09-24 15:26:42.198468097 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package gap-sonata
 #
-# Copyright (c) 2022 SUSE LLC
+# Copyright (c) 2025 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
 
 
 Name:           gap-sonata
-Version:        2.9.6
+Version:        2.9.7
 Release:        0
 Summary:        GAP: System of nearrings and their applications
 License:        GPL-2.0-or-later
@@ -36,7 +36,7 @@
 of finite nearrings.
 
 %prep
-%setup -qn sonata-%version
+%autosetup -n sonata-%version
 
 %build
 

++++++ _scmsync.obsinfo ++++++
mtime: 1758667905
commit: 840d46c34e8add9ec571d76ee29fe3e626d99776dfd90cb2da2c4fd4fc848f97
url: https://src.opensuse.org/jengelh/gap-sonata
revision: master

++++++ 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      2025-09-24 00:51:53.000000000 +0200
@@ -0,0 +1 @@
+.osc

++++++ sonata-2.9.6.tar.gz -> sonata-2.9.7.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sonata-2.9.6/PackageInfo.g 
new/sonata-2.9.7/PackageInfo.g
--- old/sonata-2.9.6/PackageInfo.g      2022-12-05 23:57:06.000000000 +0100
+++ new/sonata-2.9.7/PackageInfo.g      2025-09-23 23:43:53.000000000 +0200
@@ -19,8 +19,8 @@
 
 PackageName := "SONATA",
 Subtitle := "System of nearrings and their applications",
-Version := "2.9.6",
-Date := "06/12/2022", # dd/mm/yyyy format
+Version := "2.9.7",
+Date := "23/09/2025", # dd/mm/yyyy format
 License := "GPL-2.0-or-later",
 
 Persons := [
@@ -123,7 +123,6 @@
   PDFFile   := "doc/ref/manual.pdf",
   SixFile   := "doc/ref/manual.six",
   LongTitle := "System of nearrings and their applications",
-  Autoload  := true
   ),
   rec(
   BookName  := "SONATA Tutorial",
@@ -132,7 +131,6 @@
   PDFFile   := "doc/tut/manual.pdf",
   SixFile   := "doc/tut/manual.six",
   LongTitle := "Eight easy pieces for SONATA: a SONATA tutorial",
-  Autoload  := false
   ),
 ],
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sonata-2.9.6/doc/htm/ref/CHAP001.htm 
new/sonata-2.9.7/doc/htm/ref/CHAP001.htm
--- old/sonata-2.9.6/doc/htm/ref/CHAP001.htm    2022-12-05 23:57:20.000000000 
+0100
+++ new/sonata-2.9.7/doc/htm/ref/CHAP001.htm    2025-09-23 23:43:53.000000000 
+0200
@@ -31,7 +31,7 @@
 All groups of order 2 to 32 are predefined. They can be accessed
 by variables of the kind 
<code>GTW</code><var>o</var><code>_</code><var>n</var><code></code> where 
<var>o</var> defines the order
 of the group and <var>n</var> the number of the group of order <var>o</var> as 
they
-appear in <a 
href="biblio.htm#thomaswood80:GT"><cite>thomaswood80:GT</cite></a> . For 
example, <code>GTW16_6</code> defines the
+appear in <a href="biblio.htm#thomaswood80:GT"><[>thomaswood80:GT</cite></a>] 
. For example, <code>GTW16_6</code> defines the
 group of Thomas -- Wood type 16/6, which is actually <i>D</i><sub>4</sub> 
&times;<i>C</i><sub>2</sub>.
 <p>
 Alternatively, these groups can be accessed via the function
@@ -359,9 +359,9 @@
 <p>
 The function <code>ScottLength</code> retuns the Scott-length of the group 
<var>G</var>.
 For a definition of the Scott-length of a group and an idea for an
-algorithm for the general case see <a 
href="biblio.htm#scott69:TAOPMOAGATSOCPPGI"><cite>scott69:TAOPMOAGATSOCPPGI</cite></a>.
+algorithm for the general case see <a 
href="biblio.htm#scott69:TAOPMOAGATSOCPPGI"><[>scott69:TAOPMOAGATSOCPPGI</cite></a>].
 In the case of a class 2 nilpotent finite group <var>G</var> a faster algorithm
-described in <a 
href="biblio.htm#ecker98:OTNOPFONGOC2"><cite>ecker98:OTNOPFONGOC2</cite></a> is 
used.
+described in <a 
href="biblio.htm#ecker98:OTNOPFONGOC2"><[>ecker98:OTNOPFONGOC2</cite></a>] is 
used.
 <p>
 <pre>
     gap&gt; ScottLength( GTW6_2 );    
@@ -401,5 +401,5 @@
 <p>
 [<a href = "chapters.htm">Up</a>] [<a href ="CHAP002.htm">Next</a>] [<a href = 
"theindex.htm">Index</a>]
 <P>
-<address>SONATA manual<br>December 2022
+<address>SONATA manual<br>September 2025
 </address></body></html>
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sonata-2.9.6/doc/htm/ref/CHAP002.htm 
new/sonata-2.9.7/doc/htm/ref/CHAP002.htm
--- old/sonata-2.9.6/doc/htm/ref/CHAP002.htm    2022-12-05 23:57:20.000000000 
+0100
+++ new/sonata-2.9.7/doc/htm/ref/CHAP002.htm    2025-09-23 23:43:53.000000000 
+0200
@@ -35,8 +35,8 @@
 a semigroup, and &#183; is left distributive over +, i.e. 
 &#8704;<i>n</i><sub>1</sub>,<i>n</i><sub>2</sub>,<i>n</i><sub>3</sub>  &#8712; 
<i>N</i>:&nbsp;<i>n</i><sub>1</sub>&#183;(<i>n</i><sub>2</sub>+<i>n</i><sub>3</sub>)
 = <i>n</i><sub>1</sub>&#183;<i>n</i><sub>2</sub> + 
<i>n</i><sub>1</sub>&#183;<i>n</i><sub>3</sub>.
 <p>
-For more information we suggest <a 
href="biblio.htm#Pilz:Nearrings"><cite>Pilz:Nearrings</cite></a>,
-<a href="biblio.htm#meldrum85:NATLWG"><cite>meldrum85:NATLWG</cite></a>, and 
<a href="biblio.htm#Clay:Nearrings"><cite>Clay:Nearrings</cite></a>.
+For more information we suggest <a 
href="biblio.htm#Pilz:Nearrings"><[>Pilz:Nearrings</cite></a>],
+<a href="biblio.htm#meldrum85:NATLWG"><[>meldrum85:NATLWG</cite></a>], and <a 
href="biblio.htm#Clay:Nearrings"><[>Clay:Nearrings</cite></a>].
 <p>
 The functions described in this section can be found in the source files
 <code>nr.g?</code> and <code>nrconstr.g?</code>.
@@ -540,7 +540,7 @@
 For a subgroup <var>S</var> of the group reduct of the nearring which is closed
 under the multiplication of <var>nr</var> the function
 <code>SubNearRingBySubgroupNC</code> returns the subnearRing of <var>nr</var>, 
which is
-induced by this subgroup. The <var>nr</var>-invariance is not explicitely
+induced by this subgroup. The <var>nr</var>-invariance is not expli[ly]
 tested.
 <p>
 <pre>
@@ -1065,5 +1065,5 @@
 <p>
 [<a href = "chapters.htm">Up</a>] [<a href ="CHAP001.htm">Previous</a>] [<a 
href ="CHAP003.htm">Next</a>] [<a href = "theindex.htm">Index</a>]
 <P>
-<address>SONATA manual<br>December 2022
+<address>SONATA manual<br>September 2025
 </address></body></html>
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sonata-2.9.6/doc/htm/ref/CHAP003.htm 
new/sonata-2.9.7/doc/htm/ref/CHAP003.htm
--- old/sonata-2.9.6/doc/htm/ref/CHAP003.htm    2022-12-05 23:57:20.000000000 
+0100
+++ new/sonata-2.9.7/doc/htm/ref/CHAP003.htm    2025-09-23 23:43:53.000000000 
+0200
@@ -207,5 +207,5 @@
 <p>
 [<a href = "chapters.htm">Up</a>] [<a href ="CHAP002.htm">Previous</a>] [<a 
href ="CHAP004.htm">Next</a>] [<a href = "theindex.htm">Index</a>]
 <P>
-<address>SONATA manual<br>December 2022
+<address>SONATA manual<br>September 2025
 </address></body></html>
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sonata-2.9.6/doc/htm/ref/CHAP004.htm 
new/sonata-2.9.7/doc/htm/ref/CHAP004.htm
--- old/sonata-2.9.6/doc/htm/ref/CHAP004.htm    2022-12-05 23:57:20.000000000 
+0100
+++ new/sonata-2.9.7/doc/htm/ref/CHAP004.htm    2025-09-23 23:43:53.000000000 
+0200
@@ -297,5 +297,5 @@
 <p>
 [<a href = "chapters.htm">Up</a>] [<a href ="CHAP003.htm">Previous</a>] [<a 
href ="CHAP005.htm">Next</a>] [<a href = "theindex.htm">Index</a>]
 <P>
-<address>SONATA manual<br>December 2022
+<address>SONATA manual<br>September 2025
 </address></body></html>
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sonata-2.9.6/doc/htm/ref/CHAP005.htm 
new/sonata-2.9.7/doc/htm/ref/CHAP005.htm
--- old/sonata-2.9.6/doc/htm/ref/CHAP005.htm    2022-12-05 23:57:20.000000000 
+0100
+++ new/sonata-2.9.7/doc/htm/ref/CHAP005.htm    2025-09-23 23:43:53.000000000 
+0200
@@ -23,11 +23,11 @@
 A <strong>transformation nearring</strong> is a set of mappings on a group 
<i>G</i> that
 is closed under pointwise addition of mappings, under forming the
 additive inverse and under functional composition. For more
-information we suggest <a 
href="biblio.htm#Pilz:Nearrings"><cite>Pilz:Nearrings</cite></a>, <a 
href="biblio.htm#meldrum85:NATLWG"><cite>meldrum85:NATLWG</cite></a>,
-and <a href="biblio.htm#Clay:Nearrings"><cite>Clay:Nearrings</cite></a>,
+information we suggest <a 
href="biblio.htm#Pilz:Nearrings"><[>Pilz:Nearrings</cite></a>], <a 
href="biblio.htm#meldrum85:NATLWG"><[>meldrum85:NATLWG</cite></a>],
+and <a href="biblio.htm#Clay:Nearrings"><[>Clay:Nearrings</cite></a>],
 <p>
 The algorithms used can be found in
-<a 
href="biblio.htm#aichingereckernoebauer00:TUOCINT"><cite>aichingereckernoebauer00:TUOCINT</cite></a>
 and <a href="biblio.htm#aichingerea00:CWN"><cite>aichingerea00:CWN</cite></a>.
+<a 
href="biblio.htm#aichingereckernoebauer00:TUOCINT"><[>aichingereckernoebauer00:TUOCINT</cite></a>]
 and <a href="biblio.htm#aichingerea00:CWN"><[>aichingerea00:CWN</cite></a>].
 <p>
 The elements of a transformation nearring are given as endomappings on
 the group <i>G</i> (cf. Chapter ``Functions on groups that are not
@@ -445,5 +445,5 @@
 <p>
 [<a href = "chapters.htm">Up</a>] [<a href ="CHAP004.htm">Previous</a>] [<a 
href ="CHAP006.htm">Next</a>] [<a href = "theindex.htm">Index</a>]
 <P>
-<address>SONATA manual<br>December 2022
+<address>SONATA manual<br>September 2025
 </address></body></html>
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sonata-2.9.6/doc/htm/ref/CHAP006.htm 
new/sonata-2.9.7/doc/htm/ref/CHAP006.htm
--- old/sonata-2.9.6/doc/htm/ref/CHAP006.htm    2022-12-05 23:57:20.000000000 
+0100
+++ new/sonata-2.9.7/doc/htm/ref/CHAP006.htm    2025-09-23 23:43:53.000000000 
+0200
@@ -21,8 +21,8 @@
 <li> <A HREF="CHAP006.htm#SECT014">Factor nearrings</a>
 </ol><p>
 <p>
-For an introduction to nearring ideals we suggest <a 
href="biblio.htm#Pilz:Nearrings"><cite>Pilz:Nearrings</cite></a>,
-<a href="biblio.htm#meldrum85:NATLWG"><cite>meldrum85:NATLWG</cite></a>, and 
<a href="biblio.htm#Clay:Nearrings"><cite>Clay:Nearrings</cite></a>.
+For an introduction to nearring ideals we suggest <a 
href="biblio.htm#Pilz:Nearrings"><[>Pilz:Nearrings</cite></a>],
+<a href="biblio.htm#meldrum85:NATLWG"><[>meldrum85:NATLWG</cite></a>], and <a 
href="biblio.htm#Clay:Nearrings"><[>Clay:Nearrings</cite></a>].
 <p>
 Ideals of nearrings can either be left, right or twosided ideals. However,
 all of them are called ideals. Mathematicians tend to use the expression
@@ -532,5 +532,5 @@
 <p>
 [<a href = "chapters.htm">Up</a>] [<a href ="CHAP005.htm">Previous</a>] [<a 
href ="CHAP007.htm">Next</a>] [<a href = "theindex.htm">Index</a>]
 <P>
-<address>SONATA manual<br>December 2022
+<address>SONATA manual<br>September 2025
 </address></body></html>
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sonata-2.9.6/doc/htm/ref/CHAP007.htm 
new/sonata-2.9.7/doc/htm/ref/CHAP007.htm
--- old/sonata-2.9.6/doc/htm/ref/CHAP007.htm    2022-12-05 23:57:20.000000000 
+0100
+++ new/sonata-2.9.7/doc/htm/ref/CHAP007.htm    2025-09-23 23:43:53.000000000 
+0200
@@ -45,5 +45,5 @@
 <p>
 [<a href = "chapters.htm">Up</a>] [<a href ="CHAP006.htm">Previous</a>] [<a 
href ="CHAP008.htm">Next</a>] [<a href = "theindex.htm">Index</a>]
 <P>
-<address>SONATA manual<br>December 2022
+<address>SONATA manual<br>September 2025
 </address></body></html>
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sonata-2.9.6/doc/htm/ref/CHAP008.htm 
new/sonata-2.9.7/doc/htm/ref/CHAP008.htm
--- old/sonata-2.9.6/doc/htm/ref/CHAP008.htm    2022-12-05 23:57:20.000000000 
+0100
+++ new/sonata-2.9.7/doc/htm/ref/CHAP008.htm    2025-09-23 23:43:53.000000000 
+0200
@@ -421,5 +421,5 @@
 <p>
 [<a href = "chapters.htm">Up</a>] [<a href ="CHAP007.htm">Previous</a>] [<a 
href ="CHAP009.htm">Next</a>] [<a href = "theindex.htm">Index</a>]
 <P>
-<address>SONATA manual<br>December 2022
+<address>SONATA manual<br>September 2025
 </address></body></html>
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sonata-2.9.6/doc/htm/ref/CHAP009.htm 
new/sonata-2.9.7/doc/htm/ref/CHAP009.htm
--- old/sonata-2.9.6/doc/htm/ref/CHAP009.htm    2022-12-05 23:57:20.000000000 
+0100
+++ new/sonata-2.9.7/doc/htm/ref/CHAP009.htm    2025-09-23 23:43:53.000000000 
+0200
@@ -18,10 +18,10 @@
 and so on.
 <p>
 The classification of fixed-point-free automorphism groups in types I - IV 
-follows Zassenhaus' papers and <a 
href="biblio.htm#Wolf:Spaces"><cite>Wolf:Spaces</cite></a>.
+follows Zassenhaus' papers and <a 
href="biblio.htm#Wolf:Spaces"><[>Wolf:Spaces</cite></a>].
 The fixed-point-free automorphism groups acting on abelian groups are
 constructed from fixed-point-free representations as described in 
-<a 
href="biblio.htm#Mayr:Representations"><cite>Mayr:Representations</cite></a>.
+<a href="biblio.htm#Mayr:Representations"><[>Mayr:Representations</cite></a>].
 <p>
 <p>
 <h2><a name="SECT001">9.1 Fixed-point-free automorphism groups and Frobenius 
groups</a></h2>
@@ -710,5 +710,5 @@
 <p>
 [<a href = "chapters.htm">Up</a>] [<a href ="CHAP008.htm">Previous</a>] [<a 
href ="CHAP010.htm">Next</a>] [<a href = "theindex.htm">Index</a>]
 <P>
-<address>SONATA manual<br>December 2022
+<address>SONATA manual<br>September 2025
 </address></body></html>
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sonata-2.9.6/doc/htm/ref/CHAP010.htm 
new/sonata-2.9.7/doc/htm/ref/CHAP010.htm
--- old/sonata-2.9.6/doc/htm/ref/CHAP010.htm    2022-12-05 23:57:20.000000000 
+0100
+++ new/sonata-2.9.7/doc/htm/ref/CHAP010.htm    2025-09-23 23:43:53.000000000 
+0200
@@ -15,7 +15,7 @@
 A <strong>nearfield</strong> is a nearring with 1 where each nonzero element 
has a
 multiplicative inverse. The (additive) group reduct of a finite
 nearfield is necessarily elementary abelian. 
-For an exposition of nearfields we refer to <a 
href="biblio.htm#Waehling:Fastkoerper"><cite>Waehling:Fastkoerper</cite></a>.
+For an exposition of nearfields we refer to <a 
href="biblio.htm#Waehling:Fastkoerper"><[>Waehling:Fastkoerper</cite></a>].
 <p>
 Let (<i>N</i>,+,&#183;) be a left nearring. For <i>a</i>,<i>b</i>  &#8712; 
<i>N</i> we define <i>a</i>  &#8801; <i>b</i>
 iff <i>a</i>&#183;<i>n</i> = <i>b</i>&#183;<i>n</i> for all <i>n</i> &#8712; 
<i>N</i>. If <i>a</i>  &#8801; <i>b</i>, then <i>a</i> and <i>b</i>
@@ -23,7 +23,7 @@
 A nearring <i>N</i> is called <strong>planar</strong> if &#124; <i>N</i>/<sub> 
&#8801; </sub> &#124;  &#8805; 3 and if 
 for any two non-equivalent multipliers <i>a</i> and <i>b</i> in <i>N</i>, for 
any <i>c</i> &#8712; <i>N</i>, 
 the equation <i>a</i>&#183;<i>x</i> = <i>b</i>&#183;<i>x</i> + <i>c</i> has a 
unique solution. 
-See <a href="biblio.htm#Clay:Nearrings"><cite>Clay:Nearrings</cite></a> for 
basic results on planar nearrings. 
+See <a href="biblio.htm#Clay:Nearrings"><[>Clay:Nearrings</cite></a>] for 
basic results on planar nearrings. 
 <p>
 All finite nearfields are planar nearrings.
 <p>
@@ -156,7 +156,7 @@
 fixed-point-free automorphism group of (<i>N</i>,+).   
 <p>
 Starting with a Ferrero pair (<i>N</i>,&#934;) we can construct a planar 
nearring
-in the following way, <a 
href="biblio.htm#Clay:Nearrings"><cite>Clay:Nearrings</cite></a>:
+in the following way, <a 
href="biblio.htm#Clay:Nearrings"><[>Clay:Nearrings</cite></a>:]
 Select representatives, say 
<i>e</i><sub>1</sub>,&#8230;,<i>e</i><sub><i>t</i></sub>, for some or all of the
 non-trivial orbits of <i>N</i> under &#934;. 
 Let <i>C</i> = 
&#934;(<i>e</i><sub>1</sub>)&#8746;&#8230;&#8746;&#934;(<i>e</i><sub><i>t</i></sub>).
@@ -280,5 +280,5 @@
 <p>
 [<a href = "chapters.htm">Up</a>] [<a href ="CHAP009.htm">Previous</a>] [<a 
href ="CHAP011.htm">Next</a>] [<a href = "theindex.htm">Index</a>]
 <P>
-<address>SONATA manual<br>December 2022
+<address>SONATA manual<br>September 2025
 </address></body></html>
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sonata-2.9.6/doc/htm/ref/CHAP011.htm 
new/sonata-2.9.7/doc/htm/ref/CHAP011.htm
--- old/sonata-2.9.6/doc/htm/ref/CHAP011.htm    2022-12-05 23:57:20.000000000 
+0100
+++ new/sonata-2.9.7/doc/htm/ref/CHAP011.htm    2025-09-23 23:43:53.000000000 
+0200
@@ -58,7 +58,7 @@
 <p>
 <code>DesignFromPlanarNearRing</code> returns a design obtained from the 
planar 
 nearring <var>N</var> following the constructions of James R. Clay
-<a href="biblio.htm#Clay:Nearrings"><cite>Clay:Nearrings</cite></a>.
+<a href="biblio.htm#Clay:Nearrings"><[>Clay:Nearrings</cite></a>].
 <p>
 If <var>type</var> = <code>"*"</code>, <code>DesignFromPlanarNearRing</code> 
returns the design 
 (<i>N</i> ,<i>B</i><sup>*</sup>, &#8712; ) in the notation of J. R. Clay with 
the elements of <var>N</var> as 
@@ -86,7 +86,7 @@
 <p>
 <code>DesignFromFerreroPair</code> returns a design obtained from the group 
<var>G</var>, and
 a group of fixed-point-free automorphisms <var>phi</var> acting on 
<var>G</var> following the
-constructions of James R. Clay <a 
href="biblio.htm#Clay:Nearrings"><cite>Clay:Nearrings</cite></a>.
+constructions of James R. Clay <a 
href="biblio.htm#Clay:Nearrings"><[>Clay:Nearrings</cite></a>].
 <p>
 If <var>type</var> = <code>"*"</code>, <code>DesignFromFerreroPair</code> 
returns the design 
 (<i>G</i> ,<i>B</i><sup>*</sup>, &#8712; ) in the notation of J. R. Clay with 
the elements of <var>G</var> as 
@@ -329,5 +329,5 @@
 <p>
 [<a href = "chapters.htm">Up</a>] [<a href ="CHAP010.htm">Previous</a>] [<a 
href = "theindex.htm">Index</a>]
 <P>
-<address>SONATA manual<br>December 2022
+<address>SONATA manual<br>September 2025
 </address></body></html>
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sonata-2.9.6/doc/htm/ref/biblio.htm 
new/sonata-2.9.7/doc/htm/ref/biblio.htm
--- old/sonata-2.9.6/doc/htm/ref/biblio.htm     2022-12-05 23:57:20.000000000 
+0100
+++ new/sonata-2.9.7/doc/htm/ref/biblio.htm     2025-09-23 23:43:53.000000000 
+0200
@@ -68,5 +68,5 @@
 </dl><p>
 [<a href="chapters.htm">Up</a>]<p>
 <P>
-<address>SONATA manual<br>December 2022
+<address>SONATA manual<br>September 2025
 </address></body></html>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sonata-2.9.6/doc/htm/ref/chapters.htm 
new/sonata-2.9.7/doc/htm/ref/chapters.htm
--- old/sonata-2.9.6/doc/htm/ref/chapters.htm   2022-12-05 23:57:20.000000000 
+0100
+++ new/sonata-2.9.7/doc/htm/ref/chapters.htm   2025-09-23 23:43:53.000000000 
+0200
@@ -22,5 +22,5 @@
 <li><a href="theindex.htm">Index</a>
 </ul><p>
 <P>
-<address>SONATA manual<br>December 2022
+<address>SONATA manual<br>September 2025
 </address></body></html>
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sonata-2.9.6/doc/htm/ref/theindex.htm 
new/sonata-2.9.7/doc/htm/ref/theindex.htm
--- old/sonata-2.9.6/doc/htm/ref/theindex.htm   2022-12-05 23:57:20.000000000 
+0100
+++ new/sonata-2.9.7/doc/htm/ref/theindex.htm   2025-09-23 23:43:53.000000000 
+0200
@@ -406,5 +406,5 @@
 </dl><p>
 [<a href="chapters.htm">Up</a>]<p>
 <P>
-<address>SONATA manual<br>December 2022
+<address>SONATA manual<br>September 2025
 </address></body></html>
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sonata-2.9.6/doc/htm/tut/CHAP001.htm 
new/sonata-2.9.7/doc/htm/tut/CHAP001.htm
--- old/sonata-2.9.6/doc/htm/tut/CHAP001.htm    2022-12-05 23:57:20.000000000 
+0100
+++ new/sonata-2.9.7/doc/htm/tut/CHAP001.htm    2025-09-23 23:43:53.000000000 
+0200
@@ -203,5 +203,5 @@
 <p>
 [<a href = "chapters.htm">Up</a>] [<a href ="CHAP002.htm">Next</a>] [<a href = 
"theindex.htm">Index</a>]
 <P>
-<address>SONATA-tutorial manual<br>December 2022
+<address>SONATA-tutorial manual<br>September 2025
 </address></body></html>
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sonata-2.9.6/doc/htm/tut/CHAP002.htm 
new/sonata-2.9.7/doc/htm/tut/CHAP002.htm
--- old/sonata-2.9.6/doc/htm/tut/CHAP002.htm    2022-12-05 23:57:20.000000000 
+0100
+++ new/sonata-2.9.7/doc/htm/tut/CHAP002.htm    2025-09-23 23:43:53.000000000 
+0200
@@ -25,9 +25,9 @@
 functions right of their arguments. Then the definition
 reads (&#947;) <i>m</i> * <i>n</i> = ((&#947;)<i>m</i>)<i>n</i>.
 <p>
-Textbooks on nearrings are <a 
href="biblio.htm#meldrum85:NATLWG"><cite>meldrum85:NATLWG</cite></a>, <a 
href="biblio.htm#Clay:Nearrings"><cite>Clay:Nearrings</cite></a>,
-<a href="biblio.htm#Ferrero:Nearrings"><cite>Ferrero:Nearrings</cite></a>. 
They all use <strong>left nearrings</strong>.
-The book <a href="biblio.htm#Pilz:Nearrings"><cite>Pilz:Nearrings</cite></a> 
uses <strong>right nearrings</strong>; these are 
+Textbooks on nearrings are <a 
href="biblio.htm#meldrum85:NATLWG"><[>meldrum85:NATLWG</cite></a>], <a 
href="biblio.htm#Clay:Nearrings"><[>Clay:Nearrings</cite></a>],
+<a href="biblio.htm#Ferrero:Nearrings"><[>Ferrero:Nearrings</cite></a>]. They 
all use <strong>left nearrings</strong>.
+The book <a href="biblio.htm#Pilz:Nearrings"><[>Pilz:Nearrings</cite></a>] 
uses <strong>right nearrings</strong>; these are 
 the algebras that arise if we claim the right distributive law
  (<i>x</i> + <i>y</i>) * <i>z</i> = <i>x</i>*<i>z</i> + <i>y</i>*<i>z</i> 
instead of the left distributive law
 given above. 
@@ -38,7 +38,7 @@
 <h2><a name="SECT001">2.1 Entering nearrings into the system</a></h2>
 <p><p>
 <strong>The problem:</strong> Input the nearring given in the example
-of page 406 of <a 
href="biblio.htm#Pilz:Nearrings"><cite>Pilz:Nearrings</cite></a>
+of page 406 of <a 
href="biblio.htm#Pilz:Nearrings"><[>Pilz:Nearrings</cite></a>]
 into SONATA.
 <p>
 This nearring is given by an explicit multiplication table.
@@ -141,7 +141,7 @@
 some questions about it. A nearring is a nearfield if
 it has more than one element and its nonzero elements are
 a group with respect to multiplication. A textbook
-on nearfields is <a 
href="biblio.htm#Waehling:Fastkoerper"><cite>Waehling:Fastkoerper</cite></a>. 
They are interesting
+on nearfields is <a 
href="biblio.htm#Waehling:Fastkoerper"><[>Waehling:Fastkoerper</cite></a>]. 
They are interesting
 structures, closely connected to sharply 2-transitive permutation
 groups and fixedpointfree automorphism groups of groups.
 <p>
@@ -153,7 +153,7 @@
     gap&gt; IsNilpotentNearRing( N );
     false
 </pre>
-<a href="biblio.htm#Pilz:Nearrings"><cite>Pilz:Nearrings</cite></a> is correct 
... Well at least in this case.<code>;-))</code>
+<a href="biblio.htm#Pilz:Nearrings"><[>Pilz:Nearrings</cite></a>] is correct 
... Well at least in this case.<code>;-))</code>
 <p>
 <p>
 <h2><a name="SECT003">2.3 Entering the nearring with less typing</a></h2>
@@ -219,5 +219,5 @@
 <p>
 [<a href = "chapters.htm">Up</a>] [<a href ="CHAP001.htm">Previous</a>] [<a 
href ="CHAP003.htm">Next</a>] [<a href = "theindex.htm">Index</a>]
 <P>
-<address>SONATA-tutorial manual<br>December 2022
+<address>SONATA-tutorial manual<br>September 2025
 </address></body></html>
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sonata-2.9.6/doc/htm/tut/CHAP003.htm 
new/sonata-2.9.7/doc/htm/tut/CHAP003.htm
--- old/sonata-2.9.6/doc/htm/tut/CHAP003.htm    2022-12-05 23:57:20.000000000 
+0100
+++ new/sonata-2.9.7/doc/htm/tut/CHAP003.htm    2025-09-23 23:43:53.000000000 
+0200
@@ -123,7 +123,7 @@
 use a <code>for ... do ... od</code> construction.
 <p>
 We shall demonstrate this by recomputing the list
-of nearrings given in appendix K of <a 
href="biblio.htm#Pilz:Nearrings"><cite>Pilz:Nearrings</cite></a>,
+of nearrings given in appendix K of <a 
href="biblio.htm#Pilz:Nearrings"><[>Pilz:Nearrings</cite></a>],
 i.e. a list of all nearrings on the dihedral group of order 8
 (<code>GTW8_4</code>) which have an identity, are non-zerosymmetric or
 are integral.
@@ -164,14 +164,14 @@
 <p>
 Which correspond to the numbers
 140, 86, 99, and 141 in
-<a href="biblio.htm#Pilz:Nearrings"><cite>Pilz:Nearrings</cite></a>, appendix 
K, accordingly.
+<a href="biblio.htm#Pilz:Nearrings"><[>Pilz:Nearrings</cite></a>], appendix K, 
accordingly.
 <p>
 For those who got interested in boolean nearrings:
 many results about them have been collected in
-<a href="biblio.htm#Pilz:Nearrings"><cite>Pilz:Nearrings</cite></a>, 9.31.
+<a href="biblio.htm#Pilz:Nearrings"><[>Pilz:Nearrings</cite></a>], 9.31.
 <p>
 <p>
 [<a href = "chapters.htm">Up</a>] [<a href ="CHAP002.htm">Previous</a>] [<a 
href ="CHAP004.htm">Next</a>] [<a href = "theindex.htm">Index</a>]
 <P>
-<address>SONATA-tutorial manual<br>December 2022
+<address>SONATA-tutorial manual<br>September 2025
 </address></body></html>
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sonata-2.9.6/doc/htm/tut/CHAP004.htm 
new/sonata-2.9.7/doc/htm/tut/CHAP004.htm
--- old/sonata-2.9.6/doc/htm/tut/CHAP004.htm    2022-12-05 23:57:20.000000000 
+0100
+++ new/sonata-2.9.7/doc/htm/tut/CHAP004.htm    2025-09-23 23:43:53.000000000 
+0200
@@ -106,5 +106,5 @@
 <p>
 [<a href = "chapters.htm">Up</a>] [<a href ="CHAP003.htm">Previous</a>] [<a 
href ="CHAP005.htm">Next</a>] [<a href = "theindex.htm">Index</a>]
 <P>
-<address>SONATA-tutorial manual<br>December 2022
+<address>SONATA-tutorial manual<br>September 2025
 </address></body></html>
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sonata-2.9.6/doc/htm/tut/CHAP005.htm 
new/sonata-2.9.7/doc/htm/tut/CHAP005.htm
--- old/sonata-2.9.6/doc/htm/tut/CHAP005.htm    2022-12-05 23:57:20.000000000 
+0100
+++ new/sonata-2.9.7/doc/htm/tut/CHAP005.htm    2025-09-23 23:43:53.000000000 
+0200
@@ -19,7 +19,7 @@
 The nearring <i>I</i>(<i>G</i>) is the smallest subnearring of the
 nearring <i>M</i>(<i>G</i>) of all mappings from <i>G</i> into <i>G</i> that
 contains all inner automorphisms; similarly <i>A</i>(<i>G</i>) and 
<i>E</i>(<i>G</i>)
-are defined. <a 
href="biblio.htm#meldrum85:NATLWG"><cite>meldrum85:NATLWG</cite></a> contains 
+are defined. <a 
href="biblio.htm#meldrum85:NATLWG"><[>meldrum85:NATLWG</cite></a>] contains 
 a lot of information on these near-rings.
 <p>
 <p>
@@ -197,14 +197,14 @@
 <p><p>
 We shall now construct all compatible (= congruence preserving) functions
 on the group 16/6 (Thomas-Wood-notation); this is the 6<sup><i>th</i></sup> 
group
-of order 16 in <a 
href="biblio.htm#thomaswood80:GT"><cite>thomaswood80:GT</cite></a>.
+of order 16 in <a 
href="biblio.htm#thomaswood80:GT"><[>thomaswood80:GT</cite></a>].
 It is the direct
 product of <i>D</i><sub>8</sub> and <i>C</i><sub>2</sub>. Let <i>G</i> be this 
group. We first
 construct the nearring <i>P</i>(<i>G</i>) of all polynomial functions.
 Then we construct all those functions that can be interpolated
 at every subset of <i>G</i> with at most two elements by a function in
 <i>P</i>(<i>G</i>) by using the function 
<code>LocalInterpolationNearRing</code>: 
-these are the compatible functions on <i>G</i> (see <a 
href="biblio.htm#Pilz:Nearrings"><cite>Pilz:Nearrings</cite></a>). 
+these are the compatible functions on <i>G</i> (see <a 
href="biblio.htm#Pilz:Nearrings"><[>Pilz:Nearrings</cite></a>)]. 
 <pre>
     gap&gt; P := PolynomialNearRing( GTW16_6 );
     PolynomialNearRing( 16/6 )
@@ -246,5 +246,5 @@
 <p>
 [<a href = "chapters.htm">Up</a>] [<a href ="CHAP004.htm">Previous</a>] [<a 
href ="CHAP006.htm">Next</a>] [<a href = "theindex.htm">Index</a>]
 <P>
-<address>SONATA-tutorial manual<br>December 2022
+<address>SONATA-tutorial manual<br>September 2025
 </address></body></html>
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sonata-2.9.6/doc/htm/tut/CHAP006.htm 
new/sonata-2.9.7/doc/htm/tut/CHAP006.htm
--- old/sonata-2.9.6/doc/htm/tut/CHAP006.htm    2022-12-05 23:57:20.000000000 
+0100
+++ new/sonata-2.9.7/doc/htm/tut/CHAP006.htm    2025-09-23 23:43:53.000000000 
+0200
@@ -138,5 +138,5 @@
 <p>
 [<a href = "chapters.htm">Up</a>] [<a href ="CHAP005.htm">Previous</a>] [<a 
href ="CHAP007.htm">Next</a>] [<a href = "theindex.htm">Index</a>]
 <P>
-<address>SONATA-tutorial manual<br>December 2022
+<address>SONATA-tutorial manual<br>September 2025
 </address></body></html>
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sonata-2.9.6/doc/htm/tut/CHAP007.htm 
new/sonata-2.9.7/doc/htm/tut/CHAP007.htm
--- old/sonata-2.9.6/doc/htm/tut/CHAP007.htm    2022-12-05 23:57:20.000000000 
+0100
+++ new/sonata-2.9.7/doc/htm/tut/CHAP007.htm    2025-09-23 23:43:53.000000000 
+0200
@@ -4,7 +4,7 @@
 <h1>7 Planar nearrings</h1><p>
 <p>
 We recall the definition of planar nearrings and basic results 
-(see <a href="biblio.htm#Clay:Nearrings"><cite>Clay:Nearrings</cite></a>).
+(see <a href="biblio.htm#Clay:Nearrings"><[>Clay:Nearrings</cite></a>)].
 Let (<i>N</i>,+,&#183;) be a left nearring. For <i>a</i>,<i>b</i>  &#8712; 
<i>N</i> we define <i>a</i>  &#8801; <i>b</i>
 iff <i>a</i>&#183;<i>n</i> = <i>b</i>&#183;<i>n</i> for all <i>n</i> &#8712; 
<i>N</i>. If <i>a</i>  &#8801; <i>b</i>, then <i>a</i> and <i>b</i>
 are called <strong>equivalent multipliers</strong>.
@@ -144,5 +144,5 @@
 <p>
 [<a href = "chapters.htm">Up</a>] [<a href ="CHAP006.htm">Previous</a>] [<a 
href ="CHAP008.htm">Next</a>] [<a href = "theindex.htm">Index</a>]
 <P>
-<address>SONATA-tutorial manual<br>December 2022
+<address>SONATA-tutorial manual<br>September 2025
 </address></body></html>
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sonata-2.9.6/doc/htm/tut/CHAP008.htm 
new/sonata-2.9.7/doc/htm/tut/CHAP008.htm
--- old/sonata-2.9.6/doc/htm/tut/CHAP008.htm    2022-12-05 23:57:20.000000000 
+0100
+++ new/sonata-2.9.7/doc/htm/tut/CHAP008.htm    2025-09-23 23:43:53.000000000 
+0200
@@ -20,7 +20,7 @@
 <p><p>
 We are going to generate a design with a feasible parameter set from a planar 
 nearring, respectively from a Ferrero pair.
-For notations and definitions we refer to <a 
href="biblio.htm#Clay:Nearrings"><cite>Clay:Nearrings</cite></a>.
+For notations and definitions we refer to <a 
href="biblio.htm#Clay:Nearrings"><[>Clay:Nearrings</cite></a>].
 <p>
 Let <i>N</i> be a (left) planar nearring. Then we can define a design
 (<i>N</i>,<i>B</i><sup>*</sup>, &#8712; ) with <i>N</i> as the set of points 
and
@@ -162,5 +162,5 @@
 <p>
 [<a href = "chapters.htm">Up</a>] [<a href ="CHAP007.htm">Previous</a>] [<a 
href = "theindex.htm">Index</a>]
 <P>
-<address>SONATA-tutorial manual<br>December 2022
+<address>SONATA-tutorial manual<br>September 2025
 </address></body></html>
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sonata-2.9.6/doc/htm/tut/biblio.htm 
new/sonata-2.9.7/doc/htm/tut/biblio.htm
--- old/sonata-2.9.6/doc/htm/tut/biblio.htm     2022-12-05 23:57:20.000000000 
+0100
+++ new/sonata-2.9.7/doc/htm/tut/biblio.htm     2025-09-23 23:43:53.000000000 
+0200
@@ -37,5 +37,5 @@
 </dl><p>
 [<a href="chapters.htm">Up</a>]<p>
 <P>
-<address>SONATA-tutorial manual<br>December 2022
+<address>SONATA-tutorial manual<br>September 2025
 </address></body></html>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sonata-2.9.6/doc/htm/tut/chapters.htm 
new/sonata-2.9.7/doc/htm/tut/chapters.htm
--- old/sonata-2.9.6/doc/htm/tut/chapters.htm   2022-12-05 23:57:20.000000000 
+0100
+++ new/sonata-2.9.7/doc/htm/tut/chapters.htm   2025-09-23 23:43:53.000000000 
+0200
@@ -19,5 +19,5 @@
 <li><a href="theindex.htm">Index</a>
 </ul><p>
 <P>
-<address>SONATA-tutorial manual<br>December 2022
+<address>SONATA-tutorial manual<br>September 2025
 </address></body></html>
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sonata-2.9.6/doc/htm/tut/theindex.htm 
new/sonata-2.9.7/doc/htm/tut/theindex.htm
--- old/sonata-2.9.6/doc/htm/tut/theindex.htm   2022-12-05 23:57:20.000000000 
+0100
+++ new/sonata-2.9.7/doc/htm/tut/theindex.htm   2025-09-23 23:43:53.000000000 
+0200
@@ -77,5 +77,5 @@
 </dl><p>
 [<a href="chapters.htm">Up</a>]<p>
 <P>
-<address>SONATA-tutorial manual<br>December 2022
+<address>SONATA-tutorial manual<br>September 2025
 </address></body></html>
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sonata-2.9.6/doc/make_doc 
new/sonata-2.9.7/doc/make_doc
--- old/sonata-2.9.6/doc/make_doc       2022-12-05 23:57:20.000000000 +0100
+++ new/sonata-2.9.7/doc/make_doc       2025-09-23 23:43:53.000000000 +0200
@@ -1,8 +1,4 @@
 #!/bin/sh
-#########################################################################
-##
-#W  make_doc        make SONATA Package documentation     Alexander Hulpke
-##
 set -e
 
 echo "TeXing documentation:ref"
@@ -11,26 +7,46 @@
 # for the reference-manual, hence no index. Copying manual.mst for the
 # tutorial-manual into the directory ref/ did the trick.
 cd ref
-# TeX the manual and build its bibliography
-tex manual;bibtex manual
-# TeX the manual again to incorporate the ToC ... and build the index
-tex manual; ../../../../doc/manualindex manual
+
+# delete old stuff to avoid spurious or "hidden errors" caused by their 
presence
+rm -f manual.{aux,bbl,blg,dvi,idx,ilg,ind,lab,log,pdf,ps,six,toc}
+# TeX the manual
+tex manual
+# ... and build its bibliography
+bibtex manual
+# TeX the manual again to incorporate the ToC
+tex manual
+# ... and build the index
+../../../../doc/manualindex manual
 # Finally TeX the manual again to get cross-references right
 tex manual
+
 # Create PDF version
-pdftex manual; pdftex manual
+pdftex manual
+pdftex manual
+
 cd ..
 
 echo "TeXing documentation:tut"
 cd tut
-# TeX the manual and build its bibliography
-tex manual;bibtex manual
-# TeX the manual again to incorporate the ToC ... and build the index
-tex manual; ../../../../doc/manualindex manual
+
+# delete old stuff to avoid spurious or "hidden errors" caused by their 
presence
+rm -f manual.{aux,bbl,blg,dvi,idx,ilg,ind,lab,log,pdf,ps,six,toc}
+# TeX the manual
+tex manual
+# ... and build its bibliography
+bibtex manual
+# TeX the manual again to incorporate the ToC
+tex manual
+# ... and build the index
+../../../../doc/manualindex manual
 # Finally TeX the manual again to get cross-references right
 tex manual
+
 # Create PDF version
-pdftex manual; pdftex manual
+pdftex manual
+pdftex manual
+
 cd ..
 
 # The HTML version of the manual
@@ -42,7 +58,10 @@
 cd ref
 ../../../../etc/convert.pl -i -u -c -n SONATA . ../htm/ref
 cd ../htm/ref
-for d in *.htm; do sed 's/cite\([^ .,]\+\)/[\1]/g' < $d > tmp; cp tmp $d; done
+for d in *.htm; do
+  sed 's/cite\([^ .,]\+\)/[\1]/g' < $d > tmp
+  cp tmp $d
+done
 rm -f tmp
 cd ../..
 
@@ -51,6 +70,9 @@
 cd tut
 ../../../../etc/convert.pl -i -u -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;
+for d in *.htm; do
+  sed 's/cite\([^ .,]\+\)/[\1]/g' < $d > tmp
+  cp tmp $d
+done
 rm -f tmp
 cd ../..
Binary files old/sonata-2.9.6/doc/ref/manual.dvi and 
new/sonata-2.9.7/doc/ref/manual.dvi differ
Binary files old/sonata-2.9.6/doc/ref/manual.pdf and 
new/sonata-2.9.7/doc/ref/manual.pdf differ
Binary files old/sonata-2.9.6/doc/tut/manual.dvi and 
new/sonata-2.9.7/doc/tut/manual.dvi differ
Binary files old/sonata-2.9.6/doc/tut/manual.pdf and 
new/sonata-2.9.7/doc/tut/manual.pdf differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sonata-2.9.6/lib/libnr.gd 
new/sonata-2.9.7/lib/libnr.gd
--- old/sonata-2.9.6/lib/libnr.gd       2022-12-05 23:57:06.000000000 +0100
+++ new/sonata-2.9.7/lib/libnr.gd       2025-09-23 23:43:53.000000000 +0200
@@ -1,9 +1,3 @@
-DeclareGlobalVariable( "NEARRING_PATH_NAME",
-       "path to the directory containing the library of small near rings" );
-
-DeclareGlobalVariable( "NEARRING_WITH_IDENTITY_PATH_NAME",
-       "path to the directory containing the library of small near rings with 
identity" );
-
 #############################################################################
 ##
 #O  LibraryNearRing( <group>, <num> ). . . . . . . . get a nr from the library
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sonata-2.9.6/lib/libnr.gi 
new/sonata-2.9.7/lib/libnr.gi
--- old/sonata-2.9.6/lib/libnr.gi       2022-12-05 23:57:06.000000000 +0100
+++ new/sonata-2.9.7/lib/libnr.gi       2025-09-23 23:43:53.000000000 +0200
@@ -8,124 +8,107 @@
 ##  13.01.00  N!.multiplication ersetzt, PM
 ##
 
-##############################################################################
-##
-  InstallValue( NEARRING_PATH_NAME, 
-               DirectoriesPackageLibrary( "sonata", "nr" ) );
-  InstallValue( NEARRING_WITH_IDENTITY_PATH_NAME,
-               DirectoriesPackageLibrary( "sonata", "nri" ) );
-
-BindGlobal( "AutoReadNR",
-  function ( filename )
-    Read( Filename( NEARRING_PATH_NAME, Concatenation(filename,".nr") ) );
-end );
-
-BindGlobal( "AutoReadNRI",
-  function ( filename )
-    Read( Filename( NEARRING_WITH_IDENTITY_PATH_NAME, 
Concatenation(filename,".nr") ) );
-end );
-
-AUTO( AutoReadNR, "nr_2-7" ,  "NR_C2", "NR_C3", "NR_C4", "NR_V4", "NR_C5", 
-                                 "NR_C6", "NR_S3", "NR_C7"                  );
-
-AUTO( AutoReadNR, "nr8_1" ,   "NR_C8"       ); 
-AUTO( AutoReadNR, "nr8_2" ,   "NR_C2xC4"    ); 
-AUTO( AutoReadNR, "nr8_3" ,   "NR_C2xC2xC2" ); 
-AUTO( AutoReadNR, "nr8_4" ,   "NR_D8"       ); 
-AUTO( AutoReadNR, "nr8_5" ,   "NR_Q8"       ); 
-
-AUTO( AutoReadNR, "nr9_1" ,   "NR_C9"       ); 
-AUTO( AutoReadNR, "nr9_2" ,   "NR_C3xC3"    ); 
-
-AUTO( AutoReadNR, "nr10_1" ,   "NR_C10"     ); 
-AUTO( AutoReadNR, "nr10_2" ,   "NR_D10"     ); 
-
-AUTO( AutoReadNR, "nr11_1" ,   "NR_C11"     ); 
-
-AUTO( AutoReadNR, "nr12_1" ,   "NR_C12"     ); 
-AUTO( AutoReadNR, "nr12_2" ,   "NR_C2xC6"   ); 
-
-AUTO( AutoReadNR, "nr12_3.1" ,   "NR_D12_1"     ); 
-AUTO( AutoReadNR, "nr12_3.2" ,   "NR_D12_2"     ); 
-AUTO( AutoReadNR, "nr12_3.3" ,   "NR_D12_3"     ); 
-AUTO( AutoReadNR, "nr12_3.4" ,   "NR_D12_4"     ); 
-AUTO( AutoReadNR, "nr12_3.5" ,   "NR_D12_5"     ); 
-AUTO( AutoReadNR, "nr12_3.6" ,   "NR_D12_6"     ); 
-AUTO( AutoReadNR, "nr12_3.7" ,   "NR_D12_7"     ); 
-AUTO( AutoReadNR, "nr12_3.8" ,   "NR_D12_8"     ); 
-AUTO( AutoReadNR, "nr12_3.9" ,   "NR_D12_9"     ); 
-
-AUTO( AutoReadNR, "nr12_4" ,   "NR_A4"      ); 
-AUTO( AutoReadNR, "nr12_5" ,   "NR_T"       ); 
+DeclareAutoreadableVariables("sonata", "nr/nr_2-7.nr",
+        [ "NR_C2", "NR_C3", "NR_C4", "NR_V4", "NR_C5", "NR_C6", "NR_S3", 
"NR_C7" ] );
+
+DeclareAutoreadableVariables("sonata", "nr/nr8_1.nr", [ "NR_C8" ] );
+DeclareAutoreadableVariables("sonata", "nr/nr8_2.nr", [ "NR_C2xC4" ] );
+DeclareAutoreadableVariables("sonata", "nr/nr8_3.nr", [ "NR_C2xC2xC2" ] );
+DeclareAutoreadableVariables("sonata", "nr/nr8_4.nr", [ "NR_D8" ] );
+DeclareAutoreadableVariables("sonata", "nr/nr8_5.nr", [ "NR_Q8" ] );
+
+DeclareAutoreadableVariables("sonata", "nr/nr9_1.nr", [ "NR_C9" ] );
+DeclareAutoreadableVariables("sonata", "nr/nr9_2.nr", [ "NR_C3xC3" ] );
+
+DeclareAutoreadableVariables("sonata", "nr/nr10_1.nr", [ "NR_C10" ] );
+DeclareAutoreadableVariables("sonata", "nr/nr10_2.nr", [ "NR_D10" ] );
+
+DeclareAutoreadableVariables("sonata", "nr/nr11_1.nr", [ "NR_C11" ] );
 
-AUTO( AutoReadNR, "nr13_1" ,   "NR_C13"     ); 
+DeclareAutoreadableVariables("sonata", "nr/nr12_1.nr", [ "NR_C12" ] );
+DeclareAutoreadableVariables("sonata", "nr/nr12_2.nr", [ "NR_C2xC6" ] );
 
-AUTO( AutoReadNR, "nr14_1" ,   "NR_C14"     ); 
-AUTO( AutoReadNR, "nr14_2" ,   "NR_D14"     ); 
+DeclareAutoreadableVariables("sonata", "nr/nr12_3.1.nr", [ "NR_D12_1" ] );
+DeclareAutoreadableVariables("sonata", "nr/nr12_3.2.nr", [ "NR_D12_2" ] );
+DeclareAutoreadableVariables("sonata", "nr/nr12_3.3.nr", [ "NR_D12_3" ] );
+DeclareAutoreadableVariables("sonata", "nr/nr12_3.4.nr", [ "NR_D12_4" ] );
+DeclareAutoreadableVariables("sonata", "nr/nr12_3.5.nr", [ "NR_D12_5" ] );
+DeclareAutoreadableVariables("sonata", "nr/nr12_3.6.nr", [ "NR_D12_6" ] );
+DeclareAutoreadableVariables("sonata", "nr/nr12_3.7.nr", [ "NR_D12_7" ] );
+DeclareAutoreadableVariables("sonata", "nr/nr12_3.8.nr", [ "NR_D12_8" ] );
+DeclareAutoreadableVariables("sonata", "nr/nr12_3.9.nr", [ "NR_D12_9" ] );
 
-AUTO( AutoReadNR, "nr15_1" ,   "NR_C15"     );
+DeclareAutoreadableVariables("sonata", "nr/nr12_4.nr", [ "NR_A4" ] );
+DeclareAutoreadableVariables("sonata", "nr/nr12_5.nr", [ "NR_T" ] );
+
+DeclareAutoreadableVariables("sonata", "nr/nr13_1.nr", [ "NR_C13" ] );
+
+DeclareAutoreadableVariables("sonata", "nr/nr14_1.nr", [ "NR_C14" ] );
+DeclareAutoreadableVariables("sonata", "nr/nr14_2.nr", [ "NR_D14" ] );
+
+DeclareAutoreadableVariables("sonata", "nr/nr15_1.nr", [ "NR_C15" ] );
 
 ########################################################
 
-AUTO( AutoReadNRI, "nri12_3" ,   "NI12_3"      ); 
+DeclareAutoreadableVariables("sonata", "nri/nri12_3.nr", [ "NI12_3" ] );
 
-AUTO( AutoReadNRI, "nri16_1" ,   "NI16_1"      ); 
-AUTO( AutoReadNRI, "nri16_2" ,   "NI16_2"      ); 
-AUTO( AutoReadNRI, "nri16_3" ,   "NI16_3"      ); 
-AUTO( AutoReadNRI, "nri16_4" ,   "NI16_4"      ); 
-AUTO( AutoReadNRI, "nri16_5" ,   "NI16_5"      ); 
-AUTO( AutoReadNRI, "nri16_6" ,   "NI16_6"      ); 
-AUTO( AutoReadNRI, "nri16_7" ,   "NI16_7"      ); 
-AUTO( AutoReadNRI, "nri16_9" ,   "NI16_9"      ); 
-AUTO( AutoReadNRI, "nri16_10" ,  "NI16_10"     ); 
-AUTO( AutoReadNRI, "nri16_11" ,  "NI16_11"     );
+DeclareAutoreadableVariables("sonata", "nri/nri16_1.nr", [ "NI16_1" ] );
+DeclareAutoreadableVariables("sonata", "nri/nri16_2.nr", [ "NI16_2" ] );
+DeclareAutoreadableVariables("sonata", "nri/nri16_3.nr", [ "NI16_3" ] );
+DeclareAutoreadableVariables("sonata", "nri/nri16_4.nr", [ "NI16_4" ] );
+DeclareAutoreadableVariables("sonata", "nri/nri16_5.nr", [ "NI16_5" ] );
+DeclareAutoreadableVariables("sonata", "nri/nri16_6.nr", [ "NI16_6" ] );
+DeclareAutoreadableVariables("sonata", "nri/nri16_7.nr", [ "NI16_7" ] );
+DeclareAutoreadableVariables("sonata", "nri/nri16_9.nr", [ "NI16_9" ] );
+DeclareAutoreadableVariables("sonata", "nri/nri16_10.nr", [ "NI16_10" ] );
+DeclareAutoreadableVariables("sonata", "nri/nri16_11.nr", [ "NI16_11" ] );
 
-AUTO( AutoReadNRI, "nri17_1" ,   "NI17_1"      );
+DeclareAutoreadableVariables("sonata", "nri/nri17_1.nr", [ "NI17_1" ] );
 
-AUTO( AutoReadNRI, "nri18_1" ,   "NI18_1"      );
-AUTO( AutoReadNRI, "nri18_2" ,   "NI18_2"      );  
-AUTO( AutoReadNRI, "nri18_3" ,   "NI18_3"      );
+DeclareAutoreadableVariables("sonata", "nri/nri18_1.nr", [ "NI18_1" ] );
+DeclareAutoreadableVariables("sonata", "nri/nri18_2.nr", [ "NI18_2" ] );
+DeclareAutoreadableVariables("sonata", "nri/nri18_3.nr", [ "NI18_3" ] );
 
-AUTO( AutoReadNRI, "nri19_1" ,   "NI19_1"      );
+DeclareAutoreadableVariables("sonata", "nri/nri19_1.nr", [ "NI19_1" ] );
 
-AUTO( AutoReadNRI, "nri20_1" ,   "NI20_1"      );
-AUTO( AutoReadNRI, "nri20_2" ,   "NI20_2"      ); 
-AUTO( AutoReadNRI, "nri20_3" ,   "NI20_3"      );
+DeclareAutoreadableVariables("sonata", "nri/nri20_1.nr", [ "NI20_1" ] );
+DeclareAutoreadableVariables("sonata", "nri/nri20_2.nr", [ "NI20_2" ] );
+DeclareAutoreadableVariables("sonata", "nri/nri20_3.nr", [ "NI20_3" ] );
 
-AUTO( AutoReadNRI, "nri21_1" ,   "NI21_1"      );
+DeclareAutoreadableVariables("sonata", "nri/nri21_1.nr", [ "NI21_1" ] );
 
-AUTO( AutoReadNRI, "nri22_1" ,   "NI22_1"      );
+DeclareAutoreadableVariables("sonata", "nri/nri22_1.nr", [ "NI22_1" ] );
 
-AUTO( AutoReadNRI, "nri23_1" ,   "NI23_1"      );
+DeclareAutoreadableVariables("sonata", "nri/nri23_1.nr", [ "NI23_1" ] );
 
-AUTO( AutoReadNRI, "nri24_1" ,   "NI24_1"      );
-AUTO( AutoReadNRI, "nri24_2" ,   "NI24_2"      );  
-AUTO( AutoReadNRI, "nri24_3" ,   "NI24_3"      );  
-AUTO( AutoReadNRI, "nri24_4" ,   "NI24_4"      ); 
-AUTO( AutoReadNRI, "nri24_5" ,   "NI24_5"      ); 
-AUTO( AutoReadNRI, "nri24_7" ,   "NI24_7"      ); 
-AUTO( AutoReadNRI, "nri24_9" ,   "NI24_9"      ); 
+DeclareAutoreadableVariables("sonata", "nri/nri24_1.nr", [ "NI24_1" ] );
+DeclareAutoreadableVariables("sonata", "nri/nri24_2.nr", [ "NI24_2" ] );
+DeclareAutoreadableVariables("sonata", "nri/nri24_3.nr", [ "NI24_3" ] );
+DeclareAutoreadableVariables("sonata", "nri/nri24_4.nr", [ "NI24_4" ] );
+DeclareAutoreadableVariables("sonata", "nri/nri24_5.nr", [ "NI24_5" ] );
+DeclareAutoreadableVariables("sonata", "nri/nri24_7.nr", [ "NI24_7" ] );
+DeclareAutoreadableVariables("sonata", "nri/nri24_9.nr", [ "NI24_9" ] );
 
-AUTO( AutoReadNRI, "nri25_1" ,   "NI25_1"      );
-AUTO( AutoReadNRI, "nri25_2" ,   "NI25_2"      ); 
+DeclareAutoreadableVariables("sonata", "nri/nri25_1.nr", [ "NI25_1" ] );
+DeclareAutoreadableVariables("sonata", "nri/nri25_2.nr", [ "NI25_2" ] );
 
-AUTO( AutoReadNRI, "nri26_1" ,   "NI26_1"      );
+DeclareAutoreadableVariables("sonata", "nri/nri26_1.nr", [ "NI26_1" ] );
 
-AUTO( AutoReadNRI, "nri27_1" ,   "NI27_1"      );
-AUTO( AutoReadNRI, "nri27_2" ,   "NI27_2"      ); 
-AUTO( AutoReadNRI, "nri27_3" ,   "NI27_3"      ); 
-AUTO( AutoReadNRI, "nri27_4" ,   "NI27_4"      ); 
-AUTO( AutoReadNRI, "nri27_5" ,   "NI27_5"      ); 
+DeclareAutoreadableVariables("sonata", "nri/nri27_1.nr", [ "NI27_1" ] );
+DeclareAutoreadableVariables("sonata", "nri/nri27_2.nr", [ "NI27_2" ] );
+DeclareAutoreadableVariables("sonata", "nri/nri27_3.nr", [ "NI27_3" ] );
+DeclareAutoreadableVariables("sonata", "nri/nri27_4.nr", [ "NI27_4" ] );
+DeclareAutoreadableVariables("sonata", "nri/nri27_5.nr", [ "NI27_5" ] );
 
-AUTO( AutoReadNRI, "nri28_1" ,   "NI28_1"      );
-AUTO( AutoReadNRI, "nri28_2" ,   "NI28_2"      ); 
-AUTO( AutoReadNRI, "nri28_3" ,   "NI28_3"      );
+DeclareAutoreadableVariables("sonata", "nri/nri28_1.nr", [ "NI28_1" ] );
+DeclareAutoreadableVariables("sonata", "nri/nri28_2.nr", [ "NI28_2" ] );
+DeclareAutoreadableVariables("sonata", "nri/nri28_3.nr", [ "NI28_3" ] );
 
-AUTO( AutoReadNRI, "nri29_1" ,   "NI29_1"      );
+DeclareAutoreadableVariables("sonata", "nri/nri29_1.nr", [ "NI29_1" ] );
 
-AUTO( AutoReadNRI, "nri30_1" ,   "NI30_1"      );
+DeclareAutoreadableVariables("sonata", "nri/nri30_1.nr", [ "NI30_1" ] );
 
-AUTO( AutoReadNRI, "nri31_1" ,   "NI31_1"      );
+DeclareAutoreadableVariables("sonata", "nri/nri31_1.nr", [ "NI31_1" ] );
 
 ############################################################################
 ##
@@ -405,7 +388,7 @@
         i,     # help var: a loop variable
         tfle,  # help var: the record that holds the tfl's of the group endos
         f,     # help var: a valid function that represents a class of nr's
-        vf,endos,g,a,a_inv,h,compute_all, ns,
+        vf,endos,g,a,a_inv,h,compute_all,
         mul,   # local function: the multiplication of the nearring
        gens,  # generators of group
        imgs;  # images of gens under endomorphisms
@@ -421,45 +404,45 @@
   n := rec(); n.classes := rec();
 
   if   ( Name( group ) = "2/1" ) then  
-    n := NR_C2; ns := "2/1";
+    n := NR_C2;
   elif ( Name( group ) = "3/1" )  then
-    n := NR_C3; ns := "3/1";
+    n := NR_C3;
   elif ( Name( group ) = "4/1" )  then
-    n := NR_C4;  ns := "4/1";
+    n := NR_C4;
   elif ( Name( group ) = "4/2" )  then
-    n := NR_V4;  ns := "4/2";
+    n := NR_V4;
   elif ( Name( group ) = "5/1" )  then
-    n := NR_C5;  ns := "5/1";
+    n := NR_C5;
   elif ( Name( group ) = "6/1" )  then
-    n := NR_C6;  ns := "6/1";
+    n := NR_C6;
   elif ( Name( group ) = "6/2" )  then
-    n := NR_S3;  ns := "6/2";
+    n := NR_S3;
   elif ( Name( group ) = "7/1" )  then
-    n := NR_C7;  ns := "7/1";
+    n := NR_C7;
   elif ( Name( group ) = "8/1" )  then
-    n := NR_C8;  ns := "8/1";
+    n := NR_C8;
   elif ( Name( group ) = "8/2" )  then
-    n := NR_C2xC4;  ns := "8/2";
+    n := NR_C2xC4;
   elif ( Name( group ) = "8/3" )  then
-    n := NR_C2xC2xC2;  ns := "8/3";
+    n := NR_C2xC2xC2;
   elif ( Name( group ) = "8/4" )  then
-    n := NR_D8;  ns := "8/4";
+    n := NR_D8;
   elif ( Name( group ) = "8/5" )  then
-    n := NR_Q8;  ns := "8/5";
+    n := NR_Q8;
   elif ( Name( group ) = "9/1" )  then
-    n := NR_C9; ns := "9/1";
+    n := NR_C9;
   elif ( Name( group ) = "9/2" )  then
-    n := NR_C3xC3;  ns := "9/2";
+    n := NR_C3xC3;
   elif ( Name( group ) = "10/1" )  then
-    n := NR_C10;  ns := "10/1";
+    n := NR_C10;
   elif ( Name( group ) = "10/2" )  then
-    n := NR_D10;  ns := "10/2";
+    n := NR_D10;
   elif ( Name( group ) = "11/1" )  then
-    n := NR_C11;  ns := "11/1";
+    n := NR_C11;
   elif ( Name( group ) = "12/1" )  then
-    n := NR_C12;  ns := "12/1";
+    n := NR_C12;
   elif ( Name( group ) = "12/2" )  then
-    n := NR_C2xC6;  ns := "12/2";
+    n := NR_C2xC6;
 
   elif ( Name( group ) = "12/3" )  then
     if num in [1..5000] then
@@ -481,20 +464,20 @@
     elif num in [40001..48137] then
       n := NR_D12_9;
     fi;
-    ns := "12/3";
+
 
   elif ( Name( group ) = "12/4" )  then
-    n := NR_A4;  ns := "12/4";
+    n := NR_A4;
   elif ( Name( group ) = "12/5" )  then
-    n := NR_T;  ns := "12/5";
+    n := NR_T;
   elif ( Name( group ) = "13/1" )  then
-    n := NR_C13;  ns := "13/1";
+    n := NR_C13;
   elif ( Name( group ) = "14/1" )  then
-    n := NR_C14;  ns := "14/1";
+    n := NR_C14;
   elif ( Name( group ) = "14/2" )  then
-    n := NR_D14;  ns := "14/2";
+    n := NR_D14;
   elif ( Name( group ) = "15/1" )  then
-    n := NR_C15;  ns := "15/1";
+    n := NR_C15;
   else
     TryNextMethod();
 #    Print( "There is no group name '", group, 
@@ -588,7 +571,7 @@
         i,     # help var: a loop variable
         tfle,  # help var: the record that holds the tfl's of the group endos
         f,     # help var: a valid function that represents a class of nr's
-        vf,endos,g,a,a_inv,h,compute_all, ns,
+        vf,endos,g,a,a_inv,h,compute_all,
         mul,   # local function: the multiplication of the nearring
        gens,  # generators of group
        imgs,  # images of gens under endomorphisms
@@ -608,106 +591,106 @@
 
 
   if   ( Name( group ) = "12/3" ) then  
-    n := NI12_3; ns := "12/3";
+    n := NI12_3;
   elif ( Name( group ) = "16/1" ) then  
-    n := NI16_1; ns := "16/1";
+    n := NI16_1;
   elif ( Name( group ) = "16/2" )  then
-    n := NI16_2; ns := "16/2";
+    n := NI16_2;
   elif ( Name( group ) = "16/3" )  then
-    n := NI16_3; ns := "16/3";
+    n := NI16_3;
   elif ( Name( group ) = "16/4" )  then
-    n := NI16_4; ns := "16/4";
+    n := NI16_4;
   elif ( Name( group ) = "16/5" )  then
-    n := NI16_5; ns := "16/5";
+    n := NI16_5;
   elif ( Name( group ) = "16/6" )  then
-    n := NI16_6; ns := "16/6";
+    n := NI16_6;
   elif ( Name( group ) = "16/7" )  then
-    n := NI16_7; ns := "16/7";
+    n := NI16_7;
   elif ( Name( group ) = "16/9" )  then
-    n := NI16_9; ns := "16/9";
+    n := NI16_9;
   elif ( Name( group ) = "16/10" )  then
-    n := NI16_10; ns := "16/10";
+    n := NI16_10;
   elif ( Name( group ) = "16/11" )  then
-    n := NI16_11; ns := "16/11";
+    n := NI16_11;
 
   elif ( Name( group ) = "17/1" ) then  
-    n := NI17_1; ns := "17/1";
+    n := NI17_1;
 
   elif ( Name( group ) = "18/1" ) then  
-    n := NI18_1; ns := "18/1";
+    n := NI18_1;
   elif ( Name( group ) = "18/2" )  then
-    n := NI18_2; ns := "18/2";
+    n := NI18_2;
   elif ( Name( group ) = "18/3" )  then
-    n := NI18_3; ns := "18/3";
+    n := NI18_3;
 
   elif ( Name( group ) = "19/1" ) then  
-    n := NI19_1; ns := "19/1";
+    n := NI19_1;
 
   elif ( Name( group ) = "20/1" ) then  
-    n := NI20_1; ns := "20/1";
+    n := NI20_1;
   elif ( Name( group ) = "20/2" )  then
-    n := NI20_2; ns := "20/2";
+    n := NI20_2;
   elif ( Name( group ) = "20/3" ) then  
-    n := NI20_3; ns := "20/3";
+    n := NI20_3;
 
   elif ( Name( group ) = "21/1" ) then  
-    n := NI21_1; ns := "21/1";
+    n := NI21_1;
 
   elif ( Name( group ) = "22/1" ) then  
-    n := NI22_1; ns := "22/1";
+    n := NI22_1;
 
   elif ( Name( group ) = "23/1" ) then  
-    n := NI23_1; ns := "23/1";
+    n := NI23_1;
 
   elif ( Name( group ) = "24/1" ) then  
-    n := NI24_1; ns := "24/1";
+    n := NI24_1;
   elif ( Name( group ) = "24/2" )  then
-    n := NI24_2; ns := "24/2";
+    n := NI24_2;
   elif ( Name( group ) = "24/3" )  then
-    n := NI24_3; ns := "24/3";
+    n := NI24_3;
   elif ( Name( group ) = "24/4" )  then
-    n := NI24_4; ns := "24/4";
+    n := NI24_4;
   elif ( Name( group ) = "24/5" )  then
-    n := NI24_5; ns := "24/5";
+    n := NI24_5;
   elif ( Name( group ) = "24/7" )  then
-    n := NI24_7; ns := "24/7";
+    n := NI24_7;
   elif ( Name( group ) = "24/9" )  then
-    n := NI24_9; ns := "24/9";
+    n := NI24_9;
 
   elif ( Name( group ) = "25/1" ) then  
-    n := NI25_1; ns := "25/1";
+    n := NI25_1;
   elif ( Name( group ) = "25/2" ) then  
-    n := NI25_2; ns := "25/2";
+    n := NI25_2;
 
   elif ( Name( group ) = "26/1" ) then  
-    n := NI26_1; ns := "26/1";
+    n := NI26_1;
 
   elif ( Name( group ) = "27/1" ) then  
-    n := NI27_1; ns := "27/1";
+    n := NI27_1;
   elif ( Name( group ) = "27/2" ) then  
-    n := NI27_2; ns := "27/2";
+    n := NI27_2;
   elif ( Name( group ) = "27/3" ) then  
-    n := NI27_3; ns := "27/3";
+    n := NI27_3;
   elif ( Name( group ) = "27/4" )  then
-    n := NI27_4; ns := "27/4";
+    n := NI27_4;
   elif ( Name( group ) = "27/5" )  then
-    n := NI27_5; ns := "27/5";
+    n := NI27_5;
 
   elif ( Name( group ) = "28/1" ) then  
-    n := NI28_1; ns := "28/1";
+    n := NI28_1;
   elif ( Name( group ) = "28/2" )  then
-    n := NI28_2; ns := "28/2";
+    n := NI28_2;
   elif ( Name( group ) = "28/3" ) then  
-    n := NI28_3; ns := "28/3";
+    n := NI28_3;
 
   elif ( Name( group ) = "29/1" ) then  
-    n := NI29_1; ns := "29/1";
+    n := NI29_1;
 
   elif ( Name( group ) = "30/1" ) then  
-    n := NI30_1; ns := "30/1";
+    n := NI30_1;
 
   elif ( Name( group ) = "31/1" ) then  
-    n := NI31_1; ns := "31/1";
+    n := NI31_1;
 
   else
     Print( "There is no group name '", group,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sonata-2.9.6/lib/readgrps.g 
new/sonata-2.9.7/lib/readgrps.g
--- old/sonata-2.9.6/lib/readgrps.g     2022-12-05 23:57:06.000000000 +0100
+++ new/sonata-2.9.7/lib/readgrps.g     2025-09-23 23:43:53.000000000 +0200
@@ -1,65 +1,59 @@
-GROUP_PATH_NAME := DirectoriesPackageLibrary( "sonata", "grp" );
-
-AutoReadTW := function ( name )
-    Read( Filename( GROUP_PATH_NAME, Concatenation(name,".def") ) );
-end;
-
-AUTO( AutoReadTW,"gprime","GTW2_1","GTW3_1","GTW5_1","GTW7_1","GTW11_1",
+DeclareAutoreadableVariables("sonata", "grp/gprime.def", [ 
"GTW2_1","GTW3_1","GTW5_1","GTW7_1","GTW11_1",
                               
"GTW13_1","GTW17_1","GTW19_1","GTW23_1","GTW29_1",
-                              "GTW31_1"    );
+                              "GTW31_1" ]);
 
-AUTO( AutoReadTW,"g4","GTW4_1","GTW4_2" ); 
+DeclareAutoreadableVariables("sonata", "grp/g4.def", [ "GTW4_1","GTW4_2" ]);
 
-AUTO( AutoReadTW,"g6","GTW6_1","GTW6_2" ); 
+DeclareAutoreadableVariables("sonata", "grp/g6.def", [ "GTW6_1","GTW6_2" ]);
 
-AUTO( AutoReadTW,"g8","GTW8_1","GTW8_2","GTW8_3","GTW8_4","GTW8_5" ); 
+DeclareAutoreadableVariables("sonata", "grp/g8.def", [ 
"GTW8_1","GTW8_2","GTW8_3","GTW8_4","GTW8_5" ]);
 
-AUTO( AutoReadTW,"g9","GTW9_1","GTW9_2" ); 
+DeclareAutoreadableVariables("sonata", "grp/g9.def", [ "GTW9_1","GTW9_2" ]);
 
-AUTO( AutoReadTW,"g10","GTW10_1","GTW10_2" );
+DeclareAutoreadableVariables("sonata", "grp/g10.def", [ "GTW10_1","GTW10_2" ]);
 
-AUTO( AutoReadTW,"g12","GTW12_1","GTW12_2","GTW12_3","GTW12_4","GTW12_5" ); 
+DeclareAutoreadableVariables("sonata", "grp/g12.def", [ 
"GTW12_1","GTW12_2","GTW12_3","GTW12_4","GTW12_5" ]);
 
-AUTO( AutoReadTW,"g14","GTW14_1","GTW14_2" ); 
+DeclareAutoreadableVariables("sonata", "grp/g14.def", [ "GTW14_1","GTW14_2" ]);
 
-AUTO( AutoReadTW,"g15","GTW15_1"  ); 
+DeclareAutoreadableVariables("sonata", "grp/g15.def", [ "GTW15_1" ]);
 
-AUTO( 
AutoReadTW,"g16","GTW16_1","GTW16_2","GTW16_3","GTW16_4","GTW16_5","GTW16_6",
+DeclareAutoreadableVariables("sonata", "grp/g16.def", [ 
"GTW16_1","GTW16_2","GTW16_3","GTW16_4","GTW16_5","GTW16_6",
                           
"GTW16_7","GTW16_8","GTW16_9","GTW16_10","GTW16_11","GTW16_12",
-                          "GTW16_13","GTW16_14"  ); 
+                          "GTW16_13","GTW16_14" ]);
 
-AUTO( AutoReadTW,"g18","GTW18_1","GTW18_2","GTW18_3","GTW18_4","GTW18_5" ); 
+DeclareAutoreadableVariables("sonata", "grp/g18.def", [ 
"GTW18_1","GTW18_2","GTW18_3","GTW18_4","GTW18_5" ]);
 
-AUTO( AutoReadTW,"g20","GTW20_1","GTW20_2","GTW20_3","GTW20_4","GTW20_5" ); 
+DeclareAutoreadableVariables("sonata", "grp/g20.def", [ 
"GTW20_1","GTW20_2","GTW20_3","GTW20_4","GTW20_5" ]);
 
-AUTO( AutoReadTW,"g21","GTW21_1","GTW21_2" ); 
+DeclareAutoreadableVariables("sonata", "grp/g21.def", [ "GTW21_1","GTW21_2" ]);
 
-AUTO( AutoReadTW,"g22","GTW22_1","GTW22_2" ); 
+DeclareAutoreadableVariables("sonata", "grp/g22.def", [ "GTW22_1","GTW22_2" ]);
 
-AUTO( 
AutoReadTW,"g24","GTW24_1","GTW24_2","GTW24_3","GTW24_4","GTW24_5","GTW24_6",
+DeclareAutoreadableVariables("sonata", "grp/g24.def", [ 
"GTW24_1","GTW24_2","GTW24_3","GTW24_4","GTW24_5","GTW24_6",
                           
"GTW24_7","GTW24_8","GTW24_9","GTW24_10","GTW24_11","GTW24_12",
-                          "GTW24_13","GTW24_14","GTW24_15" ); 
+                          "GTW24_13","GTW24_14","GTW24_15" ]);
 
-AUTO( AutoReadTW,"g25","GTW25_1","GTW25_2" ); 
+DeclareAutoreadableVariables("sonata", "grp/g25.def", [ "GTW25_1","GTW25_2" ]);
 
-AUTO( AutoReadTW,"g26","GTW26_1","GTW26_2" ); 
+DeclareAutoreadableVariables("sonata", "grp/g26.def", [ "GTW26_1","GTW26_2" ]);
 
-AUTO( AutoReadTW,"g27","GTW27_1","GTW27_2","GTW27_3","GTW27_4","GTW27_5" ); 
+DeclareAutoreadableVariables("sonata", "grp/g27.def", [ 
"GTW27_1","GTW27_2","GTW27_3","GTW27_4","GTW27_5" ]);
 
-AUTO( AutoReadTW,"g28","GTW28_1","GTW28_2","GTW28_3","GTW28_4" ); 
+DeclareAutoreadableVariables("sonata", "grp/g28.def", [ 
"GTW28_1","GTW28_2","GTW28_3","GTW28_4" ]);
 
-AUTO( AutoReadTW,"g30","GTW30_1","GTW30_2","GTW30_3","GTW30_4" ); 
+DeclareAutoreadableVariables("sonata", "grp/g30.def", [ 
"GTW30_1","GTW30_2","GTW30_3","GTW30_4" ]);
 
-AUTO( AutoReadTW,"g32","GTW32_1","GTW32_2","GTW32_3","GTW32_4","GTW32_5" );
-AUTO( AutoReadTW,"g32","GTW32_6","GTW32_7","GTW32_8","GTW32_9","GTW32_10" );
-AUTO( AutoReadTW,"g32","GTW32_11","GTW32_12","GTW32_13","GTW32_14","GTW32_15" 
);
-AUTO( AutoReadTW,"g32","GTW32_16","GTW32_17","GTW32_18","GTW32_19","GTW32_20" 
);
-AUTO( AutoReadTW,"g32","GTW32_21","GTW32_22","GTW32_23","GTW32_24","GTW32_25" 
);
-AUTO( AutoReadTW,"g32","GTW32_26","GTW32_27","GTW32_28","GTW32_29","GTW32_30" 
);
-AUTO( AutoReadTW,"g32","GTW32_31","GTW32_32","GTW32_33","GTW32_34","GTW32_35" 
);
-AUTO( AutoReadTW,"g32","GTW32_36","GTW32_37","GTW32_38","GTW32_39","GTW32_40" 
);
-AUTO( AutoReadTW,"g32","GTW32_41","GTW32_42","GTW32_43","GTW32_44","GTW32_45" 
);
-AUTO( AutoReadTW,"g32","GTW32_46","GTW32_47","GTW32_48","GTW32_49","GTW32_50" 
);
-AUTO( AutoReadTW,"g32","GTW32_51" ); 
+DeclareAutoreadableVariables("sonata", "grp/g32.def", [ 
"GTW32_1","GTW32_2","GTW32_3","GTW32_4","GTW32_5" ]);
+DeclareAutoreadableVariables("sonata", "grp/g32.def", [ 
"GTW32_6","GTW32_7","GTW32_8","GTW32_9","GTW32_10" ]);
+DeclareAutoreadableVariables("sonata", "grp/g32.def", [ 
"GTW32_11","GTW32_12","GTW32_13","GTW32_14","GTW32_15" ]);
+DeclareAutoreadableVariables("sonata", "grp/g32.def", [ 
"GTW32_16","GTW32_17","GTW32_18","GTW32_19","GTW32_20" ]);
+DeclareAutoreadableVariables("sonata", "grp/g32.def", [ 
"GTW32_21","GTW32_22","GTW32_23","GTW32_24","GTW32_25" ]);
+DeclareAutoreadableVariables("sonata", "grp/g32.def", [ 
"GTW32_26","GTW32_27","GTW32_28","GTW32_29","GTW32_30" ]);
+DeclareAutoreadableVariables("sonata", "grp/g32.def", [ 
"GTW32_31","GTW32_32","GTW32_33","GTW32_34","GTW32_35" ]);
+DeclareAutoreadableVariables("sonata", "grp/g32.def", [ 
"GTW32_36","GTW32_37","GTW32_38","GTW32_39","GTW32_40" ]);
+DeclareAutoreadableVariables("sonata", "grp/g32.def", [ 
"GTW32_41","GTW32_42","GTW32_43","GTW32_44","GTW32_45" ]);
+DeclareAutoreadableVariables("sonata", "grp/g32.def", [ 
"GTW32_46","GTW32_47","GTW32_48","GTW32_49","GTW32_50" ]);
+DeclareAutoreadableVariables("sonata", "grp/g32.def", [ "GTW32_51" ]);
 
-AUTO( AutoReadTW,"grplist","GroupList");
+DeclareAutoreadableVariables("sonata", "grp/grplist.def", [ "GroupList" ]);

Reply via email to