What problem does it solve? Fuzz testing only samples random inputs, so it can miss the one value that breaks a smart contract invariant. Halmos executes Foundry tests symbolically, reasoning about all possible inputs simultaneously and producing concrete counter-examples when assertions fail. ## Core Features & Use Cases - Symbolic test execution: Write check_ prefixed Foundry tests whose parameters become symbolic variables covering every possible value within configurable loop and depth bounds. - Counter-example generation: When a property fails, Halmos outputs concrete hex-encoded witness values that can be reproduced as standard Foundry tests. - Bounded model checking with CI integration: Configure --loop, --depth, and solver timeouts to balance verification confidence against runtime in GitHub Actions pipelines. - Use Case: Verify that an ERC-20 transfer never changes totalSupply, or that a vault's totalAssets always covers totalShares, for all possible deposit and withdrawal amounts rather than a few hundred random samples. ## Quick Start Write a Foundry test function prefixed with check_ that uses vm.assume and assert, then ask the agent to run halmos against it and interpret any counter-examples.