Implement inner xor.

This commit is contained in:
chriseth 2022-06-01 22:16:16 +02:00
parent 68bfbdb2a6
commit 5c1ecce2a3

View File

@ -844,6 +844,11 @@ void BooleanLPSolver::addBooleanEquality(Literal const& _left, smtutil::Expressi
state().clauses.emplace_back(Clause{vector<Literal>{_left, negate(a), negate(b)}}); state().clauses.emplace_back(Clause{vector<Literal>{_left, negate(a), negate(b)}});
state().clauses.emplace_back(Clause{vector<Literal>{_left, a, b}}); state().clauses.emplace_back(Clause{vector<Literal>{_left, a, b}});
} }
else if (_right.name == "xor")
{
solAssert(_right.arguments.size() == 2);
addBooleanEquality(negate(_left), _right.arguments.at(0) == _right.arguments.at(1), move(_letBindings));
}
else else
solAssert(false, "Unsupported operation: " + _right.name); solAssert(false, "Unsupported operation: " + _right.name);
} }