PVS vs Z3
PVS
pvs.csl.sri.comZ3
github.comSide by side
| Figure | PVS | Z3 |
|---|---|---|
| Price from | Free | Free |
| Free plan | Yes | Yes |
| Free trial | — | — |
| Open source | — | — |
| Web | — | Yes |
| Windows | Yes | Yes |
| macOS | Yes | Yes |
| Linux | Yes | Yes |
| Android | — | Yes |
| API | — | Yes |
| Self-hosted | — | Yes |
| Plans published | 2 | 1 |
| Spec score · Formal Verification Tools | 8.3 (#4) | 7.4 (#26) |
| Platforms | Current listed releases target 64-bit Linux and macOS; the site says Windows can run PVS 7.1 or later through Vagrant and VirtualBox. | The project wiki lists Windows, OSX, Linux (Ubuntu and Debian), and FreeBSD as supported platforms. |
| Purpose | PVS is a verification system combining a specification language, support tools, and a theorem prover. | Z3 is a theorem prover and satisfiability modulo theories (SMT) solver. |
| Support | Support is offered through developer and bug-report email addresses, GitHub issues, Google Groups, and moderated mailing lists. | The project wiki says to contact the creator of an external binding package for support issues. |
Plans
In their own words
PVS
PVS is a mechanized environment for formal specification and verification, intended for work such as mathematical formalization and hardware or algorithm verification. Its language is based on typed higher-order logic and supports predicate subtypes, dependent types, and parameterized theories. The system combines predefined theories, a type checker, interactive theorem prover, symbolic model checker, utilities, libraries, documentation, and examples. Proof support includes induction, rewriting, simplification with decision procedures, abstraction, and symbolic model checking; command-line tools can re-prove theories and libraries in batch mode. PVS also integrates the Yices SMT solver, supports random testing during proofs, and includes PVSio for evaluation and animation. GNU or X Emacs provides the integrated interface, with Tcl/Tk displays for proof trees and theory hierarchies. It runs on Linux, macOS, and Windows and is self-hosted. Noncommercial use is listed at free. Sources are under GPL, but the Allegro runtime has a separate click-through license, and commercial users need a current PVS license or must contact SRI about licensing.
Z3
Z3 is a theorem prover and satisfiability modulo theories (SMT) solver used in software verification and analysis. SMT-LIB2 is its default input format, and it supports the SMT-LIB format. The project documents bindings or APIs for C, C++, .NET, Java, Go, OCaml, Python, Julia, and JavaScript/TypeScript. Z3 can be built with CMake, vcpkg, or Bazel, and the repository links to pre-built binaries for stable and nightly releases. A project wiki also links to a page for trying Z3 in a browser. It supports proof artifacts and counterexamples, and listed input languages include SMT-LIB2, Rust, Smalltalk, and several of the languages with documented APIs. Z3 is MIT licensed, with downloads and source code available at no charge. Python is required to build it; additional toolchains are needed for Java, .NET, OCaml, and Julia APIs. The README says MSVC builds enable Control Flow Guard and Address Space Layout Randomization by default.