CS 525V (S02) : Introduction to Computer-Aided Verification

Homework 3: Modeling Software with SMV

The Problem

Consider a software system for managing circulation of books at a library. The system tracks books and patrons. Books may be checked in or checked out. If a book is checked out, it may also be on request by other patrons. When the book is returned, the software automatically checks it out to the next patron waiting for the book. For each patron, the system keeps track of which books they have checked out and which they have on request.

The library system needs to satisfy the following properties:


The goal of this assignment is for you to explore how well-suited SMV is to modeling and verifying more realistic software systems.

  1. (15 pts) Model the library system in SMV. Document your model with a description of the modules you created, what they capture, and what information flows between the modules.
  2. (10 pts) What modeling decisions did you have to make? For example, if you had to limit the model in ways that you would not have had to limit an implementation of this system, explain what those limits are and why you need them. Your answer should point to ways in which software implementations differ from software models.
  3. (5 pts) Verify the two desired properties of the library system.
  4. (10 pts) Discuss what aspects of the system/requirements were easy to model with SMV and which were difficult. Illustrate your conclusions with specific examples from your model. Propose general conclusions about what aspects of software systems are easy or hard to model with SMV.

This page maintained by Kathi Fisler
Department of Computer Science Worcester Polytechnic Institute