# Viper

> Programming Language and Verification Infrastructure

**Wikidata**: [Q115971895](https://www.wikidata.org/wiki/Q115971895)  
**Source**: https://4ort.xyz/entity/viper-q115971895

## Summary
Viper is a programming language and verification infrastructure designed for permission-based reasoning. It serves as a core framework for verifying software properties, utilizing a foundation built on separation logic and abstraction. The project was established in 2016 by computer scientists Peter Müller, Alexander J. Summers, and Malte Schwerhoff.

## Key Facts
- **Classification:** Viper is classified as both a programming language and a science project.
- **Primary Function:** It serves as a verification infrastructure for permission-based reasoning.
- **Founders:** The authors are Peter Müller, Alexander J. Summers, and Malte Schwerhoff.
- **Publication Date:** The infrastructure was published in 2016.
- **Theoretical Basis:** It is based on Separation Logic and Abstraction.
- **License:** The project is distributed under the Mozilla Public License, version 2.0.
- **Website:** The official project website is hosted at https://viper.ethz.ch.
- **Key Publication:** The title of the defining work is "Viper: A Verification Infrastructure for Permission-Based Reasoning."

## FAQs
### Q: What exactly is Viper?
A: Viper is a verification infrastructure and programming language used to formally prove properties about software. It is specifically designed to handle permission-based reasoning, allowing developers to manage access and ownership within code logic.

### Q: What mathematical concepts does Viper use?
A: Viper is based on Separation Logic and Abstraction. These concepts allow the tool to reason about how different parts of a program access memory and resources without interfering with each other.

### Q: Who created Viper and when was it released?
A: Viper was created by Peter Müller, Alexander J. Summers, and Malte Schwerhoff. The project was formally published in 2016.

### Q: Is Viper free to use?
A: Yes, Viper is available under the Mozilla Public License, version 2.0.

## Why It Matters
Viper represents a significant advancement in the field of formal software verification. In modern software development, ensuring that code is not only functional but also mathematically correct is critical for security and reliability. Viper addresses this need by providing a robust infrastructure for "permission-based reasoning," a method essential for verifying concurrent and heap-manipulating programs.

By grounding its logic in Separation Logic and Abstraction, Viper allows for the modular verification of complex systems, a task that is often computationally difficult or impossible with older verification tools. It acts as a foundational layer (infrastructure) upon which other verification tools can be built, facilitating a wide range of academic and practical applications in computer science.

The project’s availability under the Mozilla Public License 2.0 ensures that it is accessible to a wide audience, promoting the adoption of rigorous verification standards in open-source and commercial software development. Its continued maintenance and association with ETH Zurich underscore its relevance in modern computer science research.

## Notable For
- **Dual Nature:** Being distinct as both a fully specified programming language and a comprehensive verification infrastructure.
- **Permission Logic:** Pioneering the practical application of permission-based reasoning for resource management in code.
- **Theoretical Foundation:** Implementing Separation Logic and Abstraction as its core theoretical underpinnings.
- **Academic Pedigree:** Development by prominent computer scientists including Peter Müller, a noted German researcher in the field.
- **Open Source:** Providing a sophisticated verification toolset under the permissive Mozilla Public License 2.0.

## Body
### Project Definition and Scope
Viper is defined within academic and scientific circles as a "Verification Infrastructure for Permission-Based Reasoning." Unlike simple compilers or linters, Viper is an instance of a science project that functions as a programming language. Its primary goal is to facilitate the verification of programs—mathematically proving that software meets its specifications—using specific logical frameworks to handle memory and permissions.

### Authors and Origins
The project was authored by a team of researchers including Peter Müller, Alexander J. Summers, and Malte Schwerhoff.
*   **Peter Müller:** A German computer scientist (born 1972) credited as a primary contributor. His background in computer science and German citizenship are noted in project records.
*   **Publication:** The defining paper and project were published in 2016.

### Technical Architecture
Viper is distinct for its technical reliance on **Separation Logic and Abstraction**.
*   **Separation Logic:** This allows Viper to reason about programs that manipulate pointer structures (heaps) by treating memory locations as resources that must be strictly owned or "borrowed."
*   **Abstraction:** This allows the infrastructure to hide complex details of implementation while verifying high-level properties, making the verification process scalable.

### Licensing and Availability
The project is distinct for its commitment to open access while retaining legal protections.
*   **License:** The code is distributed under the Mozilla Public License, version 2.0.
*   **Copyright Status:** While copyrighted, the holder has dedicated the work to the public domain in certain contexts, and the project website is accessible in English.

### Resources
The project is hosted online at **https://viper.ethz.ch**. This portal serves as the central hub for documentation, downloads, and research related to the Viper verification infrastructure.

## References

1. [Source](https://pm.inf.ethz.ch/publications/MuellerSchwerhoffSummers16.pdf)