final Relation firstConst = Relation.unary("SYM_BREAK_CONST_"+first.name());
final Relation lastConst = Relation.unary("SYM_BREAK_CONST_"+last.name());
final Relation ordConst = Relation.unary("SYM_BREAK_CONST_"+ordered.name());
final Relation relConst = Relation.binary("SYM_BREAK_CONST_"+relation.name());
bounds.boundExactly(firstConst, f.setOf(f.tuple(1, domain.min())));
bounds.boundExactly(lastConst, f.setOf(f.tuple(1, domain.max())));
bounds.boundExactly(ordConst, bounds.upperBound(total.ordered()));
bounds.boundExactly(relConst, f.setOf(2, ordering));
return Formula.and(first.eq(firstConst), last.eq(lastConst), ordered.eq(ordConst), relation.eq(relConst));
// return first.eq(firstConst).and(last.eq(lastConst)).and( ordered.eq(ordConst)).and( relation.eq(relConst));