Practical overview
When it fits
Use Yools when you have Yul source and want a focused symbolic check of revert reachability, while accounting for incomplete built-in support and bounded loop analysis.
Who it is for
- Developers working with Yul who want to examine whether a program can revert.
- Verification researchers exploring symbolic execution and SMT encodings for calldata, memory, or storage.
Documented uses
- Check Yul source for reachable revert states.
- Adjust loop-unrolling bounds and choose an SMT solver for the symbolic analysis.
Requirements & limits
The repository describes a command-line interface and identifies the project as GPL-3.0 licensed.
- Yools analyzes Yul source rather than EVM bytecode or Solidity source.
- The loop-unrolling limit is configurable and defaults to 10.
- The README lists cvc5 as the default SMT solver.
- Not all EVM built-in functions are supported, and bounded loop analysis has stated soundness limitations.
Check current requirements in the official documentation. Source-based guidance does not mean OpenViST has run or independently tested this project.
Check a Yul file for revert reachability
Run Yools' documented symbolic analysis on a Yul source file.
Before you start
- A Yul source file.
- The Yools command-line tool and an SMT solver; the README lists cvc5 as the default.
Steps
Pass the Yul file to the symbolic subcommand with the --input option.
Optionally set the loop-unrolling limit with --loop-unroll.
Optionally select an SMT solver with --solver.
Expected outcome
Yools queries an SMT solver about revert reachability and reports its analysis result.
Guide limitations
- Yools is described as experimental, and not all EVM built-in functions are supported.
- Bounded loop unrolling can make results unsound for behavior beyond the configured bound.
Sources & review
Source record details
- Source availability
- Active
- Sources checked
- 15 October 2026
- Original website title
- leonardoalt/yools · Official homepage title · retained in its source language

