Freedom251 › Formal Verification Tools
Viper

What Viper is
Viper is a free language and tool suite for building program verifiers and prototyping verification techniques. It targets sequential and concurrent programs with mutable state, using permissions or ownership reasoning. The language provides imperative constructs, specifications, mathematical types, user-defined predicates, and pure functions. Two backends are available: verification-condition generation and symbolic execution, both using the Z3 SMT solver. Front-end verifiers include Gobra for Go, Nagini for Python, and Prusti for Rust. Viper IDE is a Visual Studio Code extension requiring 64-bit Java 11 or newer and downloading about 100 MB of dependencies. Command-line tools are offered for 64-bit Windows, Linux, macOS, and ARM macOS. An interactive browser tutorial provides editable, runnable examples. Core projects are open source on GitHub, and support is directed to Zulip and Stack Overflow. Deployment is self-hosted.
Who it suits
Viper suits developers and researchers building verification tools, encoding verification problems, or checking Go, Python, Rust, and Viper-language programs. It fits users comfortable with self-hosted tooling and contract-based reasoning.
What it does well
- Free and self-hosted
- Supports sequential and concurrent mutable-state programs
- Two Z3-based verification backends
- Front ends for Go, Python, and Rust
- Editable browser tutorial
What to know first
- Viper IDE requires 64-bit Java 11 or newer
- IDE downloads approximately 100 MB of dependencies
- Self-hosted deployment requires local setup
Verdict
Viper provides a focused, open-source environment for permission-based program verification with several language entry points. Its self-hosted model and Java-based IDE requirements are important setup considerations.
Facts from Viper's own pages
- Browser learning
- The Viper tutorial provides runnable examples that readers can edit and try in the browser. · viper.ethz.ch, 8 Oct 2026
- Browser tutorial
- The interactive tutorial includes runnable examples that users can edit and verify in the browser. · viper.ethz.ch, 8 Oct 2026
- Command line platforms
- The maker offers command-line tool downloads for 64-bit Windows, Linux, macOS, and ARM macOS. · pm.inf.ethz.ch, 8 Oct 2026
- Front ends
- The project lists Gobra for Go, Nagini for Python, and Prusti for Rust as verifiers built on Viper. · pm.inf.ethz.ch, 8 Oct 2026
- Headquarters
- Zürich, Switzerland · pm.inf.ethz.ch, 28 Sept 2026
- IDE
- Viper IDE is a Visual Studio Code extension, and the maker recommends using it with the latest VS Code version. · pm.inf.ethz.ch, 8 Oct 2026
- IDE requirement
- Viper IDE requires 64-bit Java 11 or newer and downloads approximately 100 MB of dependencies. · pm.inf.ethz.ch, 8 Oct 2026
- Intended users
- Viper is used to develop verification tools and prototypes, and the maker also describes manual encoding of verification problems as a use case. · pm.inf.ethz.ch, 8 Oct 2026
- Language features
- The Viper language includes imperative constructs, specifications, permission reasoning, mathematical types, user-defined predicates, and pure functions. · pm.inf.ethz.ch, 8 Oct 2026
- Permission reasoning
- Viper natively supports permission or ownership reasoning, including approaches such as separation logic. · pm.inf.ethz.ch, 8 Oct 2026
- Program reasoning
- Viper is designed to verify sequential and concurrent programs with mutable state using permissions or ownership. · pm.inf.ethz.ch, 8 Oct 2026
- Purpose
- Viper is a language and suite of tools for building program verifiers and prototyping verification techniques. · pm.inf.ethz.ch, 8 Oct 2026
- Security and compliance
- The opened project and download pages do not state a security certification or compliance standard. · pm.inf.ethz.ch, 8 Oct 2026
- SMT solver
- Both backends use the Z3 SMT solver to discharge proof obligations. · viper.ethz.ch, 8 Oct 2026
- Source code
- The maker says the source code for Viper's core projects is open source and available on GitHub. · pm.inf.ethz.ch, 8 Oct 2026
- Support
- The maker directs users to the Viper Zulip channel and Stack Overflow for support. · pm.inf.ethz.ch, 8 Oct 2026
- System requirement
- Viper IDE requires 64-bit Java 11 or newer and recommends the latest available VS Code version. · pm.inf.ethz.ch, 8 Oct 2026
- Verification backends
- Viper provides a verification-condition-generation backend and a symbolic-execution backend, both of which use the Z3 SMT solver. · viper.ethz.ch, 8 Oct 2026
Where Viper stands on Freedom251
- Formal Verification Tools#34 of 34