X-Git-Url: https://scm.cri.ensmp.fr/git/linpy.git/blobdiff_plain/f42e2bf07b9fb5b19b9ab243079fc69234ef4549..c3149dd6dbf0dd296c85676fcf9f997ead2470f0:/linpy/polyhedra.py diff --git a/linpy/polyhedra.py b/linpy/polyhedra.py index 8426d32..e5e2523 100644 --- a/linpy/polyhedra.py +++ b/linpy/polyhedra.py @@ -173,9 +173,12 @@ class Polyhedron(Domain): def widen(self, other): """ Compute the standard widening of two polyhedra, à la Halbwachs. + + In its current implementation, this method is slow and should not be + used on large polyhedra. """ if not isinstance(other, Polyhedron): - raise ValueError('argument must be a Polyhedron instance') + raise TypeError('argument must be a Polyhedron instance') inequalities1 = self._asinequalities() inequalities2 = other._asinequalities() inequalities = [] @@ -303,8 +306,6 @@ class EmptyType(Polyhedron): The empty polyhedron, whose set of constraints is not satisfiable. """ - __slots__ = Polyhedron.__slots__ - def __new__(cls): self = object().__new__(cls) self._equalities = (Rational(1),) @@ -333,8 +334,6 @@ class UniverseType(Polyhedron): i.e. is empty. """ - __slots__ = Polyhedron.__slots__ - def __new__(cls): self = object().__new__(cls) self._equalities = () @@ -400,15 +399,15 @@ def Ne(left, right): return ~Eq(left, right) @_polymorphic -def Gt(left, right): +def Ge(left, right): """ - Create the polyhedron with constraints expr1 > expr2 > expr3 ... + Create the polyhedron with constraints expr1 >= expr2 >= expr3 ... """ - return Polyhedron([], [left - right - 1]) + return Polyhedron([], [left - right]) @_polymorphic -def Ge(left, right): +def Gt(left, right): """ - Create the polyhedron with constraints expr1 >= expr2 >= expr3 ... + Create the polyhedron with constraints expr1 > expr2 > expr3 ... """ - return Polyhedron([], [left - right]) + return Polyhedron([], [left - right - 1])