Introduction to Model-Checking Techniques

June 14-25, Politecnico di Milano

Michal Young [email: michal@cs.uoregon.edu]

Jump to: Home | Schedule | Lectures


Alloy Exercise

For this exercise you will need the Alloy checker and its user manual. The current version of the Alloy language differs significantly from the version we read about in the paper, but the basic concepts are the same, and many of the syntactic elements (e.g., the use of ! to indicate singleton sets) are the same, so the adjustment should not be too hard.

The exercise is due Friday, and I hope we can spend at least half the class period presenting and comparing solutions. It is best if you bring your solution on a USB data key. Another possibility is to bring your laptop PC and connect it to the projector to show your solution.

Getting the Tool and Manual

You can obtain these, including a version of the checker compiled for your operating system, at http://sdg.lcs.mit.edu/projects/alloy-analyzer.htmlhttp://sdg.lcs.mit.edu/projects/alloy-analyzer.html .

Exercise Description

Please start with a model based on this description of courses:

People can be students or instructors. Graduate students may be both --- they may teach some courses and take some courses. An instructor assigns grades (votes) to students enrolled in a course. An instructor should not enroll in his own course.

You can then elaborate the model in a way that you like. For example, you might consider that a course is held in a room at a particular time, and only one course may be offered in a room at one time.

You should at least ensure that your model is consistent (Alloy should be able to find a way to instantiate it). In addition, can you find some interesting properties to check? For example, can you find some simple constraints to prevent people from conspiring to exchange favors (I give you a good grade in my course, you give me a good grade in your course)?


Michal Young / michal@cs.uoregon.edu / $Id: Alloy-Courses.html,v 1.1 2004/06/23 09:28:54 michal Exp $