Tools

The Tempo Toolkit

Tempo Basics

To precisely model and prove properties of distributed algorithms in an asynchronous network, we introduced Input/Output Automata (IOA) formalism. The Tempo Toolkit is a collection of tools to simplify the process of developing and validating IOA systems. (Tempo actually works with Timed Input/Output Automata, a more powerful version of IOA that includes timing constraints. For our purposes, we will not make use of the timing features.)

The toolkit consists of the Tempo language, which closely matches the format of the pseudocode used in the book to describe IOA, a syntax checker to validate your IOA code, as well as connections to a homegrown simulator, the PVS theorem prover, and the UPAAL model-checker.

Your Requirements

When specified by the problem set, you will be required to write your distributed algorithm in the Tempo language and validate it with the syntax checker. You will not be required to use the other tools included with the toolkit—simulation, theorem proving, model-checking—but are welcome to try if you have some experience with these techniques. We recommend that you experiment with writing your code in Tempo for the relevant questions in Part B of Problem Set 2. We will require you to hand in syntax-checked Tempo code starting with Problem Set 3.

Installing the Tempo Toolkit

Windows, Mac, and Linux versions of the toolkit can be found at VeroModo. We recommend that you download the version including the Eclipse-based user interface. For this to work, you must have Java version 1.5 or better. The latest versions of Java can be downloaded here.

Within the install directories see doc/Tempo_Guide.pdf for an overview of both the TIOA formalism and the Tempo language. The same file is also available here:

Featured Sites

Tools

About MIT OpenCourseWare

MIT OpenCourseWare makes the materials used in the teaching of almost all of MIT's subjects available on the Web, free of charge. With more than 2,200 courses available, OCW is delivering on the promise of open sharing of knowledge.