Viper is an open-source verification infrastructure, designed to simplify the development of formal, separation-logic-based verifiers for different programming languages.
Viper is an open-source verification infrastructure, designed to simplify the development of formal, separation-logic-based verifiers for different programming languages. It comprises (1) a novel intermediate verification language, also named Viper, (2) automatic, SMT-based verifiers for this language, and (3) example front-end verifiers for languages such as Python, Rust, and Go.
The Viper verification language supports a rich set of expressive specification and verification constructs, as well as a simple object-based programming language. This enables and facilitates the development of verifiers for additional languages: by translating a source language and specifications into Viper, other front-ends can be implemented comparably quickly.
Viper has also been used for developing research verification prototypes, e.g. to verify correctness of C11 weak-memory programs, or fine-grained concurrency programs that use atomic instructions for synchronisation. Moreover, Viper has been used for teaching formal methods at several universities.