4 Alternative user interfaces

In addition to our Python-based tool ipbori and the PolyBoRi package of Sage we also support two more front ends.

4.1 PolyGUI

PolyBoRi comes with a QT-based graphical user interface, which is started by typing PolyGUI at the command prompt.


Figure 1: PolyGUI: A graphical user interface for PolyBoRi’s groebner_basis command

The user make a Gröbner analysis of custom polynomial systems by selecting various options of PolyBoRi’s groebner_basis command. The “Open File” dialog can be used to load PolyBoRi-compatible data files. They have to be written in Python syntax and must contain a ring declaration and the definition of an ideal (given as a lit of Boolean polynomials).


declare_ring([Block("x", 10), Block("y", 10)]) 
ideal = [x(1) + x(2), x(2) + y(1)]

The user interface comes with several switches and buttons which can be used to set the monomial ordering and the available options of the groebner_basis; including the protocol output. The “Run” button is then to be used to execute the Gröbner basis computation.

4.2 Singular’s pyobject extension

This approach uses Singular’s upcoming built-in pyobject extension. For using PolyBoRi from Singular you must ensure, that PolyBoRi is installed either in the python search path, or in Singular’s binary path. PolyBoRi’s default installation target (in the system resources) will work. In case you do not have root access, you can customize the installation:

  scons install PREFIX=/path/to/my/bin PYINSTALLPREFIX=/path/to/python/modules

where /path/to/my/bin is the users path, and /path/to/python/modules could be for instance Singular’s binary directory. If you also do not have write permission to the latter, please add a custom directory to environment variable PYTHONPATH and use that directory for PYINSTALLPREFIX.

The following session illustrates how PolyBoRi’s functionality can be accessed from Singular:


                     SINGULAR                                 /  Development 
 A Computer Algebra System for Polynomial Computations       /   version 3-1-2 
 by: W. Decker, G.-M. Greuel, G. Pfister, H. Schoenemann     \   Oct 2010 
FB Mathematik der Universitaet, D-67653 Kaiserslautern        \ 
// ** executing LIB/.singularrc 
> python_import("polybori"); 
> declare_ring(list(Block("x", 10), Block("y", 10))); 
<polybori.dynamic.PyPolyBoRi.Ring object at 0xddf050> 
> list polybori_ideal = (x(1)+x(2),x(2)+y(1)); 
> def result = groebner_basis(polybori_ideal); 
> result; 
[x(1) + y(1), x(2) + y(1)] 
> typeof(result); 
> result[1]; 
x(2) + y(1) 
> Auf Wiedersehen.