Interactive tool support for CSP parallel to B consistency checking
CSP parallel to B is an integration of two well known formal notations: CSP and B. It provides a method for modelling systems with both complex state (described in B machines) and control flow (described as CSP processes). Consistency checking within this approach verifies that a controller process never calls a B operation outside its precondition. Otherwise the behaviour of the operation cannot be predicted. In previous work, this check was carried out by manually decomposing the model before preprocessing the CSP processes to perform a hand-written weakest precondition proof. In this paper, a framework is described that mechanises consistency checking in a theorem prover and removes the need for preprocessing. This work is based on an existing PVS embedding of the CSP traces model, but it is extended by introducing a notion of state so that the interaction between processes and machines can be analysed. Numerous rules have been defined (and proved) which enable consistency checking and decomposition via PVS proof. These rules also formally justify the relaxation of previous constraints on CSP parallel to B architectures, thereby widening the scope of CSP parallel to B modelling. The PVS embedding and rules presented in this paper are not only applicable to CSP parallel to B specifications, but to other combined approaches which use a non-blocking semantics for the state-based operations.
csp b formal method integration tool supported verification rely/guarantee techniques