This module focuses on formally specifying systems by means of Event-B. In this formalism, complex systems are specified as abstract machines which are characterised mainly by pre-conditions and post-conditions. From initially highly abstract machines, for which only very few features are stipulated, the module proceeds to more concrete machines which are richer in the details of their features. Such a “refinement”, which eventually approaches a form that is almost implementable", is acceptable if it is logically consistent with the abstract machine with which the entire formal modelling process had started. Already available proof tools (for example: Rodin, or Pro-B) will be applied practically in order to demonstrate the validity of those refinement relations.
The module exposes students to problems associated with software development on an industrial scale.