def drop_dims(self, dims):
# use to remove certain variables use isl_set_drop_constraints_involving_dims instead?
from .polyhedra import Polyhedron
- n = 1
+ n = 0
dims = list(dims)
symbols = list(self.symbols)
islset = self._toislset(self.polyhedra, self.symbols)
if dim in symbols:
first = symbols.index(dim)
try:
- if symbols[first+1] is dims[dim_index+1]: #check if next value in symbols is same as next value in dims
- n += 1
- islbset = libisl.isl_set_project_out(islset, libisl.isl_dim_set, first, n)
- symbols.__delitem__(first)
+ for dim in dims:
+ if symbols[first+1] is dims[dim_index+1]: #check if next value in symbols is same as next value in dims
+ n += 1
+ islbset = libisl.isl_set_project_out(islset, libisl.isl_dim_set, first, n)
+ symbols.remove(dim)
except:
- islbset = libisl.isl_set_project_out(islset, libisl.isl_dim_set, first, n)
- symbols.__delitem__(first)
+ islbset = libisl.isl_set_project_out(islset, libisl.isl_dim_set, first, 1)
+ symbols.__delitem__(first)
else:
islbset = libisl.isl_set_project_out(islset, libisl.isl_dim_set, 0, 0)
return Polyhedron._fromislset(islbset, symbols)