From 62fbaa7984d8035cccc97555f1de3188e280e475 Mon Sep 17 00:00:00 2001
From: Vivien Maisonneuve <v.maisonneuve@gmail.com>
Date: Tue, 19 Aug 2014 16:32:38 +0200
Subject: [PATCH 1/1] Cleaner implementation of Domain.__sub__()

---
 linpy/domains.py | 14 ++++++++------
 1 file changed, 8 insertions(+), 6 deletions(-)

diff --git a/linpy/domains.py b/linpy/domains.py
index 57c08ba..9fdc7d5 100644
--- a/linpy/domains.py
+++ b/linpy/domains.py
@@ -363,14 +363,16 @@ class Domain(GeometricObject):
         """
         Return the difference of two domains as a new domain.
         """
-        symbols = self._xsymbols([self, other])
-        islset1 = self._toislset(self.polyhedra, symbols)
-        islset2 = other._toislset(other.polyhedra, symbols)
-        islset = libisl.isl_set_subtract(islset1, islset2)
-        return self._fromislset(islset, symbols)
+        return self - other
 
     def __sub__(self, other):
-        return self.difference(other)
+        if isinstance(other, Domain):
+            symbols = self._xsymbols([self, other])
+            islset1 = self._toislset(self.polyhedra, symbols)
+            islset2 = other._toislset(other.polyhedra, symbols)
+            islset = libisl.isl_set_subtract(islset1, islset2)
+            return self._fromislset(islset, symbols)
+        return NotImplemented
     __sub__.__doc__ = difference.__doc__
 
     def lexmin(self):
-- 
2.20.1