X-Git-Url: https://svn.cri.ensmp.fr/git/linpy.git/blobdiff_plain/dedaed504aab41867667bb154b9eabfb7af0e881..36939fa400ed913afd44b37b8bb9c1a7a932e442:/pypol/linear.py?ds=inline diff --git a/pypol/linear.py b/pypol/linear.py index 2e48a31..3cd7633 100644 --- a/pypol/linear.py +++ b/pypol/linear.py @@ -1,4 +1,3 @@ -import ctypes, ctypes.util import functools import numbers @@ -12,7 +11,7 @@ __all__ = [ 'Expression', 'Constant', 'Symbol', 'symbols', 'eq', 'le', 'lt', 'ge', 'gt', 'Polyhedron', - 'empty', 'universe' + 'Empty', 'Universe' ] @@ -528,7 +527,7 @@ class Polyhedron: other = other._toisl(symbols) difference = libisl.isl_set_subtract(bset, other) return difference - + def __sub__(self, other): return self.difference(other) @@ -542,10 +541,15 @@ class Polyhedron: 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) @@ -573,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 - 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()) @@ -586,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 - bset = libisl.isl_basic_set_add_constraint(bset, cin) + bset = libisl.isl_basic_set_add_constraint(bset, cin) bset = isl.BasicSet(bset) return bset @@ -602,8 +606,8 @@ class Polyhedron: 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)