# HG changeset patch
# User Martin Albrecht
# Date 1358436348 0
# Node ID 5a2675f83e8e09a76f6da6165b686206cc7f7d1e
# Parent 42e8da06e2408995777f84375ce368c02b955614
#13962 PolyBoRi docs improvement
diff git a/sage/rings/polynomial/pbori.pyx b/sage/rings/polynomial/pbori.pyx
 a/sage/rings/polynomial/pbori.pyx
+++ b/sage/rings/polynomial/pbori.pyx
@@ 12,48 +12,27 @@
areas. This implementation is a thin wrapper around the PolyBoRi
library by Michael Brickenstein and Alexander Dreyer.
"Boolean polynomials can be modelled in a rather simple way, with
both coefficients and degree per variable lying in
``{0, 1}``. The ring of Boolean polynomials is, however,
not a polynomial ring, but rather the quotient ring of the
polynomial ring over the field with two elements modulo the field
equations `x^2=x` for each variable `x`. Therefore,
the usual polynomial data structures seem not to be appropriate for
fast Groebner basis computations. We introduce a specialised data
structure for Boolean polynomials based on zerosuppressed binary
decision diagrams (ZDDs), which is capable of handling these
polynomials more efficiently with respect to memory consumption and
also computational speed. Furthermore, we concentrate on highlevel
algorithmic aspects, taking into account the new data structures as
well as structural properties of Boolean polynomials."  [BD07]_
+ Boolean polynomials can be modelled in a rather simple way, with
+ both coefficients and degree per variable lying in ``{0, 1}``. The
+ ring of Boolean polynomials is, however, not a polynomial ring, but
+ rather the quotient ring of the polynomial ring over the field with
+ two elements modulo the field equations `x^2=x` for each variable
+ `x`. Therefore, the usual polynomial data structures seem not to be
+ appropriate for fast Groebner basis computations. We introduce a
+ specialised data structure for Boolean polynomials based on
+ zerosuppressed binary decision diagrams (ZDDs), which is capable of
+ handling these polynomials more efficiently with respect to memory
+ consumption and also computational speed. Furthermore, we
+ concentrate on highlevel algorithmic aspects, taking into account
+ the new data structures as well as structural properties of Boolean
+ polynomials.  [BD07]_
For details on the internal representation of polynomials see
http://polybori.sourceforge.net/zdd.html
AUTHORS:

 Michael Brickenstein: PolyBoRi author

 Alexander Dreyer: PolyBoRi author

 Burcin Erocal : main Sage wrapper author

 Martin Albrecht : some
 contributions to the Sage wrapper

 Simon King :
 Adopt the new coercion model. Fix conversion from univariate
 polynomial rings. Pickling of :class:`BooleanMonomialMonoid`
 (via :class:`~sage.structure.unique_representation.UniqueRepresentation`)
 and :class:`BooleanMonomial`.

 Charles Bouillaguet : minor changes
 to improve compatibility with MPolynomial and make the variety()
 function work on ideals of BooleanPolynomial's.


EXAMPLES:
+Example
+
Consider the ideal
@@ 174,12 +153,48 @@
represented as tuples of tuples (Sage) or as ``BooleSet`` (PolyBoRi)
and naturally the second option is faster.
+Taking full advantage of PolyBoRi
+
+
+PolyBoRi's data structures imply that the user should familiarise
+herself to achieve optimal performance. The PolyBoRi tutorial on this
+matter can be found at:
+
+ http://polybori.sourceforge.net/doc/tutorial/tutorialse2.html#x3140002.1
+
+Authors and references
+
+
+AUTHORS:
+
+ Michael Brickenstein: PolyBoRi author
+
+ Alexander Dreyer: PolyBoRi author
+
+ Burcin Erocal : main Sage wrapper author
+
+ Martin Albrecht: some contributions to the Sage wrapper
+
+ Simon King :
+ Adopt the new coercion model. Fix conversion from univariate
+ polynomial rings. Pickling of :class:`BooleanMonomialMonoid`
+ (via :class:`~sage.structure.unique_representation.UniqueRepresentation`)
+ and :class:`BooleanMonomial`.
+
+ Charles Bouillaguet : minor changes
+ to improve compatibility with MPolynomial and make the variety()
+ function work on ideals of BooleanPolynomial's.
+
+
REFERENCES:
.. [BD07] Michael Brickenstein, Alexander Dreyer\; *PolyBoRi: A
Groebner basis framework for Boolean polynomials*; preprint
available at
http://www.itwm.fraunhofer.de/zentral/download/berichte/bericht122.pdf
+
+Classes
+
"""
include "../../ext/interrupt.pxi"
@@ 307,27 +322,26 @@
True
sage: TestSuite(P).run()
 Boolean polynomial rings are unique parent structures. We
 thus have::
+ Boolean polynomial rings are unique parent structures. We thus
+ have::
sage: P. = BooleanPolynomialRing(2)
sage: R. = BooleanPolynomialRing(2)
sage: P is R
True
 ::

sage: Q. = BooleanPolynomialRing(2)
sage: P == Q
False
 ::

sage: S. = BooleanPolynomialRing(2, order='deglex')
sage: P == S
False

+ .. note::
+
+ See documentation for :mod:`sage.rings.polynomial.pbring`
+ for a highlevel description of PolyBoRi in Sage.
"""
def __init__(self, n=None, names=None, order='lex'):
"""