if (constraints.contains(bexpr.negate())) {
constraints.remove(bexpr.negate());
setUnSAT();
- }
+ }
if (constraints.contains(bexpr)) {
constraints.remove(bexpr);
}
replaceBooleanWithTrueNoRemove(bexpr);
}
-
+
void CSolver::replaceBooleanWithTrueNoRemove(BooleanEdge bexpr) {
updateMustValue(bexpr.getBoolean(), bexpr.isNegated() ? BV_MUSTBEFALSE : BV_MUSTBETRUE);
ASSERT(bexpr->boolVal != BV_UNSAT);
-
+
uint size = bexpr->parents.getSize();
for (uint i = 0; i < size; i++) {
Boolean *parent = bexpr->parents.get(i);
void CSolver::replaceBooleanWithBoolean(BooleanEdge oldb, BooleanEdge newb) {
//Canonicalize
if (oldb.isNegated()) {
- oldb=oldb.negate();
- newb=newb.negate();
+ oldb = oldb.negate();
+ newb = newb.negate();
}
if (constraints.contains(oldb)) {
for (uint i = 0; i < size; i++) {
Boolean *parent = oldb->parents.get(i);
BooleanLogic *logicop = (BooleanLogic *) parent;
- boolMap.remove(parent); //could change parent's hash
-
+ boolMap.remove(parent); //could change parent's hash
+
uint parentsize = logicop->inputs.getSize();
for (uint j = 0; j < parentsize; j++) {
BooleanEdge b = logicop->inputs.get(j);
}
void CSolver::handleANDTrue(BooleanLogic *bexpr, BooleanEdge child) {
- BooleanEdge childNegate=child.negate();
-
+ BooleanEdge childNegate = child.negate();
+
boolMap.remove(bexpr);
-
+
for (uint i = 0; i < bexpr->inputs.getSize(); i++) {
BooleanEdge b = bexpr->inputs.get(i);
-
+
if (b == child) {
bexpr->inputs.remove(i);
i--;
}
}
- uint size=bexpr->inputs.getSize();
+ uint size = bexpr->inputs.getSize();
if (size == 0) {
bexpr->replaced = true;
replaceBooleanWithTrue(bexpr);
}
BooleanEdge CSolver::doRewrite(BooleanEdge bexpr) {
- bool isNegated=bexpr.isNegated();
- BooleanLogic * b = (BooleanLogic *) bexpr.getBoolean();
+ bool isNegated = bexpr.isNegated();
+ BooleanLogic *b = (BooleanLogic *) bexpr.getBoolean();
BooleanEdge result;
if (b->op == SATC_IFF) {
if (isTrue(b->inputs.get(0))) {
} else if (isFalse(b->inputs.get(1))) {
result = b->inputs.get(0).negate();
} else ASSERT(0);
- } else if (b->op==SATC_AND) {
+ } else if (b->op == SATC_AND) {
uint size = b->inputs.getSize();
if (size == 0)
result = boolTrue;