What problem does it solve? Fuzz testing only samples random inputs, so it can miss the one value that breaks a smart contract invariant, while full formal verification tools like Certora require learning a new specification language and paid API access. This Skill teaches how to use Halmos to symbolically execute Foundry tests, checking properties against all possible inputs within configurable bounds and producing concrete counter-examples when assertions fail. ## Core Features & Use Cases - Symbolic test authoring: Write check_ prefixed Foundry tests where parameters become symbolic variables, constrain inputs with vm.assume, and verify properties with raw assert(). - Bounded model checking: Configure --loop and --depth bounds, solver timeouts, and storage layouts to balance verification confidence against CI runtime. - Counter-example debugging: Decode Halmos counter-examples, reproduce them as concrete Foundry tests, fix the bug, and re-verify. - Use Case: A DeFi team needs to prove a vault invariant (totalAssets >= totalShares) holds for every deposit and withdrawal. They write check_ tests, run halmos --loop 5 in CI, and get mathematical assurance within bounds without learning Certora's CVL. ## Quick Start Ask the agent to write a Halmos symbolic test that verifies your ERC-20 transfer function preserves total supply for all possible inputs.