X-Git-Url: https://scm.cri.ensmp.fr/git/linpy.git/blobdiff_plain/c3d305942999eeb429c6941184b47e7f1b55c499..556abe7f3b2c7e3985560f3e3cfb6f66bacc4122:/pypol/domains.py diff --git a/pypol/domains.py b/pypol/domains.py index b4780fc..6060dc9 100644 --- a/pypol/domains.py +++ b/pypol/domains.py @@ -5,7 +5,7 @@ import re from . import islhelper from .islhelper import mainctx, libisl, isl_set_basic_sets -from .linexprs import Expression, Symbol +from .linexprs import Expression, Symbol, symbolnames __all__ = [ @@ -154,15 +154,7 @@ class Domain: def project_out(self, symbols): # use to remove certain variables - if isinstance(symbols, str): - symbols = symbols.replace(',', ' ').split() - else: - symbols = list(symbols) - for i, symbol in enumerate(symbols): - if isinstance(symbol, Symbol): - symbols[i] = symbol.name - elif not isinstance(symbol, str): - raise TypeError('symbols must be strings or Symbol instances') + symbols = symbolnames(symbols) islset = self._toislset(self.polyhedra, self.symbols) # the trick is to walk symbols in reverse order, to avoid index updates for index, symbol in reversed(list(enumerate(self.symbols))): @@ -346,6 +338,7 @@ class Domain: def tosympy(self): raise NotImplementedError + def And(*domains): if len(domains) == 0: from .polyhedra import Universe