-void CSolver::handleIMPLIESTrue(BooleanLogic *bexpr, Boolean *child) {
- uint size = bexpr->inputs.getSize();
- Boolean *b = bexpr->inputs.get(0);
- if (b == child) {
- //Replace with other term
- replaceBooleanWithBoolean(bexpr, bexpr->inputs.get(1));
- } else {
- //Statement is true...
- replaceBooleanWithTrue(bexpr);
- }
-}
-
-void CSolver::handleIMPLIESFalse(BooleanLogic *bexpr, Boolean *child) {
- uint size = bexpr->inputs.getSize();
- Boolean *b = bexpr->inputs.get(0);
- if (b == child) {
- //Statement is true...
- replaceBooleanWithTrue(bexpr);
- } else {
- //Make into negation of first term
- bexpr->inputs.get(1);
- bexpr->op = L_NOT;
- }
-}
-
-void CSolver::handleANDTrue(BooleanLogic *bexpr, Boolean *child) {
- uint size = bexpr->inputs.getSize();
-
- if (size == 1) {
- replaceBooleanWithTrue(bexpr);
- return;
- }
-
- for (uint i = 0; i < size; i++) {
- Boolean *b = bexpr->inputs.get(i);
+void CSolver::handleANDTrue(BooleanLogic *bexpr, BooleanEdge child) {
+ BooleanEdge childNegate=child.negate();
+
+ boolMap.remove(bexpr);
+
+ for (uint i = 0; i < bexpr->inputs.getSize(); i++) {
+ BooleanEdge b = bexpr->inputs.get(i);
+