X-Git-Url: https://scm.cri.ensmp.fr/git/linpy.git/blobdiff_plain/66eaddd271c4beff5451fab2030389cd634e1385..10808766a204fcc854ae30fe471ada80bab1f60f:/pypol/domains.py?ds=sidebyside 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