The specification language B and its successor Event-B are used for the formal development of software and systems following the correct-by-construction approach. Both are based on first order predicate logic with higher-order sets, relations, functions.
B has originally been developed as a successor to Z by Jean-Raymond Abrial in the 1990s, focusing on two key concepts: using refinement to gradually develop models and tool support for proof and model checking. There are three classes of industrial applications of B:
In our article, we will first give a primer on B and Event-B, introducing the main language features and how they are used. Afterwards, we will describe the history of B, starting with B's genesis as a tool for software validation [3, 4], discussing industrial applications of B in projects such as train speed control [5] and signalling [6] and other projects with RATP and SNCF performed by Alstom, Line 14 (Meteor) [7] or Canarsie [8].
Following, we will focus on the evolution of B into Event-B and from software to systems modelling, again focusing on industrial applications such as the flushing line NY [9], OCTYS [10], GIK/Railground [11], the HL3 standard [12] and cooperations with Peugeot. Additionally, we will discuss ventures of using B in other domains such as smart cards [13, 14].
The latest language evolution, B for data validation will be presented by discussing its use for Paris Line 1 [15] and the (subway) trains in Barcelona, Amsterdam, Calcutta, Cairo, Singapore and many more locations.
Language evolution aside, we want to discuss tool evolution in the B ecosystem. Both B and Event-B are supported by a range of tools, from provers to animators to model checkers. We want to give an overview over the B-method tools currently in use and their development and history, starting with early tools such as the B-Toolkit [16] to Atelier-B [3] and to Rodin [17] for Event-B. As not all tools are still available, we will also discuss the ones that disappeared or never really appeared.
In addition to industrial success stories, the academic reception of the Bmethod and its tools is notable as well and will be a distinct part of the article. Starting with the B User Workshop, to the ZB conference and further to the ABZ conference series, which brings together researchers working on different specification languages.
Switching from history and evolution to outlook, we want to discuss new language features such as extensions to Event-B and Rodin, and the extended classical B as understood by ProB. Furthermore, we intend to discuss new areas of application both for B as a language as well as for the B-method tools.