Tools for system validation with B abstract machines Michael Butler 1 and Michael Leuschel 1, 2 and Colin Snook 1 1 School of Electronics and Computer Science University of Southampton Highfield, Southampton, SO17 1BJ, UK {mjb,mal,cfs}@ecs.soton.ac.uk 2 Institut f¨ ur Informatik, Heinrich-Heine Universit¨at D¨ usseldorf Universit¨atsstr. 1, D-40225 D¨ usseldorf leuschel@cs.uni-duesseldorf.de February 2005 Abstract. In this paper we give an overview of some tools that we have developed to support the application of the B Method. ProB is an an- imation and model checking tool for the B method. ProB’s animation facilities allow users to gain confidence in their specifications. ProB con- tains a temporal and a state-based model checker, both of which can be used to detect various errors in B specifications. We also overview a re- cent extension of ProB that supports checking of specifications written in a combination of CSP and B. Finally we describe the UML-B profile and associated U2B tool that allows UML and B to be combined and is intended to make modelling with B more appealing to software engineers. 1 Introduction The B-method, originally devised by J.-R. Abrial [1], is a theory and method- ology for formal development of computer systems. It is used by industries in a range of critical domains, most notably railway control. B is based on the notion of abstract machine and the notion of refinement. The variables of an abstract machine are typed using set theoretic constructs such as sets, relations and functions. Typically these are constructed from basic types such as integers and given types from the problem domain (e.g., Name, User, Session, etc). The invariant of a machine is specified using predicate logic. Operations of a machine are specified as generalised substitutions, which allow deterministic and nonde- terministic state transitions to be specified. There are two main proof activities This research was carried out as part of EU research projects: IST-1999-11435 MA- TISSE (Methodologies and Technologies for Industrial Strength Systems Engineer- ing), IST-2000-30103 PUSSEE (Paradigm Unifying System Specification Environ- ments for proven Electronic design) IST 511599 RODIN (Rigorous Open Develop- ment Environment for Complex Systems), and the UK EPSRC funded ABCD (Au- tomated Validation of Business Critical Systems with Component Based Designs).