solidity/test/libsolidity/smtCheckerTests/functions/getters/array_2.sol
Martin Blicha ecded11833 Tests: Disable checking CEX
In this case I observed brittle behaviour with Z3, which behaved
differently on two equivalent queries with only variables renamed.
The reason for different versions was that in isoltest, we add version
pragma to the source code and this changes the ids of AST nodes. These
are in turn used to generate uniques names for SMT variables.
2023-09-05 12:39:19 +02:00

24 lines
664 B
Solidity

contract C {
uint[][] public a;
constructor() {
a.push();
a.push();
a.push();
a[2].push();
a[2].push();
a[2].push();
a[2].push();
}
function f() public view {
uint y = this.a(2,3);
assert(y == a[2][3]); // should hold
assert(y == 1); // should fail
}
}
// ====
// SMTEngine: all
// SMTIgnoreCex: yes
// ----
// Warning 6328: (242-256): CHC: Assertion violation happens here.\nCounterexample:\na = [[], [], [0, 0, 0, 0]]\ny = 0\n\nTransaction trace:\nC.constructor()\nState: a = [[], [], [0, 0, 0, 0]]\nC.f()
// Info 1391: CHC: 7 verification condition(s) proved safe! Enable the model checker option "show proved safe" to see all of them.