Failure divergence refinement for Event-B
Sebastian Stock, Michael Leuschel, Atif Mashkoor
TL;DR
This work addresses the challenge of validating liveness properties in Event-B across refinement by introducing failure divergence refinement as a semantic extension of refinement. It demonstrates that, under natural conditions, abstract traces can be preserved by refinement through $A ⊑_{fd} C$, enabling early validation of liveness without redoing work at each refinement step. A fully automatic ProB-based tool implements the algorithm, computes counterexamples when refinement fails, and supports data refinements by preventing loss of abstract behavior. The evaluation on multiple case studies (including interlocking, a Hemodialysis machine, and vending models) shows practical benefits, including debugging insights and improved refinement strategies, with implications for reducing modeling workload and enabling push-button verification of liveness properties. The work also outlines future integrations with ProB2-UI and extensions to temporal logic, broadening the scope of liveness preservation in Event-B refinements.
Abstract
When validating formal models, sizable effort goes into ensuring two types of properties: safety properties (nothing bad happens) and liveness properties (something good occurs eventually. Event-B supports checking safety properties all through the refinement chain. The same is not valid for liveness properties. Liveness properties are commonly validated with additional techniques like animation, and results do not transfer quickly, leading to re-doing the validation process at every refinement stage. This paper promotes early validation by providing failure divergence refinement semantics for Event-B. We show that failure divergence refinement preserves trace properties, which comprise many liveness properties, under certain natural conditions. Consequently, re-validation of those properties becomes unnecessary. Our result benefits data refinements, where no abstract behavior should be removed during refinement. Furthermore, we lay out an algorithm and provide a tool for automatic failure divergence refinement checking, significantly decreasing the modeler's workload. The tool is compared and evaluated in the context of sizable case studies.
