Clause Clause::operator-(const Clause &rhs) const { return(Clause(*this) -= rhs); }
bool Clause::assign(VarAssignment newAss, Clause& dest) const{ switch(n){ case 3: if(VAR(a)==VAR(newAss.val)){ if(a==newAss.val){ return true; } else { dest = Clause(b,c); return false; } } if(VAR(b)==VAR(newAss.val)){ if(b==newAss.val){ return true; } else { dest = Clause(a,c); return false; } } if(VAR(c)==VAR(newAss.val)){ if(c==newAss.val){ return true; } else { dest = Clause(a,b); return false; } } break; case 2: if(VAR(a)==VAR(newAss.val)){ if(a==newAss.val){ return true; } else { dest = Clause(b); return false; } } if(VAR(b)==VAR(newAss.val)){ if(b==newAss.val){ return true; } else { dest = Clause(a); return false; } } break; case 1: if(VAR(a)==VAR(newAss.val)){ if(a==newAss.val){ return true; } else { dest = Clause(); return false; } } break; } throw "Assigned irrelevant variable"; }