Stratagem home page

Stratagem is a research prototype system illustrating some recent theoretical ideas in game semantics, written in Standard ML of New Jersey. However, you don't have to be an expert in game semantics to use it - in fact, Stratagem is largely intended to illustrate some of the curious programming tricks that these theoretical ideas make possible. It also serves as a fun and relatively painless way of absorbing some of the main ideas of game semantics, if you're interested.

Exactly what it does is hard to explain in a few words, but quite easy to grasp once you see it in action. The key idea is that given some operation or function supplied by the user, Stratagem extracts the underlying "computation strategy" and allows it to be explored and manipulated in various ways. Possible applications include execution tracing, interactive execution, and program optimization.

The system makes essential use of explicit continuations, and currently only runs on the New Jersey SML compiler. I have tested it on version 110.0.7 - please let me know if you have problems running it on other versions. (The current version (1.1) fixes a problem in version 1.0 which meant that it didn't compile under NJ-SML 110.42. Many thanks to Ethan Aubin for his help with this.)

To use Stratagem, just download the source code and the user documentation which serves as a walkthrough introduction to the system's capabilities. Then follow the steps described in the latter.

The Stratagem system could potentially be of interest to workers in the following areas:

The current version (1.1) is intended as a concept demonstrator rather than a serious debugging tool - the full range of ML datatypes is not yet supported - but it suffices to illustrate all the basic ideas and allows the user to perform some complex and interesting experiments.

John Longley
Last modified: Mon Jun 5 13:31:21 BST 2006