Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package gap-singular for openSUSE:Factory 
checked in at 2026-04-15 16:04:38
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gap-singular (Old)
 and      /work/SRC/openSUSE:Factory/.gap-singular.new.21863 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "gap-singular"

Wed Apr 15 16:04:38 2026 rev:4 rq:1346891 version:2026.04.09

Changes:
--------
--- /work/SRC/openSUSE:Factory/gap-singular/gap-singular.changes        
2025-08-28 17:18:57.863959477 +0200
+++ /work/SRC/openSUSE:Factory/.gap-singular.new.21863/gap-singular.changes     
2026-04-15 16:06:33.807914819 +0200
@@ -1,0 +2,6 @@
+Tue Apr 14 13:47:14 UTC 2026 - Jan Engelhardt <[email protected]>
+
+- Update to release 2026.04.09
+  * Janitorial changes only
+
+-------------------------------------------------------------------

Old:
----
  singular-2025.08.26.tar.gz

New:
----
  singular-2026.04.09.tar.gz

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

Other differences:
------------------
++++++ gap-singular.spec ++++++
--- /var/tmp/diff_new_pack.WPk0lr/_old  2026-04-15 16:06:36.012005445 +0200
+++ /var/tmp/diff_new_pack.WPk0lr/_new  2026-04-15 16:06:36.024005939 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package gap-singular
 #
-# Copyright (c) 2024 SUSE LLC
+# Copyright (c) 2026 SUSE LLC and contributors
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
 
 
 Name:           gap-singular
-Version:        2025.08.26
+Version:        2026.04.09
 Release:        0
 Summary:        GAP: An interface to Singular
 License:        GPL-2.0-or-later

++++++ _scmsync.obsinfo ++++++
--- /var/tmp/diff_new_pack.WPk0lr/_old  2026-04-15 16:06:36.404021564 +0200
+++ /var/tmp/diff_new_pack.WPk0lr/_new  2026-04-15 16:06:36.436022880 +0200
@@ -1,5 +1,5 @@
-mtime: 1756341137
-commit: 8bb308c3b4a578d726de98628b64c019708e6a126edcef0c58bd58e6c915cf85
+mtime: 1776174449
+commit: e361843e11acbd3ea427b752c5053e2c7cfaa2582d78e5b325ea8450a632899a
 url: https://src.opensuse.org/jengelh/gap-singular
 revision: master
 

++++++ build.specials.obscpio ++++++

++++++ build.specials.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/.gitignore new/.gitignore
--- old/.gitignore      1970-01-01 01:00:00.000000000 +0100
+++ new/.gitignore      2026-04-14 15:47:37.000000000 +0200
@@ -0,0 +1 @@
+.osc

++++++ singular-2025.08.26.tar.gz -> singular-2026.04.09.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/singular-2025.08.26/CHANGES.md 
new/singular-2026.04.09/CHANGES.md
--- old/singular-2025.08.26/CHANGES.md  2025-08-26 15:36:32.000000000 +0200
+++ new/singular-2026.04.09/CHANGES.md  2026-04-09 02:00:00.000000000 +0200
@@ -1,5 +1,8 @@
 This file describes changes in the GAP package `singular`.
 
+- 2026.04.09
+  - janitorial changes
+
 - 2025.08.26
     - Add support for bigint, bigintvec, and bigintmat
       (contributed by Jerry James)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/singular-2025.08.26/PackageInfo.g 
