X-Git-Url: https://scm.cri.ensmp.fr/git/linpy.git/blobdiff_plain/98edd00eb4b05e85f7cb1b85cff2f4d733909c57..2b13a146860ac116ce0388d8f7551044c09c55f7:/linpy/domains.py diff --git a/linpy/domains.py b/linpy/domains.py index 519059d..432e275 100644 --- a/linpy/domains.py +++ b/linpy/domains.py @@ -24,7 +24,7 @@ from fractions import Fraction from . import islhelper from .islhelper import mainctx, libisl -from .linexprs import LinExpr, Symbol, Rational +from .linexprs import LinExpr, Symbol from .geometry import GeometricObject, Point, Vector @@ -54,22 +54,23 @@ class Domain(GeometricObject): """ Return a domain from a sequence of polyhedra. - >>> square = Polyhedron('0 <= x <= 2, 0 <= y <= 2') - >>> square2 = Polyhedron('2 <= x <= 4, 2 <= y <= 4') - >>> dom = Domain([square, square2]) + >>> square1 = Polyhedron('0 <= x <= 2, 0 <= y <= 2') + >>> square2 = Polyhedron('1 <= x <= 3, 1 <= y <= 3') + >>> dom = Domain(square1, square2) + >>> dom + Or(And(x <= 2, 0 <= x, y <= 2, 0 <= y), + And(x <= 3, 1 <= x, y <= 3, 1 <= y)) It is also possible to build domains from polyhedra using arithmetic - operators Domain.__and__(), Domain.__or__() or functions And() and Or(), - using one of the following instructions: + operators Domain.__or__(), Domain.__invert__() or functions Or() and + Not(), using one of the following instructions: - >>> square = Polyhedron('0 <= x <= 2, 0 <= y <= 2') - >>> square2 = Polyhedron('2 <= x <= 4, 2 <= y <= 4') - >>> dom = square | square2 - >>> dom = Or(square, square2) + >>> dom = square1 | square2 + >>> dom = Or(square1, square2) Alternatively, a domain can be built from a string: - >>> dom = Domain('0 <= x <= 2, 0 <= y <= 2; 2 <= x <= 4, 2 <= y <= 4') + >>> dom = Domain('0 <= x <= 2, 0 <= y <= 2; 1 <= x <= 3, 1 <= y <= 3') Finally, a domain can be built from a GeometricObject instance, calling the GeometricObject.asdomain() method. @@ -728,12 +729,6 @@ class Domain(GeometricObject): strings = [repr(polyhedron) for polyhedron in self.polyhedra] return 'Or({})'.format(', '.join(strings)) - def _repr_latex_(self): - strings = [] - for polyhedron in self.polyhedra: - strings.append('({})'.format(polyhedron._repr_latex_().strip('$'))) - return '${}$'.format(' \\vee '.join(strings)) - @classmethod def fromsympy(cls, expr): """