SeaHorn
What it is
SeaHorn is a free, open-source framework for automated analysis of LLVM-based programs, developed primarily for research in automated verification. It is not a turnkey static analyzer; users assemble its frontend, middle-end, and backend components for particular analyses. The frontend prepares programs such as C as LLVM bitcode, and the middle end expresses verification conditions as Constrained Horn Clauses. Backend engines apply SMT-based model checking, including PDR/IC3 methods, while optional Crab analysis supplies numerical invariants. SeaHorn supports abstract interpretation, context-sensitive pointer analysis, bounded model checking, constrained-Horn-clause software model checking, and termination or non-termination analysis. For C assertions, the `sea pf` command can show invariants for safe results or save executable counterexamples for violations. The `sea inspect` command reports structure and can generate memory or call graphs. Docker is the recommended starting route, while builds require LLVM, Z3, and Boost.
For and against
For
- Open-source modified BSD license
- Supports C and LLVM IR
- Produces executable counterexamples
- Includes multiple verification methods
- Docker distribution available
Against
- Not an out-of-the-box analyzer
- Build dependencies and versions can change
- Docker image was updated about seven years ago
- Primarily research-oriented
The verdict
SeaHorn offers a broad, composable verification framework with model checking, invariants, and counterexamples. Its assembly-oriented design makes it better suited to technical analysis work than turnkey static-analysis use.
Who it suits
SeaHorn suits researchers and engineers analyzing C or LLVM IR with self-hosted verification workflows. It is intended for users comfortable assembling analysis components rather than expecting a ready-made analyzer.
On the record
- Additional analysis
- SeaHorn’s `sea inspect` command can report program structure and generate memory or call graph data.github.com · read 9 Oct 2026
- Analysis engines
- Its backend uses SMT-based model checking engines based on PDR/IC3, and uses CRAB to provide numerical invariants through abstract interpretation.seahorn.github.io · read 10 Oct 2026
- Analysis output
- The `sea pf` command can display computed invariants for a safe result or save a counterexample for a violation.github.com · read 9 Oct 2026
- Counterexamples
- SeaHorn can produce executable counterexamples when it finds a violation.github.com · read 9 Oct 2026
- C verification
- Its `sea pf` command takes a C program with assertions, translates it to LLVM bitcode, generates verification conditions, and solves them.github.com · read 9 Oct 2026
- Dependencies
- Building SeaHorn requires LLVM, Z3, and Boost; its README says the exact library versions change.github.com · read 9 Oct 2026
- Download
- The site links to a SeaHorn Docker image described as SeaHorn for LLVM 3.8; Docker Hub shows the nightly image command as `docker pull seahorn/seahorn:nightly`.hub.docker.com · read 10 Oct 2026
- Founders
- The site lists Arie Gurfinkel, Temesghen Kahsai, and Jorge Navas as founders.seahorn.github.io · read 10 Oct 2026
- Frontend
- Its frontend takes an LLVM-based program such as C and generates LLVM IR bitcode, preprocessing and optimizing it for verification.seahorn.github.io · read 10 Oct 2026
- Image status
- Docker Hub says the SeaHorn image was updated about 7 years ago and lists its size as 642.7 MB.hub.docker.com · read 10 Oct 2026
- Inconsistency checking
- SeaHorn detects inconsistent code fragments by computing path coverage for generated Horn clauses.seahorn.github.io · read 10 Oct 2026
- Integrations
- The site identifies CRAB as the abstract interpretation analyzer SeaHorn uses to provide numerical invariants.seahorn.github.io · read 10 Oct 2026
- License
- SeaHorn is distributed under a modified BSD license.github.com · read 9 Oct 2026
- Model checking
- SeaHorn supports SMT-based bounded model checking and constrained Horn clause based software model checking.github.com · read 9 Oct 2026
- Not a turnkey analyzer
- The project says SeaHorn is not an out-of-the-box static analysis tool.github.com · read 9 Oct 2026
- Optional analysis component
- Crab abstract interpretation is optional and can supply invariants to SeaHorn’s Spacer backend.github.com · read 9 Oct 2026
- Pricing
- The opened official site provides a Download section but no pricing information.seahorn.github.io · read 10 Oct 2026
- Purpose
- SeaHorn is a verification framework for LLVM-based programs.seahorn.github.io · read 10 Oct 2026