# ProB

ProB is an animator, constraint solver and model checker for the B-Method. It allows fully automatic animation of B specifications, and can be used to systematically check a specification for a wide range of errors. The constraint-solving capabilities of ProB can also be used for model finding, deadlock checking and test-case generation. It allows fully automatic animation of B specifications, and can be used to systematically check a specification for a wide range of errors. The constraint-solving capabilities of ProB can also be used for model finding, deadlock checking and test-case generation.

## Publications

### Embedding SMT-LIB into B for Interactive Proof and Constraint Solving

The SMT-LIB language and the B language are both based on predicate logic and share the definition of several operators. However, B …

### Embedding High-Level Formal Specifications into Applications

The common formal methods workflow consists of formalising a model followed by applying model checking and proof techniques. Once an …

### Automated Backend Selection for ProB Using Deep Learning

Employing formal methods for software development usually involves using a multitude of tools such as model checkers and provers. Most …

### Repair and Generation of Formal Models Using Synthesis

Writing a formal model is a complicated and time-consuming task. Usually, one successively refines a model with the help of proof, …

### From Software Specifications to Constraint Programming

Non-deterministic specifications play a central role in the use of formal methods for software development. Such specifications can be …

### A Translation from Alloy to B

In this paper, we introduce a translation of the specification language Alloy to classical B. Our translation closely follows the Alloy …

### Using a Formal B Model at Runtime in a Demonstration of the ETCS Hybrid Level 3 Concept with Real Trains

In this article, we present a concrete realisation of the ETCS Hybrid Level 3 concept, whose practical viability was evaluated in a …

### plspec - A Specification Language for Prolog Data

In general, even though Prolog is a dynamically typed language, predicates may not be called with arbitrarily typed arguments. …

### Proof Assisted Bounded and Unbounded Symbolic Model Checking of Software and System Models

We have implemented various symbolic model checking algorithms, such as BMC, k-Induction and IC3 for B, Event-B and other modeling …

### Towards Infinite-State Symbolic Model Checking for B and Event-B

The idea of verifying the correctness of software has been brought up in the early days of computing, for example by Alan Turing in …

### Contraint Logic Programming over Infinite Domains with an Application to Proof

We present a CLP(FD)-based constraint solver able to deal with unbounded domains. It is based on constraint propagation, resorting to …

### The Burden of High-Level Languages: Complicated Symbolic Model Checking

Symbolic model checking algorithms like IC3 have proven to be an effective technique for hardware model checking. Extensions to …

### SMT Solvers for Validation of B and Event-B models

We present an integration of the constraint solving kernel of the ProB model checker with the SMT solver Z3. We apply the combined …

### Interactive Model Repair by Synthesis

When using B or Event-B for formal specifications, model checking is often used to detect errors such as invariant violations, …

### Proof Assisted Symbolic Model Checking for B and Event-B

We have implemented various symbolic model checking algorithms, like BMC, k-Induction and IC3 for B and Event-B. The high-level nature …

### Turning Failure into Proof: The ProB Disprover for B and Event-B

The ProB disprover uses constraint solving to find counter-examples for B proof obligations. As the ProB kernel is now capable of …

### Inferring Physical Units in Formal Models

Most state-based formal methods, like B, Event-B or Z, provide support for static typing. However, these methods and the associated …

### From Animation to Data Validation: The ProB Constraint Solver 10 Years On

Various solvers are linked via reification and Prolog co-routines. The overall challenge of ProB is to solve constraints in full …

### Turning Failure into Proof: The ProB Disprover

Initially, the ProB disprover used constraint solving to try and find counterexamples to proof obligations generated from Event-B …

### Who watches the watchers: Validating the ProB Validation Tool

Over the years, ProB has moved from a tool that complemented proving, to a development environment that is now sometimes used instead …

### Inferring Physical Units in B Models

Most state-based formal methods, like B, Event-B or Z, provide support for static typing. However, these methods and the associated …

### Turning Failure into Proof: Evaluating the ProB Disprover

The ProB disprover uses constraint solving to try and find counter examples to proof obligations. As the ProB kernel is now capable of …

### B constrained

In a previous work, we applied constraint solving techniques to problems like invariant preservation and deadlock freedom checking. The …

## Talks

### Three is a crowd: SAT, SMT and CLP on a chessboard

Declarative encodings of chess problems and how to solve them