switch(op) {
case AND : ret = f.and(left, right); break;
case OR : ret = f.or(left, right); break;
case IMPLIES : ret = f.implies(left, right); break;
case IFF : ret = f.iff(left, right); break;
default :
throw new IllegalArgumentException("Unknown operator: " + op);
}
return cache(binFormula, ret);
}