mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
mark rational encoding problems
This commit is contained in:
parent
074969b5d9
commit
7b0e02b1ff
@ -307,7 +307,10 @@ void BooleanLPSolver::addAssertion(Expression const& _expr, map<string, size_t>
|
||||
else if (_expr.name == ">=")
|
||||
addAssertion(_expr.arguments.at(1) <= _expr.arguments.at(0), move(_letBindings));
|
||||
else if (_expr.name == "<")
|
||||
{
|
||||
cerr << "ERROR cannot properly encode '<'" << endl;
|
||||
addAssertion(_expr.arguments.at(0) <= _expr.arguments.at(1) - 1, move(_letBindings));
|
||||
}
|
||||
else if (_expr.name == ">")
|
||||
addAssertion(_expr.arguments.at(1) < _expr.arguments.at(0), move(_letBindings));
|
||||
else
|
||||
@ -384,14 +387,11 @@ optional<Literal> BooleanLPSolver::parseLiteral(smtutil::Expression const& _expr
|
||||
{
|
||||
cerr << "ERROR cannot properly encode '<'" << endl;
|
||||
// TODO this is not the theory of reals!
|
||||
|
||||
return parseLiteral(_expr.arguments.at(0) <= _expr.arguments.at(1) - 1, move(_letBindings));
|
||||
}
|
||||
else if (_expr.name == ">")
|
||||
{
|
||||
cerr << "ERROR cannot properly encode '>'" << endl;
|
||||
// TODO this is not the theory of reals!
|
||||
return parseLiteral(_expr.arguments.at(1) < _expr.arguments.at(0), move(_letBindings));
|
||||
}
|
||||
|
||||
return {};
|
||||
}
|
||||
@ -405,6 +405,8 @@ Literal BooleanLPSolver::negate(Literal const& _lit)
|
||||
{
|
||||
// X = b
|
||||
|
||||
cerr << "ERROR cannot properly encode '<'" << endl;
|
||||
|
||||
// X <= b - 1
|
||||
Constraint le = c;
|
||||
le.equality = false;
|
||||
@ -429,7 +431,7 @@ Literal BooleanLPSolver::negate(Literal const& _lit)
|
||||
}
|
||||
else
|
||||
{
|
||||
// TODO We can only do this if we know it is an integer!
|
||||
cerr << "ERROR cannot properly encode '<'" << endl;
|
||||
// X > b
|
||||
// -x < -b
|
||||
// -x <= -b - 1
|
||||
|
Loading…
Reference in New Issue
Block a user