Constant names Empty and Universe, pretty printing
authorVivien Maisonneuve <v.maisonneuve@gmail.com>
Thu, 19 Jun 2014 09:37:48 +0000 (11:37 +0200)
committerVivien Maisonneuve <v.maisonneuve@gmail.com>
Thu, 19 Jun 2014 15:42:10 +0000 (17:42 +0200)
pypol/__init__.py
pypol/linear.py

index a6ea752..7a195ca 100644 (file)
@@ -4,11 +4,11 @@ A polyhedral library based on ISL.
 
 from .linear import Constant, Symbol, symbols
 from .linear import eq, le, lt, ge, gt
 
 from .linear import Constant, Symbol, symbols
 from .linear import eq, le, lt, ge, gt
-from .linear import empty, universe
+from .linear import Empty, Universe
 
 
 __all__ = [
     'Constant', 'Symbol', 'symbols',
     'eq', 'le', 'lt', 'ge', 'gt',
 
 
 __all__ = [
     'Constant', 'Symbol', 'symbols',
     'eq', 'le', 'lt', 'ge', 'gt',
-    'empty', 'universe'
+    'Empty', 'Universe'
 ]
 ]
index 75ae166..3cd7633 100644 (file)
@@ -11,7 +11,7 @@ __all__ = [
     'Expression', 'Constant', 'Symbol', 'symbols',
     'eq', 'le', 'lt', 'ge', 'gt',
     'Polyhedron',
     'Expression', 'Constant', 'Symbol', 'symbols',
     'eq', 'le', 'lt', 'ge', 'gt',
     'Polyhedron',
-    'empty', 'universe'
+    'Empty', 'Universe'
 ]
 
 
 ]
 
 
@@ -527,7 +527,7 @@ class Polyhedron:
         other = other._toisl(symbols)
         difference = libisl.isl_set_subtract(bset, other)
         return difference
         other = other._toisl(symbols)
         difference = libisl.isl_set_subtract(bset, other)
         return difference
-    
+
 
     def __sub__(self, other):
         return self.difference(other)
 
     def __sub__(self, other):
         return self.difference(other)
@@ -541,10 +541,15 @@ class Polyhedron:
         return '{{{}}}'.format(', '.join(constraints))
 
     def __repr__(self):
         return '{{{}}}'.format(', '.join(constraints))
 
     def __repr__(self):
-        equalities = list(self.equalities)
-        inequalities = list(self.inequalities)
-        return '{}(equalities={!r}, inequalities={!r})' \
-                ''.format(self.__class__.__name__, equalities, inequalities)
+        if self.isempty():
+            return 'Empty'
+        elif self.isuniverse():
+            return 'Universe'
+        else:
+            equalities = list(self.equalities)
+            inequalities = list(self.inequalities)
+            return '{}(equalities={!r}, inequalities={!r})' \
+                    ''.format(self.__class__.__name__, equalities, inequalities)
 
     def _symbolunion(self, *others):
         symbols = set(self.symbols)
 
     def _symbolunion(self, *others):
         symbols = set(self.symbols)
@@ -572,7 +577,7 @@ class Polyhedron:
                 num = libisl.isl_val_read_from_str(_main_ctx, number)
                 iden = symbols.index(eq)
                 ceq = libisl.isl_constraint_set_coefficient_val(ceq, libisl.isl_dim_set, iden, num)  #use 3 for type isl_dim_set
                 num = libisl.isl_val_read_from_str(_main_ctx, number)
                 iden = symbols.index(eq)
                 ceq = libisl.isl_constraint_set_coefficient_val(ceq, libisl.isl_dim_set, iden, num)  #use 3 for type isl_dim_set
-            bset = libisl.isl_basic_set_add_constraint(bset, ceq)  
+            bset = libisl.isl_basic_set_add_constraint(bset, ceq)
         for ineq in self.inequalities:
             cin = libisl.isl_inequality_alloc(libisl.isl_local_space_copy(ls))
             coeff_in = dict(ineq.coefficients())
         for ineq in self.inequalities:
             cin = libisl.isl_inequality_alloc(libisl.isl_local_space_copy(ls))
             coeff_in = dict(ineq.coefficients())
@@ -585,7 +590,7 @@ class Polyhedron:
                 num = libisl.isl_val_read_from_str(_main_ctx, number)
                 iden = symbols.index(ineq)
                 cin = libisl.isl_constraint_set_coefficient_val(cin, libisl.isl_dim_set, iden, num)  #use 3 for type isl_dim_set
                 num = libisl.isl_val_read_from_str(_main_ctx, number)
                 iden = symbols.index(ineq)
                 cin = libisl.isl_constraint_set_coefficient_val(cin, libisl.isl_dim_set, iden, num)  #use 3 for type isl_dim_set
-            bset = libisl.isl_basic_set_add_constraint(bset, cin)   
+            bset = libisl.isl_basic_set_add_constraint(bset, cin)
         bset = isl.BasicSet(bset)
         return bset
 
         bset = isl.BasicSet(bset)
         return bset
 
@@ -601,8 +606,8 @@ class Polyhedron:
             our printer is giving form as:
             { [i0, i1] : 2i1 >= -2 - i0 } '''
 
             our printer is giving form as:
             { [i0, i1] : 2i1 >= -2 - i0 } '''
 
-empty = None #eq(0,1)
-universe = None #Polyhedron()
+Empty = eq(0,1)
+Universe = Polyhedron()
 
 if __name__ == '__main__':
     ex1 = Expression(coefficients={'a': 6, 'b': 6}, constant= 3) #this is the expression that does not work (even without adding values)
 
 if __name__ == '__main__':
     ex1 = Expression(coefficients={'a': 6, 'b': 6}, constant= 3) #this is the expression that does not work (even without adding values)