Integrating Formal Specifications into Applications - The ProB Java API
The common formal methods workflow consists of formalising a model followed by applying model checking and proof techniques.
The common formal methods workflow consists of formalising a model followed by applying model checking and proof techniques.
The B-Method has an interesting history, where language and tools have evolved over the years.
In this article, we introduce a denotational translation of the specification language Alloy to classical B.
iFM 2019, Bergen, Norway
The SMT-LIB language and the B language are both based on predicate logic and share the definition of several operators.
Courses on formal methods are often based on examples and case studies, supposed to show students how to apply formal methods in practice.
The common formal methods workflow consists of formalising a model followed by applying model checking and proof techniques.
The B method for software and systems development together with the specification language B and its successor Event-B offer a rich history.
Writing a formal model is a complicated and time-consuming task.
In this paper, we introduce a translation of the specification language Alloy to classical B.
In general, even though Prolog is a dynamically typed language, predicates may not be called with arbitrarily typed arguments.
We have implemented various symbolic model checking algorithms, such as BMC, k-Induction and IC3 for B, Event-B and other modeling languages.
Symbolic model checking algorithms like IC3 have proven to be an effective technique for hardware model checking.
We present an integration of the constraint solving kernel of the ProB model checker with the SMT solver Z3.
When using B or Event-B for formal specifications, model checking is often used to detect errors such as invariant violations, deadlocks or refinement errors.
We have implemented various symbolic model checking algorithms, like BMC, k-Induction and IC3 for B and Event-B.
Most state-based formal methods, like B, Event-B or Z, provide support for static typing.
Various solvers are linked via reification and Prolog co-routines.
Over the years, ProB has moved from a tool that complemented proving, to a development environment that is now sometimes used instead of proving for applications, such as exhaustive model checking or data validation.
Most state-based formal methods, like B, Event-B or Z, provide support for static typing.