Hello, dear friend, you can consult us at any time if you have any questions, add WeChat: THEend8_
Your model must make available operations that initialise the system, allow entry, allow exit, unlock a door in an emergency, allow adding a user, deleting a user and amending a user.
You should build the model by having a state schema called Status that describes the state of the door at any moment. Your operations change Status appropriately (i.e. according to the requirements), but at this level of modelling you should assume the operations are instantaneous, so all the observations of Status always have a definite value.
Your model must be presented in the traditional Z way as a sequence of paragraphs, each consisting of some English description of the features of the state or operations or auxiliary machinery (e.g. functions, global constants etc.) you are currently considering, followed by the Z version for that feature. The traditional style is described in the document by John Wordsworth on the Moodle site. Please make sure that you follow it. That document also provides a quick overview of the Z ideas that we have covered, so it is good revision too.
Start with a description of the overall idea of the system, then introduce the state, its initialisation and the operations (in that order), together with any necessary auxiliary definitions. You should consider doing some proofs, for example of an initialisation theorem, and to investigate the pre-conditions of your operations.
Pay attention to making the whole document readable. Check the Z using ProB to make sure it is syntax- and type-correct. The whole document must be written using the LATEX article style (just as the one you are currently reading is). Great importance is attached to a high-quality document and a simple, elegant model that meets the requirements.
2 More than one door
Once you have built the model as in section ??, use that model of a single door to model a (more realistic) building that has several (some finite number) of such doors.
2.1 Further requirements
The model should be extended so that the system records all the doors in the building, identifying each with a door identification number (DIN), and all the allowable users and their associated PINs. Each DIN should be mapped to a particular door’s status (as modelled using a schema very similar to Status).
The operations available on a single door should be raised to the system level, so there should be a system initialisation operation that initialises each door, a system-level operation to add a user, a system-level operation to handle a user leaving via a particular door, and so on. This should all be modelled explicitly, i.e. do not use promotion, since I want you to write as much Z as possible!
Use ProB to check that your operations have the required effect when tried on a small model. You might find this tricky due to the “explosion” of states, so choosing the various constants (both in the ProB preferences and in your model itself) will be critical.
2
Make your model as well-structured as you can: a uniform, modular ap- proach that models the requirements in a logical way that reflects the physical structures involved, so as to make your model clear for your client, would be recommended.
Assessment
You should hand in a LATEX file, so please make sure that it compiles (so I can read the PDF version). Your file (model and accompanying, explanatory text) should be handed-in via the Moodle site by 1700 on Wednesday 25th September 2019. A second part to this coursework will be issued at that time, and it will be due in around three weeks after.