Home Online Manual
Top
Back: PH_nais
Forward: boolean_std
FastBack:
FastForward:
Up: Singular Manual
Top: Singular Manual
Contents: Table of Contents
Index: Index
About: About this document

D.14.7 polybori_lib

Library:
polybori.lib
Purpose:
A Singular Library Interface for PolyBoRi
Authors:
Maximilian Kammermeier: Max0791@gmx.de
Susanne Scherer: sscherer90@yahoo.de

Overview:
A library for using PolyBoRi in the SINGULAR interface, with procedures that convert structures (polynomials, rings, ideals) in both directions. Therefore, it is possible to compute boolean groebner basis via boolean_std. Polynomials can be converted to zero-supressed decision diagrams (zdd) and vice versa.

For usability it defines the PolyBoRi types bideal, bpoly, and bring which are equivalent to Singular's ideal, poly, and ring, as well as bset which corresponds to the type zdd introduced here. In addition bvar(i) constructs the Boolean variable corresponding to var(i) from current ring;

For convenience, the corresponding types can be converted explicitly or implicitly while assigning. Also several SINGULAR operators were overloaded: bring comes with nvars, bpoly implements lead, leadmonom and leadcoef. Objects of this type may be added and multiplied, too. Finally, bideal yields std and size as well as addition and element access.

Hence, by using these types PolyBoRi functionality can be carried out seamlessly in SINGULAR:

> LIB "polybori.lib";
> ring r0=2,x(1..4),lp;
> def x=bvar; // enforce Boolean variables

> bpoly f1=x(1)+x(4);
> bpoly f2=x(1)+x(3)*x(1);
> bideal bI=list(f1,f2);

> std(bI);
_[1] = x(1) + x(4)
_[2] = x(3)*x(4) + x(4)

Note:
For using this library SINGULAR's python interface must be available on your system. Please ./configure --with-python when building SINGULAR for this purpose.

There are prebuilt binary packages for PolyBoRi available from http://polybori.sf.net/.

For building your own PolyBoRi please ensure that you have scons and a development version of the boost libraries installed on you system. Then you may execute the following commands in a bash-style shell to build PolyBoRi available to python:

PBDIR=/path/to/custom/polybori
wget http://downloads.sf.net/project/polybori/polybori/\
0.8.2/polybori-0.8.2.tar.gz
tar -xvzf polybori-0.8.2.tar.gz
cd polybori-0.8.2
scons install PREFIX=$PBDIR PYINSTALLPREFIX=$PBDIR/python
export PYTHONPATH=$PBDIR/python:$PYTHONPATH

References:
See http://polybori.sf.net for details about PolyBoRi.

Procedures:

D.14.7.1 boolean_std  Singular ideal of boolean groebner basis of I
D.14.7.2 boolean_poly_ring  convert ring
D.14.7.3 boolean_constant  convert constant
D.14.7.4 boolean_poly  convert polynomial
D.14.7.5 direct_boolean_poly  convert polynomial direct
D.14.7.6 recursive_boolean_poly  convert polynomial recursively
D.14.7.7 boolean_ideal  convert ideal
D.14.7.8 boolean_set  convert zdd
D.14.7.9 from_boolean_constant  convert boolean constant
D.14.7.10 from_boolean_poly  convert boolean polynomial
D.14.7.11 direct_from_boolean_poly  convert boolean polynomial direct
D.14.7.12 recursive_from_boolean_poly  convert boolean polynomial recursively
D.14.7.13 from_boolean_ideal  convert to ideal
D.14.7.14 from_boolean_set  convert to zdd
D.14.7.15 bvar  return i-th Boolean variable
D.14.7.16 poly2zdd  return zdd of a given polynomial
D.14.7.17 zdd2poly  return polynomial representation of a given zdd
D.14.7.18 disp_zdd  return string with a visualization of a given
See also: Libraries; User defined types; pyobject.