namedisl is a Python wrapper around Sven Verdoolaege's isl, a library for manipulating sets and relations of integer points bounded by linear constraints.
It is based on islpy (and, transitively, on
isl), with the important distinction that names
matter. While isl (and hence islpy) has support for naming set dimensions, the names do
not matter: isl considers {[i]: 0<=i<10} and {[j]: 0<=j<10} the same set.
Relatedly, isl's (and hence islpy's) interface is based around dimension indices
rather than names. Meanwhile, namedisl's interface uses names to identify axes.
namedisl comes with comprehensive documentation.