from fractions import Fraction, gcd
from . import isl, islhelper
-from .isl import libisl, Context
+from .isl import libisl, Context, BasicSet
__all__ = [
return wrapper
+_main_ctx = Context()
+
+
class Expression:
"""
This class implements linear expressions.
raise TypeError('non-integer constraint: '
'{} <= 0'.format(constraint))
self._inequalities.append(constraint)
- self._bset = self._to_isl()
- #print(self._bset)
- #put this here just to test from isl method
- #from_isl = self.from_isl(self._bset)
- #print(from_isl)
- #rint(self)
return self
@property
if symbols is None:
symbols = self.symbols()
num_coefficients = len(symbols)
- ctx = Context()
- space = libisl.isl_space_set_alloc(ctx, 0, num_coefficients)
+ space = libisl.isl_space_set_alloc(_main_ctx, 0, num_coefficients)
bset = libisl.isl_basic_set_universe(libisl.isl_space_copy(space))
ls = libisl.isl_local_space_from_space(space)
ceq = libisl.isl_equality_alloc(libisl.isl_local_space_copy(ls))
iden = symbols.index(ineq)
cin = libisl.isl_constraint_set_coefficient_si(cin, islhelper.isl_dim_set, iden, num) #use 3 for type isl_dim_set
bset = libisl.isl_basic_set_add_constraint(bset, cin)
- ip = libisl.isl_printer_to_str(ctx) #create string printer
- ip = libisl.isl_printer_print_basic_set(ip, bset) #print basic set to printer
- string = libisl.isl_printer_get_str(ip) #get string from printer
- string = str(string.decode())
- print(string)
+ bset = BasicSet(bset)
return bset
def from_isl(self, bset):
ex1 = Expression(coefficients={'a': 1, 'x': 2}, constant=2)
ex2 = Expression(coefficients={'a': 3 , 'b': 2}, constant=3)
p = Polyhedron(inequalities=[ex1, ex2])
- #p = eq(ex2, 0)# 2a+4 = 0, in fact 6a+3 = 0
- #p.to_isl()
-
-#universe = Polyhedron()
+ bs = p._to_isl()
+ print(bs)