--early-exit doesn't work as expected
karmacoma-eth opened this issue · comments
karmacoma commented
Describe the bug
--early-exit
is supposed to print the first counterexample found and stop halmos, but we can actually still have multiple counterexamples reported
To Reproduce
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.15;
import "forge-std/Test.sol";
contract Test60 is Test {
function test_manyCexes(uint256 x) external {
uint256 i = 0;
if (x & 1 == 0) { ++i; }
if (x & 2 == 0) { ++i; }
if (x & 4 == 0) { ++i; }
if (x & 8 == 0) { ++i; }
assert(x < 64);
}
}
halmos --function test_manyCexes --early-exit
Running 1 tests for test/60_manyCexes.t.sol:Test60
Counterexample:
p_x_uint256 = 0x8000000000000000000000000000000000000000000000000000000000000000 (57896044618658097711785492504343953926634992332820282019728792003956564819968)
Counterexample:
p_x_uint256 = 0x8000000000000000000000000000000000000000000000000000000000000008 (57896044618658097711785492504343953926634992332820282019728792003956564819976)
Counterexample:
p_x_uint256 = 0x8000000000000000000000000000000000000000000000000000000000000004 (57896044618658097711785492504343953926634992332820282019728792003956564819972)
Counterexample:
p_x_uint256 = 0x800000000000000000000000000000000000000000000000000000000000000c (57896044618658097711785492504343953926634992332820282019728792003956564819980)
...