The B method is a method of software development based on B, a tool-supported formal method based on an abstract machine notation, used in the development of computer software. Overview B was originally developed in the 1980s by Jean-Raymond Abrial in France and the UK. B is related to the Z notation (also originated by Abrial) and supports development of programming language code from specifications. B has been used in major safety-critical system applications in Europe (such as the automatic Paris Métro lines 14 and 1 and the Ariane 5 rocket). It has robust, commercially available tool support for specification, design, proof and code generation. Compared to Z, B is slightly more low-level and more focused on refinement to code rather than just formal specification — hence it is easier to correctly implement a specification written in B than one in Z. In particular, there is good tool support for this. The same language is used in specification, design and programming. Mechanisms include encapsulation and data locality. Event-B Subsequently, another formal method called Event-B has been developed based on the B-Method, support by the Rodin Platform. Event-B is a formal method aimed at system-level modelling and analysis. Features of Event-B are the use of set theory for modelling, the use of refinement to represent systems at different levels of abstraction, and the use of mathematical proof for verifying consistency between these refinement levels. The main components The B notation depends on set theory and first order logic in order to specify different versions of software that covers the complete cycle of project development. Abstract machine In the first and the most abstract version, which is called Abstract Machine, the designer should specify the goal of the design. Refinement Then, during a refinement step, they may pad the specification in order to clarify the goal or to turn the abstract machine more concrete by adding details about data structures and algorithms that define, how the goal is achieved. The new version, which is called Refinement, should be proven to be coherent and including all the properties of the abstract machine. The designer may make use of B libraries in order to model data structures or to include or import existing components. Implementation The refinement continues until a deterministic version is achieved: the Implementation. During all of the development steps the same notation is used and the last version may be translated