Repair and Generation of Formal Models Using Synthesis
Writing a formal model is a complicated and time-consuming task.
Writing a formal model is a complicated and time-consuming task.
During a course on model checking we developed BMoth, a full-stack model checker for classical B, featuring both explicit-state and symbolic model checking.
Non-deterministic specifications play a central role in the use of formal methods for software development.
In this paper, we introduce a translation of the specification language Alloy to classical B.
In this article, we present a concrete realisation of the ETCS Hybrid Level 3 concept, whose practical viability was evaluated in a field demonstration in 2017.
Constraint solving technology for declarative formal models has made considerable progress in recent years, and has many applications such as animation of high-level specifications, test case generation, or symbolic model checking.
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.
The idea of verifying the correctness of software has been brought up in the early days of computing, for example by Alan Turing in 1949 or Robert W.
We present a CLP(FD)-based constraint solver able to deal with unbounded domains.
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.
Event-B provides a concise mathematical language for specifying invariants and guards.
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.
The ProB disprover uses constraint solving to find counter-examples for B proof obligations.
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.
Initially, the ProB disprover used constraint solving to try and find counterexamples to proof obligations generated from Event-B models.
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.