final Relation first = total.first(), last = total.last(), ordered = total.ordered(), relation = total.relation();
final IntSet domain = bounds.upperBound(ordered).indexView();
if (symmetricColumnPartitions(ordered)!=null &&
bounds.upperBound(first).indexView().contains(domain.min()) &&
bounds.upperBound(last).indexView().contains(domain.max())) {
// construct the natural ordering that corresponds to the ordering of the atoms in the universe
final IntSet ordering = Ints.bestSet(usize*usize);
int prev = domain.min();
for(IntIterator atoms = domain.iterator(prev+1, usize); atoms.hasNext(); ) {