IVecInt backbone = new VecInt();
int nvars = s.nVars();
for (int i = 1; i <= nvars; i++) {
backbone.push(i);
if (s.isSatisfiable(backbone)) {
backbone.pop().push(-i);
if (s.isSatisfiable(backbone)) {
backbone.pop();
} else {
// -i is in the backbone
backbone.pop().push(i);