Decomposition Plug-in User Guide
From Event-B
Introduction
The Decomposition plug-in allows to decompose a model into sub-models.
See the Event-B Model Decomposition page for technical details on shared variables (A-style) decomposition.
Installing and Updating
Setup
The following steps will guide you through the setup process:
- Download Rodin for your platform from Sourceforge:
- Extract the downloaded zip file.
- Start Rodin from the folder where you extracted the zip file in the previous step.
- Install the Decomposition plug-in:
- In the menu choose Help -> Software Updates...
- Select the tab Available Software and click Add Site...
- Use the location URL: http://rodin-b-sharp.sourceforge.net/updates
- Back in Available Software open the update site you just added
- Select Event-B Decomposition and click Install...
- Restart Rodin as suggested.
Now you are ready to use the Decomposition plug-in.
Update
The following steps will guide you through the update process:
- In Rodin open the preferences (Window -> Preferences or for Mac: Rodin -> Preferences)
- Find Install/Update -> Automatic Updates
- Select Automatically find new updates and notify me
As soon as Rodin finds a new update it will ask you if you would like to install it.
Release Notes
See the Decomposition plug-in release history.
Decomposing
Selecting the Input Machine
Setting the Preferences
Decomposition style, decomposition of the contexts, etc.
Importing / Exporting the Configuration
Reporting a Bug or Requesting a Feature
Please, use the SourceForge trackers to report a bug on existing features, or to request new features:
Tips and Tricks
- An invariant is missing in a sub-machine, but I would like to have it copied.
- For example, an invariant between a concrete variable and some abstract variable may be useful.
- See the last paragraph about the invariants in the Event-B Model Decomposition page.
- An axiom is missing in a sub-context, but I would like to have it copied.
- A variable is tagged as private in a sub-machine, but I would like to have it tagged shared.
- Such a behavior is suitable if you want to prevent this variable from being further refined.
- A solution for such a variable of a sub-machine is to add a fake action in a event of the non-decomposed machine which is associated to the sub-machine ( and are distinct sub-machines) when performing the decomposition.
- The following example illustrates this.
- In the second scenario, the variable will become shared when performing the decomposition.