new/singular-2026.04.09/PackageInfo.g
--- old/singular-2025.08.26/PackageInfo.g       2025-08-26 15:36:32.000000000 
+0200
+++ new/singular-2026.04.09/PackageInfo.g       2026-04-09 02:00:00.000000000 
+0200
@@ -11,7 +11,7 @@
 SetPackageInfo( rec(
 PackageName := "singular",
 Subtitle := "A GAP interface to Singular",
-Version := "2025.08.26",
+Version := "2026.04.09",
 Date := Concatenation( ~.Version{[ 9, 10 ]}, "/", ~.Version{[ 6, 7 ]}, "/", 
~.Version{[ 1 .. 4 ]} ),
 License := "GPL-2.0-or-later",
 
@@ -88,6 +88,7 @@
   GAP := ">=4.8",
   NeededOtherPackages := [  ],
   SuggestedOtherPackages := [  ],
+  NeededSystemPackages := rec( Ubuntu := [["singular"]], Homebrew := 
[["singular"]] ),
   ExternalConditions := [ ["Requires the computer algebra system Singular",
                            "https://www.singular.uni-kl.de/";] ]
 ),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/singular-2025.08.26/README.md 
new/singular-2026.04.09/README.md
--- old/singular-2025.08.26/README.md   2025-08-26 15:36:32.000000000 +0200
+++ new/singular-2026.04.09/README.md   2026-04-09 02:00:00.000000000 +0200
@@ -1,4 +1,4 @@
-[![Build 
Status](https://github.com/gap-packages/singular/workflows/CI/badge.svg?branch=master)](https://github.com/gap-packages/singular/actions?query=workflow%3ACI+branch%3Amaster)
+[![CI](https://github.com/gap-packages/singular/actions/workflows/CI.yml/badge.svg)](https://github.com/gap-packages/singular/actions/workflows/CI.yml)
 [![Code 
Coverage](https://codecov.io/github/gap-packages/singular/coverage.svg)](https://codecov.io/gh/gap-packages/singular)
 
 # singular: a GAP interface to Singular
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/singular-2025.08.26/doc/chap0.html 
new/singular-2026.04.09/doc/chap0.html
--- old/singular-2025.08.26/doc/chap0.html      2025-08-27 16:45:28.000000000 
+0200
+++ new/singular-2026.04.09/doc/chap0.html      2026-04-09 02:00:00.000000000 
+0200
@@ -29,10 +29,10 @@
 <h2>A <strong class="pkg">GAP</strong> interface to Singular</h2>
 
 <p>
-    2025.08.26</p>
+    2026.04.09</p>
 
 <p>
-    26 August 2025
+    9 April 2026
   </p>
 
 </div>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/singular-2025.08.26/doc/chap0.txt 
new/singular-2026.04.09/doc/chap0.txt
--- old/singular-2025.08.26/doc/chap0.txt       2025-08-27 16:45:24.000000000 
+0200
+++ new/singular-2026.04.09/doc/chap0.txt       2026-04-09 02:00:00.000000000 
+0200
@@ -6,10 +6,10 @@
                           A GAP interface to Singular 
   
   
-                                   2025.08.26
+                                   2026.04.09
   
   
-                                 26 August 2025
+                                  9 April 2026
   
   
                                 Marco Costantini
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/singular-2025.08.26/doc/chap0_mj.html 
new/singular-2026.04.09/doc/chap0_mj.html
--- old/singular-2025.08.26/doc/chap0_mj.html   2025-08-27 16:45:28.000000000 
+0200
+++ new/singular-2026.04.09/doc/chap0_mj.html   2026-04-09 02:00:00.000000000 
+0200
@@ -32,10 +32,10 @@
 <h2>A <strong class="pkg">GAP</strong> interface to Singular</h2>
 
 <p>
-    2025.08.26</p>
+    2026.04.09</p>
 
 <p>
-    26 August 2025
+    9 April 2026
   </p>
 
 </div>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/singular-2025.08.26/doc/chap1.html 
new/singular-2026.04.09/doc/chap1.html
--- old/singular-2025.08.26/doc/chap1.html      2025-08-27 16:45:28.000000000 
+0200
+++ new/singular-2026.04.09/doc/chap1.html      2026-04-09 02:00:00.000000000 
+0200
@@ -227,9 +227,9 @@
 <h5>1.2-3 <span class="Heading">Installing the package
 <strong class="pkg">singular</strong></span></h5>
 
-<p>The package <strong class="pkg">singular</strong> is installed and loaded 
as a normal <strong class="pkg">GAP</strong> package: see the <strong 
class="pkg">GAP</strong> documentation <a 
href="../../../doc/ref/chap76_mj.html#X82473E4B8756C6CD"><span 
class="RefLink">Reference: Installing a GAP Package</span></a> and <a 
href="../../../doc/ref/chap76_mj.html#X825CBC5B86F8F811"><span 
class="RefLink">Reference: Loading a GAP Package</span></a>.</p>
+<p>The package <strong class="pkg">singular</strong> is installed and loaded 
as a normal <strong class="pkg">GAP</strong> package: see the <strong 
class="pkg">GAP</strong> documentation <a 
href="../../../doc/ref/chap76.html#X82473E4B8756C6CD"><span 
class="RefLink">Reference: Installing a GAP Package</span></a> and <a 
href="../../../doc/ref/chap76.html#X825CBC5B86F8F811"><span 
class="RefLink">Reference: Loading a GAP Package</span></a>.</p>
 
-<p>Starting with version 4.4 of <strong class="pkg">GAP</strong>, the package 
<strong class="pkg">singular</strong> is distributed together with <strong 
class="pkg">GAP</strong>. Hence, if <strong class="pkg">GAP</strong> is already 
installed with all the distributed packages, then also the package <strong 
class="pkg">singular</strong> is installed. However, if the package <strong 
class="pkg">singular</strong> is not included in your <strong 
class="pkg">GAP</strong> installation, it can be downloaded and unpacked in the 
<code class="file">pkg/</code> directory of the <strong 
class="pkg">GAP</strong> installation. If you don't have write access to the 
<code class="file">pkg/</code> directory in your main <strong 
class="pkg">GAP</strong> installation you can use private directories as 
explained in the <strong class="pkg">GAP</strong> documentation <a 
href="../../../doc/ref/chap9_mj.html#X7A4973627A5DB27D"><span 
class="RefLink">Reference: GAP Root Directories</span></a>. The package <s
 trong class="pkg">singular</strong> doesn't require compilation.</p>
+<p>Starting with version 4.4 of <strong class="pkg">GAP</strong>, the package 
<strong class="pkg">singular</strong> is distributed together with <strong 
class="pkg">GAP</strong>. Hence, if <strong class="pkg">GAP</strong> is already 
installed with all the distributed packages, then also the package <strong 
class="pkg">singular</strong> is installed. However, if the package <strong 
class="pkg">singular</strong> is not included in your <strong 
class="pkg">GAP</strong> installation, it can be downloaded and unpacked in the 
<code class="file">pkg/</code> directory of the <strong 
class="pkg">GAP</strong> installation. If you don't have write access to the 
<code class="file">pkg/</code> directory in your main <strong 
class="pkg">GAP</strong> installation you can use private directories as 
explained in the <strong class="pkg">GAP</strong> documentation <a 
href="../../../doc/ref/chap9.html#X7A4973627A5DB27D"><span 
class="RefLink">Reference: GAP Root Directories</span></a>. The package <stro
 ng class="pkg">singular</strong> doesn't require compilation.</p>
 
 <p><a id="X8229A3C4793932BA" name="X8229A3C4793932BA"></a></p>
 
@@ -290,7 +290,7 @@
 <h4>1.3 <span class="Heading">Interaction with
 <strong class="pkg">Singular</strong></span></h4>
 
-<p>The user must load the package <strong class="pkg">singular</strong> with 
<code class="func">LoadPackage</code> (<a 
href="../../../doc/ref/chap76_mj.html#X79B373A77B29D1F5"><span 
class="RefLink">Reference: LoadPackage</span></a>).</p>
+<p>The user must load the package <strong class="pkg">singular</strong> with 
<code class="func">LoadPackage</code> (<a 
href="../../../doc/ref/chap76.html#X79B373A77B29D1F5"><span 
class="RefLink">Reference: LoadPackage</span></a>).</p>
 
 <p><a id="X79C5E6F27C37DA10" name="X79C5E6F27C37DA10"></a></p>
 
@@ -370,7 +370,7 @@
 </ul>
 <p>For some example see those for the function <code 
class="func">SetTermOrdering</code> (<a 
href="chap1.html#X813A17AF85BFACB9"><span class="RefLink">1.3-5</span></a>).</p>
 
-<p>Let us remember that <var class="Arg">CyclotomicField</var> and <var 
class="Arg">GaloisField</var> can be abbreviated respectively to <var 
class="Arg">CF</var> and <var class="Arg">GF</var>; these forms are used also 
when <strong class="pkg">GAP</strong> prints cyclotomic or Galois fields. See 
the <strong class="pkg">GAP</strong> documentation about the functions: <code 
class="func">CyclotomicField</code> (<a 
href="../../../doc/ref/chap60_mj.html#X80D21D80850EFA4B"><span 
class="RefLink">Reference: CyclotomicField for (subfield and) 
conductor</span></a>), <code class="func">GaloisField</code> (<a 
href="../../../doc/ref/chap59_mj.html#X8592DBB086A8A9BE"><span 
class="RefLink">Reference: GaloisField for field size</span></a>), <code 
class="func">AlgebraicExtension</code> (<a 
href="../../../doc/ref/chap67_mj.html#X7CDA90537D2BAC8A"><span 
class="RefLink">Reference: AlgebraicExtension</span></a>), and the chapters: <a 
href="../../../doc/ref/chap17_mj.html#X87003045878E74DF"><span class=
 "RefLink">Reference: Rational Numbers</span></a>, <a 
href="../../../doc/ref/chap60_mj.html#X80510B5880521FDC"><span 
class="RefLink">Reference: Abelian Number Fields</span></a>, <a 
href="../../../doc/ref/chap59_mj.html#X7893ABF67A028802"><span 
class="RefLink">Reference: Finite Fields</span></a>, <a 
href="../../../doc/ref/chap67_mj.html#X85732CEF7ECFCA68"><span 
class="RefLink">Reference: Algebraic extensions of fields</span></a>.</p>
+<p>Let us remember that <var class="Arg">CyclotomicField</var> and <var 
class="Arg">GaloisField</var> can be abbreviated respectively to <var 
class="Arg">CF</var> and <var class="Arg">GF</var>; these forms are used also 
when <strong class="pkg">GAP</strong> prints cyclotomic or Galois fields. See 
the <strong class="pkg">GAP</strong> documentation about the functions: <code 
class="func">CyclotomicField</code> (<a 
href="../../../doc/ref/chap60.html#X80D21D80850EFA4B"><span 
class="RefLink">Reference: CyclotomicField for (subfield and) 
conductor</span></a>), <code class="func">GaloisField</code> (<a 
href="../../../doc/ref/chap59.html#X8592DBB086A8A9BE"><span 
class="RefLink">Reference: GaloisField for field size</span></a>), <code 
class="func">AlgebraicExtension</code> (<a 
href="../../../doc/ref/chap67.html#X7CDA90537D2BAC8A"><span 
class="RefLink">Reference: AlgebraicExtension</span></a>), and the chapters: <a 
href="../../../doc/ref/chap17.html#X87003045878E74DF"><span class="RefLink">Re
 ference: Rational Numbers</span></a>, <a 
href="../../../doc/ref/chap60.html#X80510B5880521FDC"><span 
class="RefLink">Reference: Abelian Number Fields</span></a>, <a 
href="../../../doc/ref/chap59.html#X7893ABF67A028802"><span 
class="RefLink">Reference: Finite Fields</span></a>, <a 
href="../../../doc/ref/chap67.html#X85732CEF7ECFCA68"><span 
class="RefLink">Reference: Algebraic extensions of fields</span></a>.</p>
 
 <p><a id="X813A17AF85BFACB9" name="X813A17AF85BFACB9"></a></p>
 
@@ -384,9 +384,9 @@
 
 <p>If this value is a list, it must be of the form <var class="Arg">[ str_1, 
d_1, str_2, d_2, ... ]</var>, where each <var class="Arg">str_i</var> is a 
<strong class="pkg">Singular</strong> ordering given as a string. Each <var 
class="Arg">d_i</var> must be a number, and specifies the number of variables 
having that ordering; however, if <var class="Arg">str_i</var> is a weighted 
order, like <var class="Arg">"wp"</var> (weighted reverse lexicographical 
ordering) or <var class="Arg">"Wp"</var> (weighted lexicographical ordering), 
then the corresponding <var class="Arg">d_i</var> must be a list of positive 
integers that specifies the weight of each variable. The sum of the <var 
class="Arg">d_i</var>'s (if numbers) or of their lengths (if lists) must be 
equal to the number of variables of the ring <var class="Arg">R</var>.</p>
 
-<p>This value can also be a monomial ordering of <strong 
class="pkg">GAP</strong>: currently supported are <var 
class="Arg">MonomialLexOrdering</var>, <var 
class="Arg">MonomialGrevlexOrdering</var>, and <var 
class="Arg">MonomialGrlexOrdering</var> <a 
href="../../../doc/ref/chap66_mj.html#X86E2ADEA784AD163"><span 
class="RefLink">Reference: Monomial Orderings</span></a>.</p>
+<p>This value can also be a monomial ordering of <strong 
class="pkg">GAP</strong>: currently supported are <var 
class="Arg">MonomialLexOrdering</var>, <var 
class="Arg">MonomialGrevlexOrdering</var>, and <var 
class="Arg">MonomialGrlexOrdering</var> <a 
href="../../../doc/ref/chap66.html#X86E2ADEA784AD163"><span 
class="RefLink">Reference: Monomial Orderings</span></a>.</p>
 
-<p><var class="Arg">TermOrdering</var> is a mutable attribute, see the <strong 
class="pkg">GAP</strong> documentation of <code 
class="func">DeclareAttribute</code> (<a 
href="../../../doc/ref/chap13_mj.html#X7A00FC8A7A677A56"><span 
class="RefLink">Reference: DeclareAttribute</span></a>); if it is changed on 
the <strong class="pkg">GAP</strong> side, it is necessary thereafter to send 
again the ring to <strong class="pkg">Singular</strong> with <code 
class="func">SingularSetBaseRing</code> (<a 
href="chap1.html#X84A3CD498011A10C"><span class="RefLink">1.3-6</span></a>).</p>
+<p><var class="Arg">TermOrdering</var> is a mutable attribute, see the <strong 
class="pkg">GAP</strong> documentation of <code 
class="func">DeclareAttribute</code> (<a 
href="../../../doc/ref/chap13.html#X7A00FC8A7A677A56"><span 
class="RefLink">Reference: DeclareAttribute</span></a>); if it is changed on 
the <strong class="pkg">GAP</strong> side, it is necessary thereafter to send 
again the ring to <strong class="pkg">Singular</strong> with <code 
class="func">SingularSetBaseRing</code> (<a 
href="chap1.html#X84A3CD498011A10C"><span class="RefLink">1.3-6</span></a>).</p>
 
 <p><var class="Arg">SetTermOrdering</var> can be used to set the term ordering 
of a ring. It is not mandatory to assign a term ordering: if no term ordering 
is set, then the default <var class="Arg">"dp"</var> will be used. If it is 
set, the term ordering must be set <em>before</em> the ring is sent to <strong 
class="pkg">Singular</strong> with <code 
class="func">SingularSetBaseRing</code> (<a 
href="chap1.html#X84A3CD498011A10C"><span class="RefLink">1.3-6</span></a>), 
otherwise, <strong class="pkg">Singular</strong> will ignore that term 
ordering, and will use the previous value if any, or the default <var 
class="Arg">"dp"</var>.</p>
 
@@ -580,11 +580,11 @@
 <h5>1.5-2 SINGULARGBASIS</h5>
 
 <div class="func"><table class="func" width="100%"><tr><td 
class="tdleft"><code class="func">&#8227; SINGULARGBASIS</code></td><td 
class="tdright">(&nbsp;global variable&nbsp;)</td></tr></table></div>
-<p>This variable is a record containing the component <var 
class="Arg">GroebnerBasis</var>. When the variable SINGULARGBASIS is assigned 
to the <strong class="pkg">GAP</strong> global variable <var 
class="Arg">GBASIS</var>, then the computations of Groebner bases via <strong 
class="pkg">GAP</strong>'s internal function for that, <code 
class="func">GroebnerBasis</code> (<a 
href="../../../doc/ref/chap66_mj.html#X7A43611E876B7560"><span 
class="RefLink">Reference: GroebnerBasis</span></a>), are done by <strong 
class="pkg">Singular</strong>.</p>
+<p>This variable is a record containing the component <var 
class="Arg">GroebnerBasis</var>. When the variable SINGULARGBASIS is assigned 
to the <strong class="pkg">GAP</strong> global variable <var 
class="Arg">GBASIS</var>, then the computations of Groebner bases via <strong 
class="pkg">GAP</strong>'s internal function for that, <code 
class="func">GroebnerBasis</code> (<a 
href="../../../doc/ref/chap66.html#X7A43611E876B7560"><span 
class="RefLink">Reference: GroebnerBasis</span></a>), are done by <strong 
class="pkg">Singular</strong>.</p>
 
 <p><strong class="pkg">Singular</strong> claims that it <q>features one of the 
fastest and most general implementations of various algorithms for computing 
Groebner bases</q>. The <strong class="pkg">GAP</strong>'s internal function 
claims to be <q>a na{\"\i}ve implementation of Buchberger's algorithm (which is 
mainly intended as a teaching tool): it might not be sufficient for serious 
problems.</q></p>
 
-<p>(Note in the following example that the Groebner bases calculated by the 
<strong class="pkg">GAP</strong> internal function are in general not reduced; 
for reduced bases see the <strong class="pkg">GAP</strong> function <code 
class="func">ReducedGroebnerBasis</code> (<a 
href="../../../doc/ref/chap66_mj.html#X7DEF286384967C9E"><span 
class="RefLink">Reference: ReducedGroebnerBasis</span></a>).)</p>
+<p>(Note in the following example that the Groebner bases calculated by the 
<strong class="pkg">GAP</strong> internal function are in general not reduced; 
for reduced bases see the <strong class="pkg">GAP</strong> function <code 
class="func">ReducedGroebnerBasis</code> (<a 
href="../../../doc/ref/chap66.html#X7DEF286384967C9E"><span 
class="RefLink">Reference: ReducedGroebnerBasis</span></a>).)</p>
 
 
 <div class="example"><pre>
@@ -764,7 +764,7 @@
       [ 0*Z(7), 0*Z(7), Z(7)^3, Z(7), Z(7)^2 ] ], 5, 3 ]
 </pre></div>
 
-<p>This generator matrix can be fed into the <strong 
class="pkg">GUAVA</strong> command <code class="func">GeneratorMatCode</code> 
(<a href="../../../pkg/guava/doc/chap5_mj.html#X83F400A681CFC0D6"><span 
class="RefLink">GUAVA: GeneratorMatCode</span></a>) to create a linear code in 
<strong class="pkg">GAP</strong>, which in turn can be fed into the <strong 
class="pkg">GUAVA</strong> command <code class="func">MinimumDistance</code> 
(<a href="../../../pkg/guava/doc/chap4_mj.html#X7B31613D8538BD29"><span 
class="RefLink">GUAVA: MinimumDistance</span></a>) to compute the minimum 
distance of the code.</p>
+<p>This generator matrix can be fed into the <strong 
class="pkg">GUAVA</strong> command <code class="func">GeneratorMatCode</code> 
(<a href="../../../pkg/guava/doc/chap5.html#X83F400A681CFC0D6"><span 
class="RefLink">GUAVA: GeneratorMatCode</span></a>) to create a linear code in 
<strong class="pkg">GAP</strong>, which in turn can be fed into the <strong 
class="pkg">GUAVA</strong> command <code class="func">MinimumDistance</code> 
(<a href="../../../pkg/guava/doc/chap4.html#X7B31613D8538BD29"><span 
class="RefLink">GUAVA: MinimumDistance</span></a>) to compute the minimum 
distance of the code.</p>
 
 
 <div class="example"><pre>
@@ -787,9 +787,9 @@
 
 <p>There is an extension of <strong class="pkg">Singular</strong>, named 
<strong class="pkg">Plural</strong>, which deals with certain noncommutative 
polynomial rings; see the <strong class="pkg">Singular</strong> documentation, 
section ``7. PLURAL''. Currently, <strong class="pkg">GAP</strong> doesn't 
support these noncommutative polynomial rings. The user of the <strong 
class="pkg">Singular</strong> may use the features of <strong 
class="pkg">Plural</strong> by calling the <strong 
class="pkg">Singular</strong> function <var class="Arg">ncalgebra</var> via 
<var class="Arg">SingularInterface</var>. In this case, extreme care is needed, 
because on the <strong class="pkg">GAP</strong> side the polynomial will still 
be commutative.</p>
 
-<p>For the low-level communication with <strong class="pkg">Singular</strong>, 
the interface relies on the <strong class="pkg">GAP</strong> function <code 
class="func">InputOutputLocalProcess</code> (<a 
href="../../../doc/ref/chap10_mj.html#X820799A3824684AC"><span 
class="RefLink">Reference: InputOutputLocalProcess</span></a>), and this 
function is available only in <strong class="pkg">GAP</strong> 4.2 (or newer) 
on a Unix environment or in <strong class="pkg">GAP</strong> 4.4 (or newer) on 
Windows; auto-detection is used. In this case, <strong class="pkg">GAP</strong> 
interacts with a unique continuous session of <strong 
class="pkg">Singular</strong>.</p>
+<p>For the low-level communication with <strong class="pkg">Singular</strong>, 
the interface relies on the <strong class="pkg">GAP</strong> function <code 
class="func">InputOutputLocalProcess</code> (<a 
href="../../../doc/ref/chap10.html#X820799A3824684AC"><span 
class="RefLink">Reference: InputOutputLocalProcess</span></a>), and this 
function is available only in <strong class="pkg">GAP</strong> 4.2 (or newer) 
on a Unix environment or in <strong class="pkg">GAP</strong> 4.4 (or newer) on 
Windows; auto-detection is used. In this case, <strong class="pkg">GAP</strong> 
interacts with a unique continuous session of <strong 
class="pkg">Singular</strong>.</p>
 
-<p>In the case that the <strong class="pkg">GAP</strong> function <var 
class="Arg">InputOutputLocalProcess</var> is not available, then the singular 
interface will use the <strong class="pkg">GAP</strong> function <code 
class="func">Process</code> (<a 
href="../../../doc/ref/chap11_mj.html#X7B09033178D1107A"><span 
class="RefLink">Reference: Process</span></a>). In this case only a limited 
subset of the functionality of the interface are available: for example <code 
class="func">StartSingular</code> (<a href="chap1.html#X79C5E6F27C37DA10"><span 
class="RefLink">1.3-1</span></a>) and <code 
class="func">GeneratorsOfInvariantRing</code> (<a 
href="chap1.html#X7EAC34C984599470"><span class="RefLink">1.5-7</span></a>) are 
not available, but <code class="func">GroebnerBasis</code> (<a 
href="chap1.html#X7A43611E876B7560"><span class="RefLink">1.5-1</span></a>) is; 
<code class="func">SingularInterface</code> (<a 
href="chap1.html#X876BA78F7CF049C3"><span class="RefLink">1.3-8</span></a>) 
support
 s less data types. In this case, for each function call, a new session of 
<strong class="pkg">Singular</strong> is started and quit.</p>
+<p>In the case that the <strong class="pkg">GAP</strong> function <var 
class="Arg">InputOutputLocalProcess</var> is not available, then the singular 
interface will use the <strong class="pkg">GAP</strong> function <code 
class="func">Process</code> (<a 
href="../../../doc/ref/chap11.html#X7B09033178D1107A"><span 
class="RefLink">Reference: Process</span></a>). In this case only a limited 
subset of the functionality of the interface are available: for example <code 
class="func">StartSingular</code> (<a href="chap1.html#X79C5E6F27C37DA10"><span 
class="RefLink">1.3-1</span></a>) and <code 
class="func">GeneratorsOfInvariantRing</code> (<a 
href="chap1.html#X7EAC34C984599470"><span class="RefLink">1.5-7</span></a>) are 
not available, but <code class="func">GroebnerBasis</code> (<a 
href="chap1.html#X7A43611E876B7560"><span class="RefLink">1.5-1</span></a>) is; 
<code class="func">SingularInterface</code> (<a 
href="chap1.html#X876BA78F7CF049C3"><span class="RefLink">1.3-8</span></a>) 
supports l
 ess data types. In this case, for each function call, a new session of <strong 
class="pkg">Singular</strong> is started and quit.</p>
 
 <p><a id="X82CDC01B7AABF5F5" name="X82CDC01B7AABF5F5"></a></p>
 
@@ -833,7 +833,7 @@
 
 <h5>1.7-3 <span class="Heading">Test file</span></h5>
 
-<p>The following performs a test of the package functionality using a test 
file <a href="../../../doc/ref/chap7_mj.html#X801051CC86594630"><span 
class="RefLink">Reference: Test Files</span></a>.</p>
+<p>The following performs a test of the package functionality using a test 
file <a href="../../../doc/ref/chap7.html#X801051CC86594630"><span 
class="RefLink">Reference: Test Files</span></a>.</p>
 
 
 <div class="example"><pre>
@@ -867,7 +867,7 @@
 
 <p>A corresponding problem would happen if the user works directly with 
<strong class="pkg">Singular</strong> and forgets to define the base-ring at 
first.</p>
 
-<p>As explained in the <strong class="pkg">GAP</strong> documentation <a 
href="../../../doc/ref/chap66_mj.html#X7A14A6588268810A"><span 
class="RefLink">Reference: Polynomials and Rational Functions</span></a>, given 
a ring <var class="Arg">R</var>, <strong class="pkg">GAP</strong> does not 
consider <var class="Arg">R</var> as a subset of a polynomial ring over <var 
class="Arg">R</var>: for example the zero of <var class="Arg">R</var> (<span 
class="SimpleMath">0</span>) and the zero of the polynomial ring (<span 
class="SimpleMath">0x^0</span>) are different objects. <strong 
class="pkg">GAP</strong> prints these different objects in the same way, and 
this fact may be misleading. This is a feature of <strong 
class="pkg">GAP</strong> independent from the package <strong 
class="pkg">singular</strong>, but it is important to keep it in mind, as most 
of the objects used by <strong class="pkg">Singular</strong> are polynomials, 
or their coefficients.</p>
+<p>As explained in the <strong class="pkg">GAP</strong> documentation <a 
href="../../../doc/ref/chap66.html#X7A14A6588268810A"><span 
class="RefLink">Reference: Polynomials and Rational Functions</span></a>, given 
a ring <var class="Arg">R</var>, <strong class="pkg">GAP</strong> does not 
consider <var class="Arg">R</var> as a subset of a polynomial ring over <var 
class="Arg">R</var>: for example the zero of <var class="Arg">R</var> (<span 
class="SimpleMath">0</span>) and the zero of the polynomial ring (<span 
class="SimpleMath">0x^0</span>) are different objects. <strong 
class="pkg">GAP</strong> prints these different objects in the same way, and 
this fact may be misleading. This is a feature of <strong 
class="pkg">GAP</strong> independent from the package <strong 
class="pkg">singular</strong>, but it is important to keep it in mind, as most 
of the objects used by <strong class="pkg">Singular</strong> are polynomials, 
or their coefficients.</p>
 
 <p><a id="X7D38248D79425B28" name="X7D38248D79425B28"></a></p>
 
@@ -875,7 +875,7 @@
 
 <p>Errors may occur on the <strong class="pkg">Singular</strong> side, for 
instance using <code class="func">SingularInterface</code> (<a 
href="chap1.html#X876BA78F7CF049C3"><span class="RefLink">1.3-8</span></a>) if 
the arguments supplied are not appropriate for the called function. In general, 
it is still an open problem to find a satisfactory way to handle in <strong 
class="pkg">GAP</strong> the errors of this kind.</p>
 
-<p>At the moment, when an error on the <strong class="pkg">Singular</strong> 
side happens, <strong class="pkg">Singular</strong> may print an error message 
on the so-called ``standard error''; this message may appear on the screen, but 
it is not logged by the <strong class="pkg">GAP</strong> function <code 
class="func">LogTo</code> (<a 
href="../../../doc/ref/chap9_mj.html#X79813A6686894960"><span 
class="RefLink">Reference: LogTo</span></a>). The interface prints <var 
class="Arg">No output from Singular</var>, and then the trivial object (of the 
type specified as the third argument of <var 
class="Arg">SingularInterface</var>) may be returned.</p>
+<p>At the moment, when an error on the <strong class="pkg">Singular</strong> 
side happens, <strong class="pkg">Singular</strong> may print an error message 
on the so-called ``standard error''; this message may appear on the screen, but 
it is not logged by the <strong class="pkg">GAP</strong> function <code 
class="func">LogTo</code> (<a 
href="../../../doc/ref/chap9.html#X79813A6686894960"><span 
class="RefLink">Reference: LogTo</span></a>). The interface prints <var 
class="Arg">No output from Singular</var>, and then the trivial object (of the 
type specified as the third argument of <var 
class="Arg">SingularInterface</var>) may be returned.</p>
 
 <p><a id="X7C8AE6BD787CD237" name="X7C8AE6BD787CD237"></a></p>
 
@@ -883,7 +883,7 @@
 
 <p>As every software, also this package may contain bugs. If you find a bug, 
or a missing feature, or some other problem, or if you have comments and 
suggestions, or if you need some help, you may do so via our issue tracker at 
<span class="URL"><a 
href="https://github.com/gap-packages/singular/issues";>https://github.com/gap-packages/singular/issues</a></span>.
 Please include in the report the code that causes the problem, so that we can 
replicate the problem.</p>
 
-<p>If appropriate, you can set <code class="func">InfoSingular</code> (<a 
href="chap1.html#X843C50B18098609A"><span class="RefLink">1.7-8</span></a>) to 
<var class="Arg">3</var>, to see what happens between <strong 
class="pkg">GAP</strong> and <strong class="pkg">Singular</strong> (but this 
may give a lot of output). Note that <code class="func">LogTo</code> (<a 
href="../../../doc/ref/chap9_mj.html#X79813A6686894960"><span 
class="RefLink">Reference: LogTo</span></a>) does not log messages written 
directly on the screen by <strong class="pkg">Singular</strong>.</p>
+<p>If appropriate, you can set <code class="func">InfoSingular</code> (<a 
href="chap1.html#X843C50B18098609A"><span class="RefLink">1.7-8</span></a>) to 
<var class="Arg">3</var>, to see what happens between <strong 
class="pkg">GAP</strong> and <strong class="pkg">Singular</strong> (but this 
may give a lot of output). Note that <code class="func">LogTo</code> (<a 
href="../../../doc/ref/chap9.html#X79813A6686894960"><span 
class="RefLink">Reference: LogTo</span></a>) does not log messages written 
directly on the screen by <strong class="pkg">Singular</strong>.</p>
 
 <p>Every report about this package is welcome, however the probability that 
your problem will be fixed quickly increases if you read the text ``How to 
Report Bugs Effectively'', <span class="URL"><a 
href="https://www.chiark.greenend.org.uk/~sgtatham/bugs.html";>https://www.chiark.greenend.org.uk/~sgtatham/bugs.html</a></span>
 , and send a bug report according to this text.</p>
 
@@ -916,7 +916,7 @@
 <h5>1.7-8 InfoSingular</h5>
 
 <div class="func"><table class="func" width="100%"><tr><td 
class="tdleft"><code class="func">&#8227; InfoSingular</code></td><td 
class="tdright">(&nbsp;info class&nbsp;)</td></tr></table></div>
-<p>This is the info class <a 
href="../../../doc/ref/chap7_mj.html#X7A9C902479CB6F7C"><span 
class="RefLink">Reference: Info Functions</span></a> used by the interface. It 
can be set to levels 0, 1, 2, and 3. At level 0 no information is printed on 
the screen. At level 1 (default) the interface prints a message about the <var 
class="Arg">type_output</var>, when "def" is used in <var 
class="Arg">SingularInterface</var>, see the example at <code 
class="func">SingularInterface</code> (<a 
href="chap1.html#X876BA78F7CF049C3"><span class="RefLink">1.3-8</span></a>). At 
level 2, information on the activities of the interface is printed (e.g., 
messages when a <strong class="pkg">Singular</strong> session, or a Groebner 
basis calculation, is started or terminated). At level 3 all strings that 
<strong class="pkg">GAP</strong> sends to <strong class="pkg">Singular</strong> 
are printed, as well as all strings that <strong class="pkg">Singular</strong> 
sends back.</p>
+<p>This is the info class <a 
href="../../../doc/ref/chap7.html#X7A9C902479CB6F7C"><span 
class="RefLink">Reference: Info Functions</span></a> used by the interface. It 
can be set to levels 0, 1, 2, and 3. At level 0 no information is printed on 
the screen. At level 1 (default) the interface prints a message about the <var 
class="Arg">type_output</var>, when "def" is used in <var 
class="Arg">SingularInterface</var>, see the example at <code 
class="func">SingularInterface</code> (<a 
href="chap1.html#X876BA78F7CF049C3"><span class="RefLink">1.3-8</span></a>). At 
level 2, information on the activities of the interface is printed (e.g., 
messages when a <strong class="pkg">Singular</strong> session, or a Groebner 
basis calculation, is started or terminated). At level 3 all strings that 
<strong class="pkg">GAP</strong> sends to <strong class="pkg">Singular</strong> 
are printed, as well as all strings that <strong class="pkg">Singular</strong> 
sends back.</p>
 
 
 <div class="example"><pre>
Binary files old/singular-2025.08.26/doc/manual.pdf and 
new/singular-2026.04.09/doc/manual.pdf differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/singular-2025.08.26/doc/singular.tex 
new/singular-2026.04.09/doc/singular.tex
--- old/singular-2025.08.26/doc/singular.tex    1970-01-01 01:00:00.000000000 
+0100
+++ new/singular-2026.04.09/doc/singular.tex    2026-04-09 02:00:00.000000000 
+0200
@@ -0,0 +1,1185 @@
+% generated by GAPDoc2LaTeX from XML source (Frank Luebeck)
+\documentclass[a4paper,11pt]{report}
+
+\usepackage[top=37mm,bottom=37mm,left=27mm,right=27mm]{geometry}
+\sloppy
+\pagestyle{myheadings}
+\usepackage{amssymb}
+\usepackage[utf8]{inputenc}
+\usepackage{makeidx}
+\makeindex
+\usepackage{color}
+\definecolor{FireBrick}{rgb}{0.5812,0.0074,0.0083}
+\definecolor{RoyalBlue}{rgb}{0.0236,0.0894,0.6179}
+\definecolor{RoyalGreen}{rgb}{0.0236,0.6179,0.0894}
+\definecolor{RoyalRed}{rgb}{0.6179,0.0236,0.0894}
+\definecolor{LightBlue}{rgb}{0.8544,0.9511,1.0000}
+\definecolor{Black}{rgb}{0.0,0.0,0.0}
+
+\definecolor{linkColor}{rgb}{0.0,0.0,0.554}
+\definecolor{citeColor}{rgb}{0.0,0.0,0.554}
+\definecolor{fileColor}{rgb}{0.0,0.0,0.554}
+\definecolor{urlColor}{rgb}{0.0,0.0,0.554}
+\definecolor{promptColor}{rgb}{0.0,0.0,0.589}
+\definecolor{brkpromptColor}{rgb}{0.589,0.0,0.0}
+\definecolor{gapinputColor}{rgb}{0.589,0.0,0.0}
+\definecolor{gapoutputColor}{rgb}{0.0,0.0,0.0}
+
+%%  for a long time these were red and blue by default,
+%%  now black, but keep variables to overwrite
+\definecolor{FuncColor}{rgb}{0.0,0.0,0.0}
+%% strange name because of pdflatex bug:
+\definecolor{Chapter }{rgb}{0.0,0.0,0.0}
+\definecolor{DarkOlive}{rgb}{0.1047,0.2412,0.0064}
+
+
+\usepackage{fancyvrb}
+
+\usepackage{mathptmx,helvet}
+\usepackage[T1]{fontenc}
+\usepackage{textcomp}
+
+
+\usepackage[
+            pdftex=true,
+            bookmarks=true,        
+            a4paper=true,
+            pdftitle={Written with GAPDoc},
+            pdfcreator={LaTeX with hyperref package / GAPDoc},
+            colorlinks=true,
+            backref=page,
+            breaklinks=true,
+            linkcolor=linkColor,
+            citecolor=citeColor,
+            filecolor=fileColor,
+            urlcolor=urlColor,
+            pdfpagemode={UseNone}, 
+           ]{hyperref}
+
+\newcommand{\maintitlesize}{\fontsize{50}{55}\selectfont}
+
+% write page numbers to a .pnr log file for online help
+\newwrite\pagenrlog
+\immediate\openout\pagenrlog =\jobname.pnr
+\immediate\write\pagenrlog{PAGENRS := [}
+\newcommand{\logpage}[1]{\protect\write\pagenrlog{#1, \thepage,}}
+%% were never documented, give conflicts with some additional packages
+
+\newcommand{\GAP}{\textsf{GAP}}
+
+%% nicer description environments, allows long labels
+\usepackage{enumitem}
+\setdescription{style=nextline}
+
+%% depth of toc
+\setcounter{tocdepth}{1}
+
+
+
+
+
+%% command for ColorPrompt style examples
+\newcommand{\gapprompt}[1]{\color{promptColor}{\bfseries #1}}
+\newcommand{\gapbrkprompt}[1]{\color{brkpromptColor}{\bfseries #1}}
+\newcommand{\gapinput}[1]{\color{gapinputColor}{#1}}
+
+
+\begin{document}
+
+\logpage{[ 0, 0, 0 ]}
+\begin{titlepage}
+\mbox{}\vfill
+
+\begin{center}{\maintitlesize \textbf{ singular \mbox{}}}\\
+\vfill
+
+\hypersetup{pdftitle= singular }
+\markright{\scriptsize \mbox{}\hfill  singular  \hfill\mbox{}}
+{\Huge \textbf{ A \textsf{GAP} interface to Singular \mbox{}}}\\
+\vfill
+
+{\Huge  2026.04.09 \mbox{}}\\[1cm]
+{ 9 April 2026 \mbox{}}\\[1cm]
+\mbox{}\\[2cm]
+{\Large \textbf{ Marco Costantini\\
+ \mbox{}}}\\
+{\Large \textbf{ Willem Adriaan de Graaf\\
+    \mbox{}}}\\
+\hypersetup{pdfauthor= Marco Costantini\\
+ ;  Willem Adriaan de Graaf\\
+    }
+\end{center}\vfill
+
+\mbox{}\\
+{\mbox{}\\
+\small \noindent \textbf{ Willem Adriaan de Graaf\\
+    }  Email: \href{mailto://[email protected]} 
{\texttt{[email protected]}}\\
+  Homepage: \href{https://www.science.unitn.it/~degraaf/} 
{\texttt{https://www.science.unitn.it/\texttt{\symbol{126}}degraaf/}}\\
+  Address: \begin{minipage}[t]{8cm}\noindent
+ Willem de Graaf\\
+ Dipartimento di Matematica\\
+ Universit{\a`a} degli Studi di Trento\\
+ I\texttt{\symbol{45}}38050 Povo (Trento)\\
+ Italy\\
+ \end{minipage}
+}\\
+\end{titlepage}
+
+\newpage\setcounter{page}{2}
+\newpage
+
+\def\contentsname{Contents\logpage{[ 0, 0, 1 ]}}
+
+\tableofcontents
+\newpage
+
+ 
+\chapter{\textcolor{Chapter }{\textsf{singular}: the \textsf{GAP} interface to 
\textsf{Singular}}}\logpage{[ 1, 0, 0 ]}
+\hyperdef{L}{X861CFE957DD2453F}{}
+{
+  
+\section{\textcolor{Chapter }{Introduction}}\label{Introduction}
+\logpage{[ 1, 1, 0 ]}
+\hyperdef{L}{X7DFB63A97E67C0A1}{}
+{
+  This is the manual of the \textsf{GAP} package ``\textsf{singular}'' that 
provides an interface from the \textsf{GAP} computer algebra system to the 
\textsf{Singular} computer algebra system. 
+
+ This package allows the \textsf{GAP} user to access functions of 
\textsf{Singular} from within \textsf{GAP}, and to apply these functions to the 
\textsf{GAP} objects. With this package, the user keeps working with 
\textsf{GAP} and, if he needs a function of \textsf{Singular} that is not 
present in \textsf{GAP}, he can use this function via the interface; see the 
function \texttt{SingularInterface} (\ref{SingularInterface}). 
+
+ This package provides also a function that computes Groebner bases of ideals
+in polynomial rings of \textsf{GAP}. This function uses the \textsf{Singular} 
implementation, which is very fast; see the function \texttt{GroebnerBasis} 
(\ref{GroebnerBasis}). 
+
+ The interface is expected to work with every version of \textsf{GAP} 4, every 
(not very old) version of \textsf{Singular}, and on every platform, on which 
both \textsf{GAP} and \textsf{Singular} run; see paragraph \ref{platforms} for 
details. 
+
+ If you have used this package in the preparation of a paper please cite it as
+described in \href{https://www.gap-system.org/Contacts/cite.html} 
{\texttt{https://www.gap\texttt{\symbol{45}}system.org/Contacts/cite.html}}. 
+
+ If \textsf{GAP}, \textsf{Singular}, and the \textsf{GAP} package 
\textsf{singular} are already installed and working on his computer, the user 
of this interface
+needs to read only the subsection \ref{sec:sing_exec}, the section 
\ref{Interaction}, and in case of problems the subsection \ref{common}.  
+\subsection{\textcolor{Chapter }{Package evolution}}\logpage{[ 1, 1, 1 ]}
+\hyperdef{L}{X7FE24D6E8258CC49}{}
+{
+  The work for the package \textsf{singular} has been started by Willem de 
Graaf, that planned this package as an interface
+to the function of \textsf{Singular} that calculates the Groebner bases. To 
this purpose, Willem de Graaf wrote the
+code for the conversion of rings and ideals from \textsf{GAP} to 
\textsf{Singular}, and the code for the conversion of numbers and polynomials 
in both
+directions. 
+
+ Marco Costantini has widened the aim of the package, in order to make it a
+general interface to each possible function of \textsf{Singular}: with the 
function \texttt{SingularInterface} (\ref{SingularInterface}) it is possible to 
use from within \textsf{GAP} any function of \textsf{Singular}, including 
user\texttt{\symbol{45}}defined ones and future implementations.
+To this purpose, Marco Costantini has generalized the previous code for the
+conversion of objects in the new more general context, has written the code
+for the conversion of the various other types of objects, and has written the
+code for the low\texttt{\symbol{45}}level communication between \textsf{GAP} 
and \textsf{Singular}. 
+
+ David Joyner has developed the code for the
+algebraic\texttt{\symbol{45}}geometric codes functions, and has written the
+corresponding section \ref{AlgebraicGeometricCodes} of this manual. 
+
+ Gema M. Diaz has helped with some testing and reports. }
+
+ 
+\subsection{\textcolor{Chapter }{The system \textsf{Singular}}}\logpage{[ 1, 
1, 2 ]}
+\hyperdef{L}{X83FD5A2A8047C857}{}
+{
+  \textsf{Singular} is ``A Computer Algebra System for Polynomial 
Computations'' developed by G.\texttt{\symbol{45}}M. Greuel, G. Pfister, and H.
+Sch\texttt{\symbol{92}}"onemann, at Centre for Computer Algebra, University of
+Kaiserslautern. The authors of the \textsf{GAP} package \textsf{singular} are 
not involved in the development of the system \textsf{Singular}, and vice 
versa. 
+
+ \textsf{Singular} is not included in this package, and can be obtained for 
free from \href{https://www.singular.uni-kl.de} 
{\texttt{https://www.singular.uni\texttt{\symbol{45}}kl.de}}. There, one can 
find also its documentation, installing instructions, the
+source code if wanted, and support if needed. \textsf{Singular} is available 
for several platforms. 
+
+ A description of \textsf{Singular}, copied from its manual (paragraph ``2.1 
Background''), version
+2\texttt{\symbol{45}}0\texttt{\symbol{45}}5, is the following: 
+
+ `` \textsf{Singular} is a Computer Algebra system for polynomial computations 
with emphasis on the
+special needs of commutative algebra, algebraic geometry, and singularity
+theory. 
+
+ \textsf{Singular}'s main computational objects are ideals and modules over a 
large variety of
+baserings. The baserings are polynomial rings or localizations thereof over a
+field (e.g., finite fields, the rationals, floats, algebraic extensions,
+transcendental extensions) or quotient rings with respect to an ideal. 
+
+ \textsf{Singular} features one of the fastest and most general 
implementations of various
+algorithms for computing Groebner resp. standard bases. The implementation
+includes Buchberger's algorithm (if the ordering is a well ordering) and
+Mora's algorithm (if the ordering is a tangent cone ordering) as special
+cases. Furthermore, it provides polynomial factorizations, resultant,
+characteristic set and gcd computations, syzygy and
+free\texttt{\symbol{45}}resolution computations, and many more related
+functionalities. 
+
+ Based on an easy\texttt{\symbol{45}}to\texttt{\symbol{45}}use interactive
+shell and a C\texttt{\symbol{45}}like programming language, 
\textsf{Singular}'s internal functionality is augmented and 
user\texttt{\symbol{45}}extendible
+by libraries written in the \textsf{Singular} programming language. A general 
and efficient implementation of communication
+links allows \textsf{Singular} to make its functionality available to other 
programs. 
+
+ \textsf{Singular}'s development started in 1984 with an implementation of 
Mora's Tangent Cone
+algorithm in Modula\texttt{\symbol{45}}2 on an Atari computer (K.P. Neuendorf,
+G. Pfister, H. Sch{\"o}nemann; Humboldt\texttt{\symbol{45}}Universit{\"a}t zu
+Berlin). The need for a new system arose from the investigation of
+mathematical problems coming from singularity theory which none of the
+existing systems was able to compute. 
+
+ In the early 1990s \textsf{Singular}'s ``home\texttt{\symbol{45}}town'' moved 
to Kaiserslautern, a general
+standard basis algorithm was implemented in C, and \textsf{Singular} was 
ported to Unix, MS\texttt{\symbol{45}}DOS, Windows NT, and MacOS. 
+
+ Continuous extensions (like polynomial factorization, gcd computations, links)
+and refinements led in 1997 to the release of \textsf{Singular} version 1.0 
and in 1998 to the release of version 1.2 (much faster standard
+and Groebner bases computations based on Hilbert series and on improved
+implementations of the algorithms, libraries for primary decomposition, ring
+normalization, etc.). '' }
+
+ 
+\subsection{\textcolor{Chapter }{The system \textsf{GAP}}}\logpage{[ 1, 1, 3 ]}
+\hyperdef{L}{X783E6C90833FAA5F}{}
+{
+ \textsf{GAP} stands for ``Groups, Algorithms, and Programming'', and is 
developed by several people (``The \textsf{GAP} Group''). 
+
+ \textsf{GAP} is not included in this package, and can be obtained for free 
from \href{https://www.gap-system.org/} 
{\texttt{https://www.gap\texttt{\symbol{45}}system.org/}}. There, one can find 
also its documentation, installing instructions, the
+source code, and support if needed. The \textsf{GAP} system will run on any 
machine with an Unix\texttt{\symbol{45}}like or recent
+Windows or MacOS operating system and with a reasonable amount of ram and disk
+space. 
+
+ A description of \textsf{GAP}, copied from its web site, is the following: 
``\textsf{GAP} is a system for computational discrete algebra, with particular 
emphasis on
+Computational Group Theory. \textsf{GAP} provides a programming language, a 
library of thousands of functions
+implementing algebraic algorithms written in the \textsf{GAP} language as well 
as large data libraries of algebraic objects. See the web
+site the overview and the description of the mathematical capabilities. 
\textsf{GAP} is used in research and teaching for studying groups and their
+representations, rings, vector spaces, algebras, combinatorial structures, and
+more. The system, including source, is distributed freely. You can study and
+easily modify or extend it for your special use.'' }
+
+ }
+
+ 
+\section{\textcolor{Chapter }{Installation}}\label{Installation}
+\logpage{[ 1, 2, 0 ]}
+\hyperdef{L}{X8360C04082558A12}{}
+{
+  In order to use this interface one must have both \textsf{GAP} version 4 and 
\textsf{Singular} installed. 
+\subsection{\textcolor{Chapter }{Installing the system 
\textsf{Singular}}}\logpage{[ 1, 2, 1 ]}
+\hyperdef{L}{X7909A9237804CDCE}{}
+{
+  Follow the \textsf{Singular} installing instructions. 
+
+ However, for a Unix system, one needs to download two files: 
+\begin{itemize}
+\item  
\texttt{Singular\texttt{\symbol{45}}{\textless}version{\textgreater}\texttt{\symbol{45}}share.tar.gz},
 that contains architecture independent data like documentation and
+libraries; 
+\item  
\texttt{Singular\texttt{\symbol{45}}{\textless}version{\textgreater}\texttt{\symbol{45}}{\textless}uname{\textgreater}.tar.gz},
 that contains architecture dependent executables, like the \textsf{Singular} 
program (precompiled). {\textless}uname{\textgreater} is a description of the
+processor and operating system for which \textsf{Singular} is compiled.
+\end{itemize}
+ 
+
+ \textsf{Singular} specific subdirectories will be created in such a way that 
multiple versions
+and multiple architecture dependent files of \textsf{Singular} can peaceably 
coexist under the same \texttt{/usr/local/} tree. 
+
+ Before trying the interface, make sure that \textsf{Singular} is installed 
and working as stand\texttt{\symbol{45}}alone program. }
+
+ 
+\subsection{\textcolor{Chapter }{Installing the system 
\textsf{GAP}}}\logpage{[ 1, 2, 2 ]}
+\hyperdef{L}{X8158504779874284}{}
+{
+  Follow the \textsf{GAP} installing instructions. 
+
+ However, the basic steps of a \textsf{GAP} installation are: 
+\begin{itemize}
+\item Choose your preferred archive format and download the archives.
+\item Unpack the archives.
+\item On Unix: Compile \textsf{GAP}. (Compiled executables for Windows and Mac 
are in the archives.)
+\item On Unix: Some packages need further installation for full functionality 
(which
+is not available on Windows or Mac).
+\item Adjust some links/scripts/icons ..., depending on your system, to make 
the new
+version of \textsf{GAP} available to the users of your machine.
+\item Optional: Run a few tests.
+\item Optional, but appreciated: Give some feedback on your installation.
+\end{itemize}
+ There is also an experimental Linux binary distribution via remote
+synchronization with a reference installation, which includes all packages and
+some optimizations. Furthermore, the Debian GNU/Linux distribution contains
+.deb\texttt{\symbol{45}}packages with the core part of \textsf{GAP} and some 
of the \textsf{GAP} packages. }
+
+ 
+\subsection{\textcolor{Chapter }{Installing the package 
\textsf{singular}}}\logpage{[ 1, 2, 3 ]}
+\hyperdef{L}{X7AC4165B7843F037}{}
+{
+  The package \textsf{singular} is installed and loaded as a normal 
\textsf{GAP} package: see the \textsf{GAP} documentation  (\textbf{Reference: 
Installing a GAP Package}) and  (\textbf{Reference: Loading a GAP Package}). 
+
+ Starting with version 4.4 of \textsf{GAP}, the package \textsf{singular} is 
distributed together with \textsf{GAP}. Hence, if \textsf{GAP} is already 
installed with all the distributed packages, then also the package 
\textsf{singular} is installed. However, if the package \textsf{singular} is 
not included in your \textsf{GAP} installation, it can be downloaded and 
unpacked in the \texttt{pkg/} directory of the \textsf{GAP} installation. If 
you don't have write access to the \texttt{pkg/} directory in your main 
\textsf{GAP} installation you can use private directories as explained in the 
\textsf{GAP} documentation  (\textbf{Reference: GAP Root Directories}). The 
package \textsf{singular} doesn't require compilation. }
+
+ 
+
+\subsection{\textcolor{Chapter }{sing{\textunderscore}exec}}
+\logpage{[ 1, 2, 4 ]}\nobreak
+\label{sec:sing_exec}
+\hyperdef{L}{X8229A3C4793932BA}{}
+{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{sing{\textunderscore}exec\index{sing{\textunderscore}exec@\texttt{sing{\textunderscore}exec}}
+\label{singuScoreexec}
+}\hfill{\scriptsize (global variable)}}\\
+\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{sing{\textunderscore}exec{\textunderscore}options\index{sing{\textunderscore}exec{\textunderscore}options@\texttt{sing{\textunderscore}exec{\textunderscore}options}}
+\label{singuScoreexecuScoreoptions}
+}\hfill{\scriptsize (global variable)}}\\
+\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{SingularTempDirectory\index{SingularTempDirectory@\texttt{SingularTempDirectory}}
+\label{SingularTempDirectory}
+}\hfill{\scriptsize (global variable)}}\\
+
+
+ In order to use the interface, \textsf{GAP} has to be told where to find 
\textsf{Singular}. This can be done in three ways. First, if the 
\textsf{Singular} executable file is in the search path, then \textsf{GAP} will 
find it. Second, it is possible to edit (before loading the package) one
+of the first lines of the file \texttt{singular/gap/singular.g} (that comes 
with this package). Third, it is possible to give the path of the 
\textsf{Singular} executable file directly during each \textsf{GAP} session 
assigning it to the variable \texttt{sing{\textunderscore}exec} 
(\ref{singuScoreexec}) (either before or after this package has been loaded, 
but before starting \textsf{Singular} with \texttt{StartSingular} 
(\ref{StartSingular})), as in the example below. 
+\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
+  !gapprompt@gap>| !gapinput@LoadPackage( "singular" );|
+  A GAP interface to Singular, by Marco Costantini and Willem de Graaf
+  true
+  !gapprompt@gap>| !gapinput@sing_exec:= 
"/home/wdg/Singular/2-0-3/ix86-Linux/Singular";;|
+\end{Verbatim}
+ The directory separator is always '\texttt{/}', even under DOS/Windows or 
MacOS. The value of \texttt{sing{\textunderscore}exec} (\ref{singuScoreexec}) 
must refer to the text\texttt{\symbol{45}}only version of \textsf{Singular} 
(\mbox{\texttt{\mdseries\slshape Singular}}), and not to the Emacs version 
(\mbox{\texttt{\mdseries\slshape ESingular}}), nor to the terminal window 
version (\mbox{\texttt{\mdseries\slshape TSingular}}). 
+
+ In a similar way, it is possible to supply \textsf{Singular} with some 
command line options (or files to read containing user defined
+functions), assigning them to the variable 
\texttt{sing{\textunderscore}exec{\textunderscore}options} 
(\ref{singuScoreexecuScoreoptions}). This can be done by editing (before 
loading the package) one of the first
+lines of the file \texttt{singular/gap/singular.g} (that comes with this 
package), or directly during each \textsf{GAP} session (either before or after 
this package has been loaded, but before
+starting \textsf{Singular}) with \texttt{StartSingular} 
(\ref{StartSingular})), as in the example below. 
+\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
+  !gapprompt@gap>| !gapinput@Add( sing_exec_options, "--no-rc" );|
+  !gapprompt@gap>| !gapinput@Add( sing_exec_options, "/full_path/my_file" );|
+\end{Verbatim}
+ The variable \texttt{sing{\textunderscore}exec{\textunderscore}options} 
(\ref{singuScoreexecuScoreoptions}) is initialized to 
\mbox{\texttt{\mdseries\slshape [ "\texttt{\symbol{45}}t" ]}}; the user can add 
further options, but must keep \mbox{\texttt{\mdseries\slshape 
"\texttt{\symbol{45}}t"}}, which is required. The possible options are 
described in the \textsf{Singular} documentation, paragraph ``3.1.6 Command 
line options''. 
+
+ \textsf{Singular} is not executed in the current directory, but in a
+user\texttt{\symbol{45}}specified one, or in a temporary one. It is possible
+to supply this directory assigning it to the variable 
\texttt{SingularTempDirectory}. This can be done by editing (before loading the 
package) one of the first
+lines of the file \texttt{singular/gap/singular.g} (that comes with this 
package), or directly during each \textsf{GAP} session (either before or after 
this package has been loaded, but before
+starting \textsf{Singular}) with \texttt{StartSingular} 
(\ref{StartSingular})), as in the example below. If 
\texttt{SingularTempDirectory} is not assigned, \textsf{GAP} will create and 
use a temporary directory, which will be removed when \textsf{GAP} quits. 
+\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
+  !gapprompt@gap>| !gapinput@SingularTempDirectory := Directory( "/tmp" );|
+  dir("/tmp/")
+\end{Verbatim}
+ On Windows, \textsf{Singular} version 3 may be not executed directly, but may 
be executed as \mbox{\texttt{\mdseries\slshape bash Singular}}. In this case, 
the variables \texttt{sing{\textunderscore}exec} (\ref{singuScoreexec}), 
\texttt{sing{\textunderscore}exec{\textunderscore}options} 
(\ref{singuScoreexecuScoreoptions}), \texttt{SingularTempDirectory} must 
reflect this, otherwise Windows complains that \mbox{\texttt{\mdseries\slshape 
cygwin1.dll}} is not found. The following works on my Windows machine. 
+\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
+  !gapprompt@gap>| !gapinput@LoadPackage("singular");|
+  true
+  !gapprompt@gap>| !gapinput@SingularTempDirectory := 
Directory("c:/cygwin/bin");|
+  dir("c:/cygwin/bin/")
+  !gapprompt@gap>| !gapinput@sing_exec := "c:/cygwin/bin/bash.exe";|
+  "c:/cygwin/bin/bash.exe"
+  !gapprompt@gap>| !gapinput@sing_exec_options := [ "Singular", "-t" ];|
+  [ "Singular", "-t" ]
+  !gapprompt@gap>| !gapinput@StartSingular();|
+\end{Verbatim}
+ Another possibility is to run Gap from within the Cygwin shell. In this case,
+with a standard installation of Cygwin and \textsf{Singular}, no change is 
required, }
+
+ }
+
+ 
+\section{\textcolor{Chapter }{Interaction with 
\textsf{Singular}}}\label{Interaction}
+\logpage{[ 1, 3, 0 ]}
+\hyperdef{L}{X7E8229C88005E2EA}{}
+{
+  The user must load the package \textsf{singular} with \texttt{LoadPackage} 
(\textbf{Reference: LoadPackage}). 
+
+\subsection{\textcolor{Chapter }{StartSingular}}
+\logpage{[ 1, 3, 1 ]}\nobreak
+\hyperdef{L}{X79C5E6F27C37DA10}{}
+{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{StartSingular({\mdseries\slshape
 })\index{StartSingular@\texttt{StartSingular}}
+\label{StartSingular}
+}\hfill{\scriptsize (function)}}\\
+\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{CloseSingular({\mdseries\slshape
 })\index{CloseSingular@\texttt{CloseSingular}}
+\label{CloseSingular}
+}\hfill{\scriptsize (function)}}\\
+
+
+ After the package \textsf{singular} has been loaded, \textsf{Singular} is 
started automatically when one of the functions of the interface is called.
+Alternatively, one can start \textsf{Singular} with the command 
\mbox{\texttt{\mdseries\slshape StartSingular}}. 
+\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
+  !gapprompt@gap>| !gapinput@StartSingular();|
+\end{Verbatim}
+ See \ref{platforms} for technical details. Explicit use of 
\mbox{\texttt{\mdseries\slshape StartSingular}} is not necessary. If 
\mbox{\texttt{\mdseries\slshape StartSingular}} is called when a previous 
\textsf{Singular} session is running, than session will be closed, and a new 
session will be
+started. 
+
+ If at some point \textsf{Singular} is no longer needed, then it can be closed 
(in order to save system resources)
+with the command \mbox{\texttt{\mdseries\slshape CloseSingular}}. 
+\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
+  !gapprompt@gap>| !gapinput@CloseSingular();|
+\end{Verbatim}
+ However, when \textsf{GAP} exits, it is expected to close Singular, and 
remove any temporary directory,
+except in the case of abnormal \textsf{GAP} termination. }
+
+ 
+
+\subsection{\textcolor{Chapter }{SingularHelp}}
+\logpage{[ 1, 3, 2 ]}\nobreak
+\hyperdef{L}{X81FDDDE47EBA9698}{}
+{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{SingularHelp({\mdseries\slshape
 topic})\index{SingularHelp@\texttt{SingularHelp}}
+\label{SingularHelp}
+}\hfill{\scriptsize (function)}}\\
+
+
+ Here \mbox{\texttt{\mdseries\slshape topic}} is a string containing the name 
of a \textsf{Singular} topic. This function provides help on that topic using 
the \textsf{Singular} help system: see the \textsf{Singular} documentation, 
paragraphs ``3.1.3 The online help system'' and ``5.1.43
+help''. If \mbox{\texttt{\mdseries\slshape topic}} is the empty string "", 
then the title/index page of the manual is displayed. 
+
+ This function can be used to display the \textsf{Singular} documentation 
referenced in this manual; \mbox{\texttt{\mdseries\slshape topic}} must be 
given without the leading numbers. 
+\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
+  !gapprompt@gap>| !gapinput@SingularHelp( "" ); # a Mozilla window appears|
+  #I  // ** Displaying help in browser 'mozilla'.
+  // ** Use 'system("--browser", <browser>);' to change browser,
+  // ** where <browser> can be: "mozilla", "xinfo", "info", "builtin", 
"dummy", \
+  "emacs".
+\end{Verbatim}
+ The \textsf{Singular} function \mbox{\texttt{\mdseries\slshape system}} can 
be accessed via the function \texttt{SingularInterface} 
(\ref{SingularInterface}). Some only\texttt{\symbol{45}}text browsers may be 
not supported by the
+interface. }
+
+ 
+\subsection{\textcolor{Chapter }{Rings and orderings}}\logpage{[ 1, 3, 3 ]}
+\hyperdef{L}{X86C329A285955655}{}
+{
+  All non\texttt{\symbol{45}}trivial algorithms in \textsf{Singular} require 
the prior definition of a (polynomial) ring, that will be called the
+``base\texttt{\symbol{45}}ring''. Any polynomial (respectively vector) in 
\textsf{Singular} is ordered with respect to a term ordering (or, monomial 
ordering), that has
+to be specified together with the declaration of a ring. See the documentation
+of \textsf{Singular}, paragraph ``3.3 Rings and orderings'', for further 
information. 
+
+ After defining in \textsf{GAP} a ring, a term ordering can be assigned to it 
using the function \texttt{SetTermOrdering} (\ref{SetTermOrdering}), and 
\emph{after} the term ordering is assigned, the interface and \textsf{Singular} 
can be told to use this ring as the base\texttt{\symbol{45}}ring, with the
+function \texttt{SingularSetBaseRing} (\ref{SingularSetBaseRing}). }
+
+ 
+\subsection{\textcolor{Chapter }{Supported coefficients fields}}\logpage{[ 1, 
3, 4 ]}
+\hyperdef{L}{X840BA4C9839D3CF4}{}
+{
+  Let \mbox{\texttt{\mdseries\slshape p}} be a prime, 
\mbox{\texttt{\mdseries\slshape pol}} an irreducible polynomial, and 
\mbox{\texttt{\mdseries\slshape arg}} an appropriate argument for the given 
function. The coefficient fields of the
+base\texttt{\symbol{45}}ring may be of the following form: 
+\begin{itemize}
+\item \mbox{\texttt{\mdseries\slshape Rationals}},
+\item \mbox{\texttt{\mdseries\slshape CyclotomicField( arg )}},
+\item \mbox{\texttt{\mdseries\slshape AlgebraicExtension( Rationals, pol )}},
+\item \mbox{\texttt{\mdseries\slshape GaloisField( arg )}} (both prime and 
non\texttt{\symbol{45}}prime),
+\item \mbox{\texttt{\mdseries\slshape AlgebraicExtension( GaloisField( p ), 
pol )}}.
+\end{itemize}
+ For some example see those for the function \texttt{SetTermOrdering} 
(\ref{SetTermOrdering}). 
+
+ Let us remember that \mbox{\texttt{\mdseries\slshape CyclotomicField}} and 
\mbox{\texttt{\mdseries\slshape GaloisField}} can be abbreviated respectively 
to \mbox{\texttt{\mdseries\slshape CF}} and \mbox{\texttt{\mdseries\slshape 
GF}}; these forms are used also when \textsf{GAP} prints cyclotomic or Galois 
fields. See the \textsf{GAP} documentation about the functions: 
\texttt{CyclotomicField} (\textbf{Reference: CyclotomicField for (subfield and) 
conductor}), \texttt{GaloisField} (\textbf{Reference: GaloisField for field 
size}), \texttt{AlgebraicExtension} (\textbf{Reference: AlgebraicExtension}), 
and the chapters:  (\textbf{Reference: Rational Numbers}),  (\textbf{Reference: 
Abelian Number Fields}),  (\textbf{Reference: Finite Fields}),  
(\textbf{Reference: Algebraic extensions of fields}). }
+
+ 
+
+\subsection{\textcolor{Chapter }{SetTermOrdering}}
+\logpage{[ 1, 3, 5 ]}\nobreak
+\hyperdef{L}{X813A17AF85BFACB9}{}
+{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{SetTermOrdering({\mdseries\slshape
 R})\index{SetTermOrdering@\texttt{SetTermOrdering}}
+\label{SetTermOrdering}
+}\hfill{\scriptsize (function)}}\\
+\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{TermOrdering({\mdseries\slshape
 R})\index{TermOrdering@\texttt{TermOrdering}}
+\label{TermOrdering}
+}\hfill{\scriptsize (attribute)}}\\
+
+
+ Let \mbox{\texttt{\mdseries\slshape R}} be a polynomial ring. The value of 
\mbox{\texttt{\mdseries\slshape TermOrdering( R )}} describes the term ordering 
of \mbox{\texttt{\mdseries\slshape R}}, and can be a string, a list, or a 
monomial ordering of \textsf{GAP}. (The term orderings of \textsf{Singular} are 
explained in its documentation, paragraphs ``3.3.3 Term orderings'' and
+``B.2.1 Introduction to orderings''.) 
+
+ If this value is a string, for instance \mbox{\texttt{\mdseries\slshape 
"lp"}} (lexicographical ordering), \mbox{\texttt{\mdseries\slshape "dp"}} 
(degree reverse lexicographical ordering), or \mbox{\texttt{\mdseries\slshape 
"Dp"}} (degree lexicographical ordering), this value will be passed to 
\textsf{Singular} without being interpreted or parsed by the interface. 
+
+ If this value is a list, it must be of the form 
\mbox{\texttt{\mdseries\slshape [ str{\textunderscore}1, d{\textunderscore}1, 
str{\textunderscore}2,
+d{\textunderscore}2, ... ]}}, where each \mbox{\texttt{\mdseries\slshape 
str{\textunderscore}i}} is a \textsf{Singular} ordering given as a string. Each 
\mbox{\texttt{\mdseries\slshape d{\textunderscore}i}} must be a number, and 
specifies the number of variables having that ordering;
+however, if \mbox{\texttt{\mdseries\slshape str{\textunderscore}i}} is a 
weighted order, like \mbox{\texttt{\mdseries\slshape "wp"}} (weighted reverse 
lexicographical ordering) or \mbox{\texttt{\mdseries\slshape "Wp"}} (weighted 
lexicographical ordering), then the corresponding 
\mbox{\texttt{\mdseries\slshape d{\textunderscore}i}} must be a list of 
positive integers that specifies the weight of each
+variable. The sum of the \mbox{\texttt{\mdseries\slshape 
d{\textunderscore}i}}'s (if numbers) or of their lengths (if lists) must be 
equal to the number of
+variables of the ring \mbox{\texttt{\mdseries\slshape R}}. 
+
+ This value can also be a monomial ordering of \textsf{GAP}: currently 
supported are \mbox{\texttt{\mdseries\slshape MonomialLexOrdering}}, 
\mbox{\texttt{\mdseries\slshape MonomialGrevlexOrdering}}, and 
\mbox{\texttt{\mdseries\slshape MonomialGrlexOrdering}}  (\textbf{Reference: 
Monomial Orderings}). 
+
+ \mbox{\texttt{\mdseries\slshape TermOrdering}} is a mutable attribute, see 
the \textsf{GAP} documentation of \texttt{DeclareAttribute} (\textbf{Reference: 
DeclareAttribute}); if it is changed on the \textsf{GAP} side, it is necessary 
thereafter to send again the ring to \textsf{Singular} with 
\texttt{SingularSetBaseRing} (\ref{SingularSetBaseRing}). 
+
+ \mbox{\texttt{\mdseries\slshape SetTermOrdering}} can be used to set the term 
ordering of a ring. It is not mandatory to assign
+a term ordering: if no term ordering is set, then the default 
\mbox{\texttt{\mdseries\slshape "dp"}} will be used. If it is set, the term 
ordering must be set \emph{before} the ring is sent to \textsf{Singular} with 
\texttt{SingularSetBaseRing} (\ref{SingularSetBaseRing}), otherwise, 
\textsf{Singular} will ignore that term ordering, and will use the previous 
value if any, or the
+default \mbox{\texttt{\mdseries\slshape "dp"}}. 
+\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
+  !gapprompt@gap>| !gapinput@R1:= PolynomialRing( Rationals, ["x","y","z"] : 
old );;|
+  !gapprompt@gap>| !gapinput@SetTermOrdering( R1, "lp" );|
+  !gapprompt@gap>| !gapinput@R2:= PolynomialRing( GaloisField(9), 3 );;|
+  !gapprompt@gap>| !gapinput@SetTermOrdering( R2, [ "wp", [1,1,2] ] );|
+  !gapprompt@gap>| !gapinput@R3:= PolynomialRing( CyclotomicField(25), 
["x","y","z"] : old );;|
+  !gapprompt@gap>| !gapinput@SetTermOrdering( R3, MonomialLexOrdering() );|
+  !gapprompt@gap>| !gapinput@x:=Indeterminate(Rationals);;|
+  !gapprompt@gap>| !gapinput@F:=AlgebraicExtension(Rationals, x^5+4*x+1);;|
+  !gapprompt@gap>| !gapinput@R4:= PolynomialRing( F, 6 );;|
+  !gapprompt@gap>| !gapinput@SetTermOrdering( R4, [ "dp", 1, "wp", [1,1,2], 
"lp", 2 ] );|
+\end{Verbatim}
+ }
+
+ 
+
+\subsection{\textcolor{Chapter }{SingularSetBaseRing}}
+\logpage{[ 1, 3, 6 ]}\nobreak
+\hyperdef{L}{X84A3CD498011A10C}{}
+{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{SingularSetBaseRing({\mdseries\slshape
 R})\index{SingularSetBaseRing@\texttt{SingularSetBaseRing}}
+\label{SingularSetBaseRing}
+}\hfill{\scriptsize (function)}}\\
+\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{SingularBaseRing\index{SingularBaseRing@\texttt{SingularBaseRing}}
+\label{SingularBaseRing}
+}\hfill{\scriptsize (global variable)}}\\
+
+
+ Here \mbox{\texttt{\mdseries\slshape R}} is a polynomial ring. 
\mbox{\texttt{\mdseries\slshape SingularSetBaseRing}} sets the 
base\texttt{\symbol{45}}ring in \textsf{Singular} equal to 
\mbox{\texttt{\mdseries\slshape R}}. This ring will be also kept in 
\textsf{GAP} in the variable \mbox{\texttt{\mdseries\slshape 
SingularBaseRing}}. After this assignment, all the functions of the interface 
will work with
+this ring. However, for some functions (those having rings, ideals, or modules
+as arguments) it is not necessary to explicitly set the base ring first,
+because in these cases the functions arguments contains information about a
+ring that will be used as a base\texttt{\symbol{45}}ring. This will be
+specified for each function in the corresponding section of this manual.
+(Unnecessary use of \mbox{\texttt{\mdseries\slshape SingularSetBaseRing}} 
doesn't harm; forgetting to use \mbox{\texttt{\mdseries\slshape 
SingularSetBaseRing}} produces the problem described in the paragraph 
\ref{common}.) The results of the computations may depend on the choice of the
+base\texttt{\symbol{45}}ring: see an example at \texttt{FactorsUsingSingular} 
(\ref{FactorsUsingSingular}), in which the factorization of $ x^2 + y^2 $ is 
calculated. 
+\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
+  !gapprompt@gap>| !gapinput@R:= PolynomialRing( Rationals, ["x","y","z"] : 
old );;|
+  !gapprompt@gap>| !gapinput@SingularSetBaseRing( R );|
+\end{Verbatim}
+ The value of \mbox{\texttt{\mdseries\slshape SingularBaseRing}} when the 
package is loaded is \mbox{\texttt{\mdseries\slshape PolynomialRing( GF( 32003 
), 3 )}}, in order to match the default base\texttt{\symbol{45}}ring of 
\textsf{Singular}. 
+
+ }
+
+ 
+
+\subsection{\textcolor{Chapter }{SingularLibrary}}
+\logpage{[ 1, 3, 7 ]}\nobreak
+\hyperdef{L}{X871A5AF87DAE21E6}{}
+{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{SingularLibrary({\mdseries\slshape
 string})\index{SingularLibrary@\texttt{SingularLibrary}}
+\label{SingularLibrary}
+}\hfill{\scriptsize (function)}}\\
+
+
+ In \textsf{Singular} some functionality is provided by separate libraries 
that must be explicitly
+loaded in order to be used (see the \textsf{Singular} documentation, chapter 
``D. SINGULAR libraries''), see the example in \texttt{SingularInterface} 
(\ref{SingularInterface}). 
+
+ The argument \mbox{\texttt{\mdseries\slshape string}} is a string containing 
the name of a \textsf{Singular} library. This function makes sure that this 
library is loaded into \textsf{Singular}. 
+
+ The functions provided by the library \mbox{\texttt{\mdseries\slshape 
ring.lib}} could be not yet supported by the interface. 
+\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
+  !gapprompt@gap>| !gapinput@SingularLibrary( "general.lib" );|
+\end{Verbatim}
+ }
+
+ 
+
+\subsection{\textcolor{Chapter }{SingularInterface}}
+\logpage{[ 1, 3, 8 ]}\nobreak
+\hyperdef{L}{X876BA78F7CF049C3}{}
+{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{SingularInterface({\mdseries\slshape
 singcom, arguments, 
type{\textunderscore}output})\index{SingularInterface@\texttt{SingularInterface}}
+\label{SingularInterface}
+}\hfill{\scriptsize (function)}}\\
+
+
+ The function \mbox{\texttt{\mdseries\slshape SingularInterface}} provides the 
general interface that enables to apply the \textsf{Singular} functions to the 
\textsf{GAP} objects. Its arguments are the following: 
+\begin{itemize}
+\item  \mbox{\texttt{\mdseries\slshape singcom}} is a \textsf{Singular} 
command or function (given as a string). 
+\item  \mbox{\texttt{\mdseries\slshape arguments}} is a list of \textsf{GAP} 
objects, $O_1, O_2, ..., O_n$, that will be used as arguments of 
\mbox{\texttt{\mdseries\slshape singcom}} (it may be the empty list). 
\mbox{\texttt{\mdseries\slshape arguments}} may also be a string: in this case 
it is assumed that it contains one or more \textsf{Singular} identifiers, or a 
\textsf{Singular} valid expression, or something else meaningful for 
\textsf{Singular}, and it is passed to \textsf{Singular} without parsing or 
checking on the \textsf{GAP} side. 
+\item  \mbox{\texttt{\mdseries\slshape type{\textunderscore}output}} is the 
data type (given as a string) in \textsf{Singular} of the output. The data 
types are the following (see the \textsf{Singular} documentation, chapter ``4. 
Data types''): "bigint", "def", "ideal", "int",
+"intmat", "intvec", "link", "list", "map", "matrix", "module", "number",
+"poly", "proc", "qring", "resolution", "ring", "string", "vector" (some of
+them were not available in previous versions of \textsf{Singular}). The empty 
string "" can be used if no output is expected. If in doubt you
+can use "def" (see the \textsf{Singular} documentation, paragraph ``4.1 
def''). Usually, in the documentation of each \textsf{Singular} function is 
given its output type. 
+\end{itemize}
+ Of course, the objects in the list \mbox{\texttt{\mdseries\slshape 
arguments}} and the \mbox{\texttt{\mdseries\slshape 
type{\textunderscore}output}} must be appropriate for the function 
\mbox{\texttt{\mdseries\slshape singcom}}: no check is done by the interface. 
+
+ The function \mbox{\texttt{\mdseries\slshape SingularInterface}} does the 
following: 
+\begin{enumerate}
+\item  converts each object $O_1, O_2, ..., O_n$ in 
\mbox{\texttt{\mdseries\slshape arguments}} into the corresponding object $P_1, 
P_2, ..., P_n$, of \textsf{Singular}, 
+\item  sends to \textsf{Singular} the command to calculate $singcom ( P_1, 
P_2, ..., P_n )$, 
+\item  gets the output (of type \mbox{\texttt{\mdseries\slshape 
type{\textunderscore}output}}) from \textsf{Singular}, 
+\item  converts it to the corresponding Gap object, and returns it to the 
user. 
+\end{enumerate}
+ 
+
+ The function \mbox{\texttt{\mdseries\slshape SingularInterface}} is oriented 
towards the
+kind\texttt{\symbol{45}}of\texttt{\symbol{45}}objects/data\texttt{\symbol{45}}types,
+and not to the functions of \textsf{Singular}, because in this way it is much 
more general. The user can use ``all'' the
+existing functions of \textsf{Singular} and the interface is not bounded to 
the state of implementation of \textsf{Singular}: future functions and 
user\texttt{\symbol{45}}defined functions will be
+automatically supported. 
+
+ The conversion of objects from Gap to \textsf{Singular} and from it back to 
Gap is done using some `ad hoc' functions. Currently, the
+conversion of objects from \textsf{GAP} to \textsf{Singular} is implemented 
for the following types: "ideal", "int", "intmat", "intvec",
+"list", "matrix", "module", "number", "poly", "ring", "string", "vector".
+Objects of other types are not supported, or are even not yet implemented in 
\textsf{GAP}. 
+
+ The conversion of objects from \textsf{Singular} to \textsf{GAP} is currently 
implemented for the following types: "bigint", "def", "ideal",
+"int", "intmat", "intvec", "list", "matrix", "module", "number", "poly",
+"proc" (experimental), "string", "vector". Objects of other types are returned
+as strings. 
+
+ Before passing polynomials (or numbers, vectors, matrices, or lists of them)
+to \textsf{Singular}, it is necessary to have sent the 
base\texttt{\symbol{45}}ring to \textsf{Singular} with the function 
\texttt{SingularSetBaseRing} (\ref{SingularSetBaseRing}), in order to ensure 
that \textsf{Singular} knows about them. This is not necessary if in the input 
there is a ring, an
+ideal, or a module (before the polynomials), because these objects contain
+information about the ring to be used as base\texttt{\symbol{45}}ring. All the
+input must be relative to at most one ring; furthermore, at most one object of
+type "ring" can be in the input. 
+
+ As SingularInterface is a rather general function, it is not guaranteed that
+it always works, and some functions are not supported. For instance, in 
\textsf{Singular} there is the function \mbox{\texttt{\mdseries\slshape pause}} 
that waits until a keystroke is pressed; but the interface instead waits for
+the \textsf{Singular} prompt before sending it any new keystroke, and so 
calling \mbox{\texttt{\mdseries\slshape pause}} would hang the interface. 
However, the unsupported functions like \mbox{\texttt{\mdseries\slshape pause}} 
are only a few, and are not mathematically useful. SingularInterface tries to
+block calls to known unsupported functions. 
+
+ Some \textsf{Singular} functions may return more than one value, see the 
\textsf{Singular} documentation, paragraph ``6.2.7 Return type of procedures''. 
In order to use
+one of these functions via \mbox{\texttt{\mdseries\slshape 
SingularInterface}}, the type \mbox{\texttt{\mdseries\slshape 
type{\textunderscore}output}} must be "list". The output in \textsf{GAP} will 
be a list containing the values returned by the \textsf{Singular} function. 
+
+ In the next example we compute the primary decomposition of an ideal. Note
+that for that we need to load the \textsf{Singular} library 
\mbox{\texttt{\mdseries\slshape primdec.lib}}. 
+\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
+  !gapprompt@gap>| !gapinput@R:= PolynomialRing( Rationals, ["x","y","z"] : 
old );;|
+  !gapprompt@gap>| !gapinput@i:= IndeterminatesOfPolynomialRing(R);;|
+  !gapprompt@gap>| !gapinput@x:= i[1];; y:= i[2];; z:= i[3];;|
+  !gapprompt@gap>| !gapinput@f:= (x*y-z)*(x*y*z+y^2*z+x^2*z);;|
+  !gapprompt@gap>| !gapinput@g:= (x*y-z)*(x*y*z^2+x*y^2*z+x^2*y*z);;|
+  !gapprompt@gap>| !gapinput@I:= Ideal( R, [f,g] );;|
+  !gapprompt@gap>| !gapinput@SingularLibrary( "primdec.lib" );|
+  !gapprompt@gap>| !gapinput@SingularInterface( "primdecGTZ", [ I ], "def" );|
+  #I  Singular output of type "list"
+  [ [ <two-sided ideal in Rationals[x,y,z], (1 generator)>,
+        <two-sided ideal in Rationals[x,y,z], (1 generator)> ],
+    [ <two-sided ideal in Rationals[x,y,z], (1 generator)>,
+        <two-sided ideal in Rationals[x,y,z], (1 generator)> ],
+    [ <two-sided ideal in Rationals[x,y,z], (2 generators)>,
+        <two-sided ideal in Rationals[x,y,z], (2 generators)> ],
+    [ <two-sided ideal in Rationals[x,y,z], (3 generators)>,
+        <two-sided ideal in Rationals[x,y,z], (2 generators)> ] ]
+\end{Verbatim}
+ In the next example are calculated the first syzygy module of an ideal, and
+the resultant of two polynomials with respect a variable. Note that in this
+case it is not necessary to set the base\texttt{\symbol{45}}ring with 
\texttt{SingularSetBaseRing} (\ref{SingularSetBaseRing}), in the first case 
because the input \mbox{\texttt{\mdseries\slshape I}} is of type "ideal", and 
in the second case because the
+base\texttt{\symbol{45}}ring was already sent to \textsf{Singular} in the 
former case. 
+\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
+  !gapprompt@gap>| !gapinput@R:= PolynomialRing( Rationals, ["x","y","z"] : 
old );;|
+  !gapprompt@gap>| !gapinput@i:= IndeterminatesOfPolynomialRing( R );;|
+  !gapprompt@gap>| !gapinput@x:= i[1];; y:= i[2];; z:= i[3];;|
+  !gapprompt@gap>| !gapinput@f:= 3*(x+2)^3+y;;|
+  !gapprompt@gap>| !gapinput@g:= x+y+z;;|
+  !gapprompt@gap>| !gapinput@I:= Ideal( R, [f,g] );;|
+  !gapprompt@gap>| !gapinput@M := SingularInterface( "syz", [ I ], "module" 
);;|
+  !gapprompt@gap>| !gapinput@GeneratorsOfLeftOperatorAdditiveGroup( M );|
+  [ [ -x-y-z, 3*x^3+18*x^2+36*x+y+24 ] ]
+  !gapprompt@gap>| !gapinput@SingularInterface( "resultant", [ f, g, z ], 
"poly");|
+  3*x^3+18*x^2+36*x+y+24
+\end{Verbatim}
+ }
+
+ 
+
+\subsection{\textcolor{Chapter }{SingularType}}
+\logpage{[ 1, 3, 9 ]}\nobreak
+\hyperdef{L}{X79B84D5C7AC98756}{}
+{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{SingularType({\mdseries\slshape
 obj})\index{SingularType@\texttt{SingularType}}
+\label{SingularType}
+}\hfill{\scriptsize (function)}}\\
+
+
+ to be written }
+
+ }
+
+ 
+\section{\textcolor{Chapter }{Interaction with \textsf{Singular} at low 
level}}\label{InteractionLow}
+\logpage{[ 1, 4, 0 ]}
+\hyperdef{L}{X874F7C2F7CF4192E}{}
+{
+  
+
+\subsection{\textcolor{Chapter }{SingularCommand}}
+\logpage{[ 1, 4, 1 ]}\nobreak
+\hyperdef{L}{X85EEFDDE8111A67B}{}
+{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{SingularCommand({\mdseries\slshape
 precommand, command})\index{SingularCommand@\texttt{SingularCommand}}
+\label{SingularCommand}
+}\hfill{\scriptsize (function)}}\\
+
+
+ to be written }
+
+ 
+
+\subsection{\textcolor{Chapter }{GapInterface}}
+\logpage{[ 1, 4, 2 ]}\nobreak
+\hyperdef{L}{X7B8471948055DD90}{}
+{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{GapInterface({\mdseries\slshape
 func, arg, out})\index{GapInterface@\texttt{GapInterface}}
+\label{GapInterface}
+}\hfill{\scriptsize (function)}}\\
+
+
+ to be written }
+
+ }
+
+ 
+\section{\textcolor{Chapter }{Other mathematical functions of the 
package}}\label{Other}
+\logpage{[ 1, 5, 0 ]}
+\hyperdef{L}{X82726C947AFEC357}{}
+{
+  
+
+\subsection{\textcolor{Chapter }{GroebnerBasis}}
+\logpage{[ 1, 5, 1 ]}\nobreak
+\hyperdef{L}{X7A43611E876B7560}{}
+{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{GroebnerBasis({\mdseries\slshape
 I})\index{GroebnerBasis@\texttt{GroebnerBasis}}
+\label{GroebnerBasis}
+}\hfill{\scriptsize (operation)}}\\
+
+
+ Here \mbox{\texttt{\mdseries\slshape I}} is an ideal of a polynomial ring. 
This function computes a Groebner basis of \mbox{\texttt{\mdseries\slshape I}} 
(that will be returned as a list of polynomials). For this function it is 
\emph{not} necessary to set the base\texttt{\symbol{45}}ring with 
\texttt{SingularSetBaseRing} (\ref{SingularSetBaseRing}). 
+
+ As term ordering, \textsf{Singular} will use the value of 
\texttt{TermOrdering} (\ref{TermOrdering}) of the polynomial ring containing 
\mbox{\texttt{\mdseries\slshape I}}. Again, if this value is not set, then the 
degree reverse lexicographical
+ordering (\mbox{\texttt{\mdseries\slshape "dp"}}) will be used. 
+\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
+  !gapprompt@gap>| !gapinput@R:= PolynomialRing( Rationals, ["x","y","z"] : 
old );;|
+  !gapprompt@gap>| !gapinput@x := R.1;; y := R.2;; z := R.3;;|
+  !gapprompt@gap>| !gapinput@r:= [ x*y*z -x^2*z, x^2*y*z-x*y^2*z-x*y*z^2, 
x*y-x*z-y*z ];;|
+  !gapprompt@gap>| !gapinput@I:= Ideal( R, r );|
+  <two-sided ideal in Rationals[x,y,z], (3 generators)>
+  !gapprompt@gap>| !gapinput@GroebnerBasis( I );|
+  [ x*y-x*z-y*z, x^2*z-x*z^2-y*z^2, x*z^3+y*z^3, -x*z^3+y^2*z^2-y*z^3 ]
+\end{Verbatim}
+ }
+
+ 
+
+\subsection{\textcolor{Chapter }{SINGULARGBASIS}}
+\logpage{[ 1, 5, 2 ]}\nobreak
+\hyperdef{L}{X7A594BFA7B521F98}{}
+{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{SINGULARGBASIS\index{SINGULARGBASIS@\texttt{SINGULARGBASIS}}
+\label{SINGULARGBASIS}
+}\hfill{\scriptsize (global variable)}}\\
+
+
+ This variable is a record containing the component 
\mbox{\texttt{\mdseries\slshape GroebnerBasis}}. When the variable 
SINGULARGBASIS is assigned to the \textsf{GAP} global variable 
\mbox{\texttt{\mdseries\slshape GBASIS}}, then the computations of Groebner 
bases via \textsf{GAP}'s internal function for that, \texttt{GroebnerBasis} 
(\textbf{Reference: GroebnerBasis}), are done by \textsf{Singular}. 
+
+ \textsf{Singular} claims that it ``features one of the fastest and most 
general implementations of various
+algorithms for computing Groebner bases''. The \textsf{GAP}'s internal 
function claims to be ``a
+na\texttt{\symbol{123}}\texttt{\symbol{92}}"\texttt{\symbol{92}}i\texttt{\symbol{125}}ve
+implementation of Buchberger's algorithm (which is mainly intended as a
+teaching tool): it might not be sufficient for serious problems.'' 
+
+ (Note in the following example that the Groebner bases calculated by the 
\textsf{GAP} internal function are in general not reduced; for reduced bases 
see the \textsf{GAP} function \texttt{ReducedGroebnerBasis} (\textbf{Reference: 
ReducedGroebnerBasis}).) 
+\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
+  !gapprompt@gap>| !gapinput@R:= PolynomialRing( Rationals, 3 );;|
+  !gapprompt@gap>| !gapinput@i:= IndeterminatesOfPolynomialRing( R );;|
+  !gapprompt@gap>| !gapinput@pols:= [i[1]+i[2]+i[3], 
i[1]*i[2]+i[1]*i[3]+i[2]*i[3], i[1]*i[2]*i[3]];;|
+  !gapprompt@gap>| !gapinput@o:= MonomialLexOrdering();;|
+  !gapprompt@gap>| !gapinput@GBASIS:= GAPGBASIS;;|
+  !gapprompt@gap>| !gapinput@GroebnerBasis( pols, o ); # This is the internal 
GAP method.|
+  [ x+y+z, x*y+x*z+y*z, x*y*z, -y^2-y*z-z^2, z^3 ]
+  !gapprompt@gap>| !gapinput@GBASIS:= SINGULARGBASIS;;|
+  !gapprompt@gap>| !gapinput@GroebnerBasis( pols, o ); # This uses Singular 
via the interface.|
+  [ z^3, y^2+y*z+z^2, x+y+z ]
+\end{Verbatim}
+ }
+
+ 
+
+\subsection{\textcolor{Chapter }{HasTrivialGroebnerBasis}}
+\logpage{[ 1, 5, 3 ]}\nobreak
+\hyperdef{L}{X83668E317A047D24}{}
+{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{HasTrivialGroebnerBasis({\mdseries\slshape
 I})\index{HasTrivialGroebnerBasis@\texttt{HasTrivialGroebnerBasis}}
+\label{HasTrivialGroebnerBasis}
+}\hfill{\scriptsize (function)}}\\
+
+
+ The function \mbox{\texttt{\mdseries\slshape HasTrivialGroebnerBasis}} 
returns \mbox{\texttt{\mdseries\slshape true}} if the Groebner basis of the 
ideal \mbox{\texttt{\mdseries\slshape I}} is trivial, false otherwise. This 
function can be used if it is not necessary
+to know the Groebner basis of an ideal, but it suffices to know only whether
+it is trivial or not. 
+\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
+  !gapprompt@gap>| !gapinput@x:= Indeterminate( Rationals, "x" : old );;|
+  !gapprompt@gap>| !gapinput@y:= Indeterminate( Rationals, "y", [ x ] : old 
);;|
+  !gapprompt@gap>| !gapinput@z:= Indeterminate( Rationals, "z", [ x, y ] : old 
);;|
+  !gapprompt@gap>| !gapinput@R:= PolynomialRing( Rationals, [ x, y, z] );;|
+  !gapprompt@gap>| !gapinput@f:= (x*y-z)*(x*y*z+y^2*z+x^2*z);;|
+  !gapprompt@gap>| !gapinput@g:= (x*y-z)*(x*y*z^2+x*y^2*z+x^2*y*z);;|
+  !gapprompt@gap>| !gapinput@I:= Ideal( R, [f,g] );;|
+  !gapprompt@gap>| !gapinput@HasTrivialGroebnerBasis( I );|
+  false
+\end{Verbatim}
+ }
+
+ 
+
+\subsection{\textcolor{Chapter }{GcdUsingSingular (for polynomials)}}
+\logpage{[ 1, 5, 4 ]}\nobreak
+\hyperdef{L}{X877960128076E656}{}
+{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{GcdUsingSingular({\mdseries\slshape
 pol{\textunderscore}1, pol{\textunderscore}2, ..., 
pol{\textunderscore}n})\index{GcdUsingSingular@\texttt{GcdUsingSingular}!for 
polynomials}
+\label{GcdUsingSingular:for polynomials}
+}\hfill{\scriptsize (function)}}\\
+\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{GcdUsingSingular({\mdseries\slshape
 [pol{\textunderscore}1, pol{\textunderscore}2, ..., 
pol{\textunderscore}n]})\index{GcdUsingSingular@\texttt{GcdUsingSingular}!for a 
list of polynomials}
+\label{GcdUsingSingular:for a list of polynomials}
+}\hfill{\scriptsize (function)}}\\
+
+
+ The arguments of this function are (possibly multivariate) polynomials
+separated by commas, or it is a list of polynomials. This function returns the
+greatest common divisor of these polynomials. For this function it is 
\emph{necessary} for the polynomials to lie in the 
base\texttt{\symbol{45}}ring, as set by \texttt{SingularSetBaseRing} 
(\ref{SingularSetBaseRing}). 
+\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
+  !gapprompt@gap>| !gapinput@R:= PolynomialRing( Rationals, ["x","y","z"] : 
old );;|
+  !gapprompt@gap>| !gapinput@SingularSetBaseRing( R );|
+  !gapprompt@gap>| !gapinput@i:= IndeterminatesOfPolynomialRing(R);;|
+  !gapprompt@gap>| !gapinput@x:= i[1];; y:= i[2];; z:= i[3];;|
+  !gapprompt@gap>| !gapinput@f:= (x*y-z)*(x*y*z+y^2*z+x^2*z);|
+  x^3*y*z+x^2*y^2*z+x*y^3*z-x^2*z^2-x*y*z^2-y^2*z^2
+  !gapprompt@gap>| !gapinput@g:= (x*y-z)*(x*y*z^2+x*y^2*z+x^2*y*z);|
+  x^3*y^2*z+x^2*y^3*z+x^2*y^2*z^2-x^2*y*z^2-x*y^2*z^2-x*y*z^3
+  !gapprompt@gap>| !gapinput@GcdUsingSingular( f, g );|
+  -x*y*z+z^2
+\end{Verbatim}
+ }
+
+ 
+
+\subsection{\textcolor{Chapter }{FactorsUsingSingularNC}}
+\logpage{[ 1, 5, 5 ]}\nobreak
+\hyperdef{L}{X84AC005C837CE13C}{}
+{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{FactorsUsingSingularNC({\mdseries\slshape
 f})\index{FactorsUsingSingularNC@\texttt{FactorsUsingSingularNC}}
+\label{FactorsUsingSingularNC}
+}\hfill{\scriptsize (function)}}\\
+
+
+ Here \mbox{\texttt{\mdseries\slshape f}} is a (possibly multivariate) 
polynomial. This function returns the
+factorization of \mbox{\texttt{\mdseries\slshape f}} into irreducible factors. 
The first element in the output is a constant
+coefficient, and the others may be monic (with respect to the term ordering)
+polynomials, as returned by \textsf{Singular}. For this function it is 
\emph{necessary} that \mbox{\texttt{\mdseries\slshape f}} lies in the 
base\texttt{\symbol{45}}ring, as set by \texttt{SingularSetBaseRing} 
(\ref{SingularSetBaseRing}). 
+
+ The function does not check that the product of these factors gives 
\mbox{\texttt{\mdseries\slshape f}} (for that use \texttt{FactorsUsingSingular} 
(\ref{FactorsUsingSingular})): \textsf{Singular} version 
2\texttt{\symbol{45}}0\texttt{\symbol{45}}3 contains a bug so that the 
\textsf{Singular} function \mbox{\texttt{\mdseries\slshape factorize}} may give 
wrong results (therefore \textsf{Singular} version at least 
2\texttt{\symbol{45}}0\texttt{\symbol{45}}4 is recommended). 
+\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
+  !gapprompt@gap>| !gapinput@R:= PolynomialRing( Rationals, ["x","y","z"] : 
old );;|
+  !gapprompt@gap>| !gapinput@SingularSetBaseRing( R );|
+  !gapprompt@gap>| !gapinput@i:= IndeterminatesOfPolynomialRing( R );;|
+  !gapprompt@gap>| !gapinput@x:= i[1];; y:= i[2];; z:= i[3];;|
+  !gapprompt@gap>| !gapinput@f:= (x*y-z)*(3*x*y*z+4*y^2*z+5*x^2*z);|
+  5*x^3*y*z+3*x^2*y^2*z+4*x*y^3*z-5*x^2*z^2-3*x*y*z^2-4*y^2*z^2
+  !gapprompt@gap>| !gapinput@FactorsUsingSingularNC( f );|
+  [ 1, -5*x^2-3*x*y-4*y^2, -x*y+z, z ]
+  !gapprompt@gap>| !gapinput@f:= (x*y-z)*(5/3*x*y*z+4*y^2*z+6*x^2*z);|
+  6*x^3*y*z+5/3*x^2*y^2*z+4*x*y^3*z-6*x^2*z^2-5/3*x*y*z^2-4*y^2*z^2
+  !gapprompt@gap>| !gapinput@FactorsUsingSingularNC( f );|
+  [ 1/3, -18*x^2-5*x*y-12*y^2, -x*y+z, z ]
+\end{Verbatim}
+ }
+
+ 
+
+\subsection{\textcolor{Chapter }{FactorsUsingSingular}}
+\logpage{[ 1, 5, 6 ]}\nobreak
+\hyperdef{L}{X87A0E69B81E52AA2}{}
+{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{FactorsUsingSingular({\mdseries\slshape
 f})\index{FactorsUsingSingular@\texttt{FactorsUsingSingular}}
+\label{FactorsUsingSingular}
+}\hfill{\scriptsize (function)}}\\
+
+
+ This does the same as \texttt{FactorsUsingSingularNC} 
(\ref{FactorsUsingSingularNC}), except that on the \textsf{GAP} level it is 
checked that the product of these factors gives \mbox{\texttt{\mdseries\slshape 
f}}. Again it is \emph{necessary} that \mbox{\texttt{\mdseries\slshape f}} lies 
in the base\texttt{\symbol{45}}ring, as set by \texttt{SingularSetBaseRing} 
(\ref{SingularSetBaseRing}). 
+\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
+  !gapprompt@gap>| !gapinput@R:= PolynomialRing( Rationals, ["x","y"] : old 
);;|
+  !gapprompt@gap>| !gapinput@SingularSetBaseRing( R );|
+  !gapprompt@gap>| !gapinput@x := R.1;; y := R.2;;|
+  !gapprompt@gap>| !gapinput@FactorsUsingSingular( x^2 + y^2 );|
+  [ 1, x^2+y^2 ]
+  !gapprompt@gap>| !gapinput@R:= PolynomialRing( GaussianRationals, ["x","y"] 
: old);;|
+  !gapprompt@gap>| !gapinput@SingularSetBaseRing( R );|
+  !gapprompt@gap>| !gapinput@x := R.1;; y := R.2;;|
+  !gapprompt@gap>| !gapinput@FactorsUsingSingular( x^2 + y^2 );|
+  [ 1, x+E(4)*y, x-E(4)*y ]
+\end{Verbatim}
+ }
+
+ 
+
+\subsection{\textcolor{Chapter }{GeneratorsOfInvariantRing}}
+\logpage{[ 1, 5, 7 ]}\nobreak
+\hyperdef{L}{X7EAC34C984599470}{}
+{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{GeneratorsOfInvariantRing({\mdseries\slshape
 R, G})\index{GeneratorsOfInvariantRing@\texttt{GeneratorsOfInvariantRing}}
+\label{GeneratorsOfInvariantRing}
+}\hfill{\scriptsize (function)}}\\
+
+
+ Here \mbox{\texttt{\mdseries\slshape R}} is a polynomial ring, and 
\mbox{\texttt{\mdseries\slshape G}} a finite group, which is either a matrix 
group or a permutation group. If \mbox{\texttt{\mdseries\slshape G}} is a 
matrix group, then its degree must be less than or equal to the number of
+indeterminates of \mbox{\texttt{\mdseries\slshape R}}. If 
\mbox{\texttt{\mdseries\slshape G}} is a permutation group, then its maximal 
moved point must be less than or
+equal to the number of indeterminates of \mbox{\texttt{\mdseries\slshape R}}. 
This function computes a list of generators of the invariant ring of 
\mbox{\texttt{\mdseries\slshape G}}, corresponding to its action on 
\mbox{\texttt{\mdseries\slshape R}}. This action is taken to be from the left. 
+
+ For this function it is \emph{not} necessary to set the 
base\texttt{\symbol{45}}ring with \texttt{SingularSetBaseRing} 
(\ref{SingularSetBaseRing}). 
+\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
+  !gapprompt@gap>| !gapinput@m:=[[1,1,1],[0,1,1],[0,0,1]] * One( GF(3) );;|
+  !gapprompt@gap>| !gapinput@G:= Group( [m] );;|
+  !gapprompt@gap>| !gapinput@R:= PolynomialRing( GF(3), 3 );;|
+  !gapprompt@gap>| !gapinput@GeneratorsOfInvariantRing( R, G );|
+  [ x_3, x_1*x_3+x_2^2+x_2*x_3, x_1^3+x_1^2*x_3-x_1*x_2^2-x_1*x_2*x_3 ]
+\end{Verbatim}
+ }
+
+ }
+
+ 
+\section{\textcolor{Chapter }{Algebraic\texttt{\symbol{45}}geometric codes 
functions}}\label{AlgebraicGeometricCodes}
+\logpage{[ 1, 6, 0 ]}
+\hyperdef{L}{X7E4CD3FF8230789C}{}
+{
+  This section of \textsf{GAP}'s \textsf{singular} package and the 
corresponding code were written by David Joyner, \href{mailto://[email protected]} 
{\texttt{[email protected]}}, (with help from Christoph Lossen and Marco 
Costantini). It has been tested
+with \textsf{Singular} version 2.0.x. 
+
+ To start off, several new \textsf{Singular} commands must be loaded. The 
following command loads the necessary \textsf{Singular} and \textsf{GAP} 
commands, the packages \textsf{singular} and \textsf{GUAVA} (if not already 
loaded), and (re)starts \textsf{Singular}. 
+\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
+  !gapprompt@gap>| !gapinput@ReadPackage("singular", "contrib/agcode.g");;|
+\end{Verbatim}
+ 
+
+\subsection{\textcolor{Chapter }{AllPointsOnCurve}}
+\logpage{[ 1, 6, 1 ]}\nobreak
+\hyperdef{L}{X80553C51807FA705}{}
+{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{AllPointsOnCurve({\mdseries\slshape
 f, F})\index{AllPointsOnCurve@\texttt{AllPointsOnCurve}}
+\label{AllPointsOnCurve}
+}\hfill{\scriptsize (function)}}\\
+
+
+ Let $F$ be a finite and prime field. The function 
\mbox{\texttt{\mdseries\slshape AllPointsOnCurve( f, F )}} computes a list of 
generators of maximal ideals representing rationals points
+on a curve $X$ defined by $f(x,y)=0$. 
+\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
+  !gapprompt@gap>| !gapinput@F:=GF(7);;|
+  !gapprompt@gap>| !gapinput@R2:= PolynomialRing( F, 2 );;|
+  !gapprompt@gap>| !gapinput@SetTermOrdering( R2, "lp" );; # --- the term 
ordering must be "lp"|
+  !gapprompt@gap>| !gapinput@indet:= IndeterminatesOfPolynomialRing(R2);;|
+  !gapprompt@gap>| !gapinput@x:= indet[1];; y:= indet[2];;|
+  !gapprompt@gap>| !gapinput@f:=x^7-y^2-x;;|
+  !gapprompt@gap>| !gapinput@AllPointsOnCurve(f,F);|
+  [ [ x_1 ], [ x_1-Z(7)^0 ], [ x_1+Z(7)^4 ], [ x_1+Z(7)^5 ], [ x_1+Z(7)^0 ], 
+    [ x_1+Z(7) ], [ x_1+Z(7)^2 ] ]
+\end{Verbatim}
+ }
+
+ 
+
+\subsection{\textcolor{Chapter }{AGCode}}
+\logpage{[ 1, 6, 2 ]}\nobreak
+\hyperdef{L}{X78E2235083D9FDCC}{}
+{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{AGCode({\mdseries\slshape
 f, G, D})\index{AGCode@\texttt{AGCode}}
+\label{AGCode}
+}\hfill{\scriptsize (function)}}\\
+
+
+ Let f be a polynomial in x,y over F=GF(p) representing plane curve $X$ 
defined by $f(x,y)=0$, where p is a prime (prime powers are not yet supported 
by the underlying \textsf{Singular} function). Let G, D be disjoint rational 
divisors on $X$, where D is a sum of distinct points, $supp(D)={P_1, ..., 
P_n}$. The AG code associated to f, G, D is the F defined to be the image of the
+evaluation map $f \mapsto (f(P_1),...,f(P_n))$. The function 
\mbox{\texttt{\mdseries\slshape AGCode}} computes a list of length three, [G, 
n, k], where G is a generator matrix of
+the AG code C, n is its length, and k is its dimension. 
+\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
+  !gapprompt@gap>| !gapinput@F:=GF(7);;|
+  !gapprompt@gap>| !gapinput@R2:= PolynomialRing( F, 2 );;|
+  !gapprompt@gap>| !gapinput@SetTermOrdering( R2, "lp" );; # --- the term 
ordering must be "lp"|
+  !gapprompt@gap>| !gapinput@SingularSetBaseRing(R2);|
+  !gapprompt@gap>| !gapinput@indet:= IndeterminatesOfPolynomialRing(R2);;|
+  !gapprompt@gap>| !gapinput@x:= indet[1];; y:= indet[2];;|
+  !gapprompt@gap>| !gapinput@f:=x^7-y^2-x;;|
+  !gapprompt@gap>| !gapinput@G:=[2,2,0,0,0,0,0]; D:=[4..8];|
+  [ 2, 2, 0, 0, 0, 0, 0 ]
+  [ 4 .. 8 ]
+  !gapprompt@gap>| !gapinput@agc:=AGCode(f,G,D);|
+  [ [ [ Z(7)^3, Z(7), 0*Z(7), Z(7)^4, Z(7)^5 ],
+        [ 0*Z(7), Z(7)^4, Z(7)^0, Z(7)^5, Z(7)^3 ],
+        [ 0*Z(7), 0*Z(7), Z(7)^3, Z(7), Z(7)^2 ] ], 5, 3 ]
+\end{Verbatim}
+ This generator matrix can be fed into the \textsf{GUAVA} command 
\texttt{GeneratorMatCode} (\textbf{GUAVA: GeneratorMatCode}) to create a linear 
code in \textsf{GAP}, which in turn can be fed into the \textsf{GUAVA} command 
\texttt{MinimumDistance} (\textbf{GUAVA: MinimumDistance}) to compute the 
minimum distance of the code. 
+\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
+  !gapprompt@gap>| !gapinput@ag_mat:=agc[1];;|
+  !gapprompt@gap>| !gapinput@C := GeneratorMatCode( ag_mat, GF(7) );|
+  a linear [5,3,1..3]2 code defined by generator matrix over GF(7)
+  !gapprompt@gap>| !gapinput@MinimumDistance(C);|
+  3
+\end{Verbatim}
+ }
+
+ }
+
+ 
+\section{\textcolor{Chapter }{Troubleshooting and technical 
stuff}}\label{Troubleshooting}
+\logpage{[ 1, 7, 0 ]}
+\hyperdef{L}{X8562222580239DA6}{}
+{
+  
+\subsection{\textcolor{Chapter }{Supported platforms and underlying 
\textsf{GAP} functions}}\logpage{[ 1, 7, 1 ]}
+\hyperdef{L}{X7C1724F780B84A6C}{}
+{
+  \label{platforms} This package has been developed mainly on a Linux 
platform, with \textsf{GAP} version 4.4, and \textsf{Singular} version 
2\texttt{\symbol{45}}0\texttt{\symbol{45}}4. A reasonable work has
+been done to ensure backward compatibility with previous versions of 
\textsf{GAP} 4, but some features may be missing. This package has been tested 
also with
+some other versions of Singular, including
+2\texttt{\symbol{45}}0\texttt{\symbol{45}}3,
+2\texttt{\symbol{45}}0\texttt{\symbol{45}}5, and
+2\texttt{\symbol{45}}0\texttt{\symbol{45}}6, and on other Unix systems. It has
+been tested also on Windows, but it is reported to be slower that on Linux. 
+
+ There is an extension of \textsf{Singular}, named \textsf{Plural}, which 
deals with certain noncommutative polynomial rings; see the \textsf{Singular} 
documentation, section ``7. PLURAL''. Currently, \textsf{GAP} doesn't support 
these noncommutative polynomial rings. The user of the \textsf{Singular} may 
use the features of \textsf{Plural} by calling the \textsf{Singular} function 
\mbox{\texttt{\mdseries\slshape ncalgebra}} via \mbox{\texttt{\mdseries\slshape 
SingularInterface}}. In this case, extreme care is needed, because on the 
\textsf{GAP} side the polynomial will still be commutative. 
+
+ For the low\texttt{\symbol{45}}level communication with \textsf{Singular}, 
the interface relies on the \textsf{GAP} function 
\texttt{InputOutputLocalProcess} (\textbf{Reference: InputOutputLocalProcess}), 
and this function is available only in \textsf{GAP} 4.2 (or newer) on a Unix 
environment or in \textsf{GAP} 4.4 (or newer) on Windows; 
auto\texttt{\symbol{45}}detection is used. In this
+case, \textsf{GAP} interacts with a unique continuous session of 
\textsf{Singular}. 
+
+ In the case that the \textsf{GAP} function \mbox{\texttt{\mdseries\slshape 
InputOutputLocalProcess}} is not available, then the singular interface will 
use the \textsf{GAP} function \texttt{Process} (\textbf{Reference: Process}). 
In this case only a limited subset of the functionality of the interface are
+available: for example \texttt{StartSingular} (\ref{StartSingular}) and 
\texttt{GeneratorsOfInvariantRing} (\ref{GeneratorsOfInvariantRing}) are not 
available, but \texttt{GroebnerBasis} (\ref{GroebnerBasis}) is; 
\texttt{SingularInterface} (\ref{SingularInterface}) supports less data types. 
In this case, for each function call, a new session
+of \textsf{Singular} is started and quit. }
+
+ 
+\subsection{\textcolor{Chapter }{How different versions of \textsf{GAP} 
display polynomial rings and polynomials}}\logpage{[ 1, 7, 2 ]}
+\hyperdef{L}{X82CDC01B7AABF5F5}{}
+{
+  The way in which \textsf{GAP} displays polynomials has changed passing from 
version 4.3 to 4.4 and the way
+in which \textsf{GAP} displays polynomial rings has changed passing from 
version 4.4 to 4.5. 
+\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
+  !gapprompt@gap>| !gapinput@# GAP 4.3 or older|
+  !gapprompt@gap>| !gapinput@R := PolynomialRing( Rationals, [ "x" ] : new );|
+  PolynomialRing(..., [ x ])
+  !gapprompt@gap>| !gapinput@x := IndeterminatesOfPolynomialRing( R )[1];;|
+  !gapprompt@gap>| !gapinput@x^2 + x;|
+  x+x^2
+\end{Verbatim}
+ 
+\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
+  !gapprompt@gap>| !gapinput@# GAP 4.4|
+  !gapprompt@gap>| !gapinput@R := PolynomialRing( Rationals, [ "x" ] : new );|
+  PolynomialRing(..., [ x ])
+  !gapprompt@gap>| !gapinput@x := IndeterminatesOfPolynomialRing( R )[1];;|
+  !gapprompt@gap>| !gapinput@x^2 + x;|
+  x^2+x
+\end{Verbatim}
+ 
+\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
+  !gapprompt@gap>| !gapinput@# GAP 4.5 or newer|
+  !gapprompt@gap>| !gapinput@R := PolynomialRing( Rationals, [ "x" ] : new );|
+  Rationals[x]
+  !gapprompt@gap>| !gapinput@x := IndeterminatesOfPolynomialRing( R )[1];;|
+  !gapprompt@gap>| !gapinput@x^2 + x;|
+  x^2+x
+\end{Verbatim}
+ The examples in this manual use the way of displaying of the newest 
\textsf{GAP}. }
+
+ 
+\subsection{\textcolor{Chapter }{Test file}}\logpage{[ 1, 7, 3 ]}
+\hyperdef{L}{X7DE6DC637A7FAC93}{}
+{
+  The following performs a test of the package functionality using a test file 
 (\textbf{Reference: Test Files}). 
+\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
+  !gapprompt@gap>| !gapinput@fn := Filename( DirectoriesPackageLibrary( 
"singular", "tst" ), "testall.tst" );;|
+  !gapprompt@gap>| !gapinput@Test( fn );|
+  true
+\end{Verbatim}
+ }
+
+ 
+\subsection{\textcolor{Chapter }{Common problems}}\logpage{[ 1, 7, 4 ]}
+\hyperdef{L}{X82260C8E82090E87}{}
+{
+  \label{common} A common error is forgetting to use 
\texttt{SingularSetBaseRing} (\ref{SingularSetBaseRing}). In the next example, 
\mbox{\texttt{\mdseries\slshape SingularInterface}} works only after having 
used \mbox{\texttt{\mdseries\slshape SingularSetBaseRing}}. 
+\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
+  !gapprompt@gap>| !gapinput@a:=Indeterminate( Rationals );;|
+  !gapprompt@gap>| !gapinput@F:=AlgebraicExtension( Rationals, a^5+4*a+1 );;|
+  !gapprompt@gap>| !gapinput@R:=PolynomialRing( F, ["x","y"] : old );;|
+  !gapprompt@gap>| !gapinput@x := R.1;; y := R.2;;|
+  !gapprompt@gap>| !gapinput@SingularInterface( "lead", [x^3*y+x*y+y^2], 
"poly" );|
+  Error, sorry: Singular, or the interface to Singular, or the current
+  SingularBaseRing, do not support the object x^3*y+x*y+y^2.
+  Did you remember to use 'SingularSetBaseRing' ?
+  [...]
+  !gapbrkprompt@brk>| !gapinput@quit;|
+  !gapprompt@gap>| !gapinput@SingularSetBaseRing( R );|
+  !gapprompt@gap>| !gapinput@SingularInterface( "lead", [x^3*y+x*y+y^2], 
"poly" );|
+  x^3*y
+\end{Verbatim}
+ A corresponding problem would happen if the user works directly with 
\textsf{Singular} and forgets to define the base\texttt{\symbol{45}}ring at 
first. 
+
+ As explained in the \textsf{GAP} documentation  (\textbf{Reference: 
Polynomials and Rational Functions}), given a ring 
\mbox{\texttt{\mdseries\slshape R}}, \textsf{GAP} does not consider 
\mbox{\texttt{\mdseries\slshape R}} as a subset of a polynomial ring over 
\mbox{\texttt{\mdseries\slshape R}}: for example the zero of 
\mbox{\texttt{\mdseries\slshape R}} ($0$) and the zero of the polynomial ring 
($0x^0$) are different objects. \textsf{GAP} prints these different objects in 
the same way, and this fact may be
+misleading. This is a feature of \textsf{GAP} independent from the package 
\textsf{singular}, but it is important to keep it in mind, as most of the 
objects used by \textsf{Singular} are polynomials, or their coefficients. }
+
+ 
+\subsection{\textcolor{Chapter }{Errors on the \textsf{Singular} 
side}}\logpage{[ 1, 7, 5 ]}
+\hyperdef{L}{X7D38248D79425B28}{}
+{
+ Errors may occur on the \textsf{Singular} side, for instance using 
\texttt{SingularInterface} (\ref{SingularInterface}) if the arguments supplied 
are not appropriate for the called function. In
+general, it is still an open problem to find a satisfactory way to handle in 
\textsf{GAP} the errors of this kind. 
+
+ At the moment, when an error on the \textsf{Singular} side happens, 
\textsf{Singular} may print an error message on the 
so\texttt{\symbol{45}}called ``standard
+error''; this message may appear on the screen, but it is not logged by the 
\textsf{GAP} function \texttt{LogTo} (\textbf{Reference: LogTo}). The interface 
prints \mbox{\texttt{\mdseries\slshape No output from Singular}}, and then the 
trivial object (of the type specified as the third argument of 
\mbox{\texttt{\mdseries\slshape SingularInterface}}) may be returned. }
+
+ 
+\subsection{\textcolor{Chapter }{Sending a report}}\logpage{[ 1, 7, 6 ]}
+\hyperdef{L}{X7C8AE6BD787CD237}{}
+{
+  As every software, also this package may contain bugs. If you find a bug, or 
a
+missing feature, or some other problem, or if you have comments and
+suggestions, or if you need some help, you may do so via our issue tracker at 
\href{https://github.com/gap-packages/singular/issues} 
{\texttt{https://github.com/gap\texttt{\symbol{45}}packages/singular/issues}}. 
Please include in the report the code that causes the problem, so that we
+can replicate the problem. 
+
+ If appropriate, you can set \texttt{InfoSingular} (\ref{InfoSingular}) to 
\mbox{\texttt{\mdseries\slshape 3}}, to see what happens between \textsf{GAP} 
and \textsf{Singular} (but this may give a lot of output). Note that 
\texttt{LogTo} (\textbf{Reference: LogTo}) does not log messages written 
directly on the screen by \textsf{Singular}. 
+
+ Every report about this package is welcome, however the probability that your
+problem will be fixed quickly increases if you read the text ``How to Report
+Bugs Effectively'', 
\href{https://www.chiark.greenend.org.uk/~sgtatham/bugs.html} 
{\texttt{https://www.chiark.greenend.org.uk/\texttt{\symbol{126}}sgtatham/bugs.html}}
 , and send a bug report according to this text. }
+
+ 
+
+\subsection{\textcolor{Chapter }{SingularReportInformation}}
+\logpage{[ 1, 7, 7 ]}\nobreak
+\hyperdef{L}{X78BE74C97BF4E287}{}
+{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{SingularReportInformation({\mdseries\slshape
 })\index{SingularReportInformation@\texttt{SingularReportInformation}}
+\label{SingularReportInformation}
+}\hfill{\scriptsize (function)}}\\
+
+
+ The function \mbox{\texttt{\mdseries\slshape SingularReportInformation}} 
collects a description of the system, which should be included in any bug
+report. 
+\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
+  !gapprompt@gap>| !gapinput@SingularReportInformation();|
+  Pkg_Version := "4.04.15";
+  Gap_Version := "4.dev";
+  Gap_Architecture := "i686-pc-linux-gnu-gcc";
+  Gap_BytesPerVariable := 4;
+  uname := "Linux 2.4.20 i686";
+  Singular_Version: := 2004;
+  Singular_Name: := "/usr/local/Singular/2-0-4/ix86-Linux/Singular";
+  
+  "Pkg_Version := \"4.04.15\";\nGap_Version := \"4.dev\";\nGap_Architecture := 
\
+  \"i686-pc-linux-gnu-gcc\";\nGap_BytesPerVariable := 4;\nuname := \"Linux 
2.4.2\
+  0 i686\";\nSingular_Version: := 2004;\nSingular_Name: := 
\"/usr/local/Singular\
+  /2-0-4/ix86-Linux/Singular\";\n"
+\end{Verbatim}
+ }
+
+ 
+
+\subsection{\textcolor{Chapter }{InfoSingular}}
+\logpage{[ 1, 7, 8 ]}\nobreak
+\hyperdef{L}{X843C50B18098609A}{}
+{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{InfoSingular\index{InfoSingular@\texttt{InfoSingular}}
+\label{InfoSingular}
+}\hfill{\scriptsize (info class)}}\\
+
+
+ This is the info class  (\textbf{Reference: Info Functions}) used by the 
interface. It can be set to levels 0, 1, 2, and 3. At level 0 no
+information is printed on the screen. At level 1 (default) the interface
+prints a message about the \mbox{\texttt{\mdseries\slshape 
type{\textunderscore}output}}, when "def" is used in 
\mbox{\texttt{\mdseries\slshape SingularInterface}}, see the example at 
\texttt{SingularInterface} (\ref{SingularInterface}). At level 2, information 
on the activities of the interface is printed (e.g.,
+messages when a \textsf{Singular} session, or a Groebner basis calculation, is 
started or terminated). At level
+3 all strings that \textsf{GAP} sends to \textsf{Singular} are printed, as 
well as all strings that \textsf{Singular} sends back. 
+\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
+  !gapprompt@gap>| !gapinput@SetInfoLevel( InfoSingular, 2 );|
+  !gapprompt@gap>| !gapinput@G:= SymmetricGroup( 3 );;|
+  !gapprompt@gap>| !gapinput@R:= PolynomialRing( GF(2), 3 );;|
+  !gapprompt@gap>| !gapinput@GeneratorsOfInvariantRing( R, G );|
+  #I  running SingularInterface( "invariant_ring", [ "matrix", "matrix"
+   ], "list" )...
+  #I  done SingularInterface.
+  [ x_1+x_2+x_3, x_1*x_2+x_1*x_3+x_2*x_3, x_1*x_2*x_3 ]
+  !gapprompt@gap>| !gapinput@I:= Ideal( R, last );;|
+  !gapprompt@gap>| !gapinput@GroebnerBasis( I );|
+  #I  running GroebnerBasis...
+  #I  done GroebnerBasis.
+  [ x_1+x_2+x_3, x_2^2+x_2*x_3+x_3^2, x_3^3 ]
+  !gapprompt@gap>| !gapinput@SetInfoLevel( InfoSingular, 1 );|
+\end{Verbatim}
+ }
+
+ }
+
+ }
+
+ \def\indexname{Index\logpage{[ "Ind", 0, 0 ]}
+\hyperdef{L}{X83A0356F839C696F}{}
+}
+
+\cleardoublepage
+\phantomsection
+\addcontentsline{toc}{chapter}{Index}
+
+
+\printindex
+
+\immediate\write\pagenrlog{["Ind", 0, 0], \arabic{page},}
+\newpage
+\immediate\write\pagenrlog{["End"], \arabic{page}];}
+\immediate\closeout\pagenrlog
+\end{document}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/singular-2025.08.26/doc/title.xml 
new/singular-2026.04.09/doc/title.xml
--- old/singular-2025.08.26/doc/title.xml       2025-08-27 16:45:24.000000000 
+0200
+++ new/singular-2026.04.09/doc/title.xml       2026-04-09 02:00:00.000000000 
+0200
@@ -9,7 +9,7 @@
     A &GAP; interface to Singular
   </Subtitle>
   <Version>
-    2025.08.26
+    2026.04.09
   </Version>
   <Author>
     Marco Costantini<Alt Only="LaTeX"><Br/></Alt>
@@ -29,6 +29,6 @@
 
   </Author>
   <Date>
-    26 August 2025
+    9 April 2026
   </Date>
   </TitlePage>
\ No newline at end of file

Reply via email to