"""
Return True if two domains are equal.
"""
- symbols = self._xsymbols([self, other])
- islset1 = self._toislset(self.polyhedra, symbols)
- islset2 = other._toislset(other.polyhedra, symbols)
- equal = bool(libisl.isl_set_is_equal(islset1, islset2))
- libisl.isl_set_free(islset1)
- libisl.isl_set_free(islset2)
- return equal
+ if isinstance(other, Domain):
+ symbols = self._xsymbols([self, other])
+ islset1 = self._toislset(self.polyhedra, symbols)
+ islset2 = other._toislset(other.polyhedra, symbols)
+ equal = bool(libisl.isl_set_is_equal(islset1, islset2))
+ libisl.isl_set_free(islset1)
+ libisl.isl_set_free(islset2)
+ return equal
+ return NotImplemented
def isdisjoint(self, other):
"""
Return True if two domains have a null intersection.
"""
+ if not isinstance(other, Domain):
+ raise TypeError('other must be a Domain instance')
symbols = self._xsymbols([self, other])
islset1 = self._toislset(self.polyhedra, symbols)
islset2 = self._toislset(other.polyhedra, symbols)
"""
Report whether another domain contains the domain.
"""
- symbols = self._xsymbols([self, other])
- islset1 = self._toislset(self.polyhedra, symbols)
- islset2 = self._toislset(other.polyhedra, symbols)
- equal = bool(libisl.isl_set_is_subset(islset1, islset2))
- libisl.isl_set_free(islset1)
- libisl.isl_set_free(islset2)
- return equal
+ return self < other
def __le__(self, other):
- return self.issubset(other)
+ if isinstance(other, Domain):
+ symbols = self._xsymbols([self, other])
+ islset1 = self._toislset(self.polyhedra, symbols)
+ islset2 = self._toislset(other.polyhedra, symbols)
+ equal = bool(libisl.isl_set_is_subset(islset1, islset2))
+ libisl.isl_set_free(islset1)
+ libisl.isl_set_free(islset2)
+ return equal
+ return NotImplemented
__le__.__doc__ = issubset.__doc__
def __lt__(self, other):
"""
Report whether another domain is contained within the domain.
"""
- symbols = self._xsymbols([self, other])
- islset1 = self._toislset(self.polyhedra, symbols)
- islset2 = self._toislset(other.polyhedra, symbols)
- equal = bool(libisl.isl_set_is_strict_subset(islset1, islset2))
- libisl.isl_set_free(islset1)
- libisl.isl_set_free(islset2)
- return equal
+ if isinstance(other, Domain):
+ symbols = self._xsymbols([self, other])
+ islset1 = self._toislset(self.polyhedra, symbols)
+ islset2 = self._toislset(other.polyhedra, symbols)
+ equal = bool(libisl.isl_set_is_strict_subset(islset1, islset2))
+ libisl.isl_set_free(islset1)
+ libisl.isl_set_free(islset2)
+ return equal
+ return NotImplemented
def complement(self):
"""
Project out the sequence of symbols given in arguments, and return the
resulting domain.
"""
+ symbols = list(symbols)
+ for symbol in symbols:
+ if not isinstance(symbol, Symbol):
+ raise TypeError('symbols must be Symbol instances')
islset = self._toislset(self.polyhedra, self.symbols)
n = 0
for index, symbol in reversed(list(enumerate(self.symbols))):