2020-08-18 17:25:36 +00:00
|
|
|
pragma experimental SMTChecker;
|
|
|
|
|
|
|
|
contract C {
|
|
|
|
function f(uint a) internal pure returns (uint b) {
|
|
|
|
require(a < 1000);
|
|
|
|
return a * a;
|
|
|
|
}
|
|
|
|
function g(uint a) internal pure returns (uint b) {
|
|
|
|
require(a < 1000);
|
|
|
|
return a + 100;
|
|
|
|
}
|
|
|
|
function h(uint a) public pure {
|
|
|
|
uint c = a < 5 ? g(a) : f(a);
|
|
|
|
assert(c >= 25);
|
2020-12-02 17:40:48 +00:00
|
|
|
assert(c < 20); // should fail
|
2020-08-18 17:25:36 +00:00
|
|
|
}
|
|
|
|
}
|
2020-12-02 17:40:48 +00:00
|
|
|
// ====
|
|
|
|
// SMTIgnoreCex: yes
|
2020-08-18 17:25:36 +00:00
|
|
|
// ----
|
2020-09-25 17:09:06 +00:00
|
|
|
// Warning 6328: (378-392): CHC: Assertion violation happens here.
|