This code is provided as is without warrenty for any purpose.  It is a prototype implementation of an auditing algoirthm.  However, it has not been tested or designed for use in actual auditing tasks.  It is only made available so that researchers may replicate the claims in assocated publications.

This code provides all the functionality described in the following publication:
Michael Carl Tschantz, Anupam Datta, and Jeannette M. Wing
"Formalizing and Enforcing Purpose Restrictions in Privacy Policies"
It also implements additional functionality to be described at a later date.

All code is written in Racket, a dialect of Scheme.  They are designed to run in the DrRacket IDE/intreperter. You can download it at 
  http://racket-lang.org/
When you open these files in DrRacket, you can click on "Run" and it will run them for you.  Racket is a mostly interpreted language.  There's no need to compile anything.  Installation consists only of downloading these files and installing DrRacket.

I have only ran these programs on a Windows computer.  In theory, they should work without any changes on a Linux or Apple computer since the code is platform independent.  (You will, however, need a different version of DrRacket.)  However, I have no idea if it will actually work.

audit/mdp.rkt                     A representation of MDPs
audit/opt.rkt                     Code for optimizing MDPs
audit/audit.rkt                   The auditing and value-iteration algorithms
audit/audit-tests.rkt             Some simple tests of the audit algorithm
RHIO-example/model.rkt            Makes multi-step models of a RHIO
RHIO-example/tests.rkt            Code for finding the SERT and SERT'
RHIO-example/process-all-results.rkt  Converts the output of tests.rkt into a LaTeX table
RHIO-example/process-sert-results.rkt  Converts some of the output of tests.rkt into a LaTeX table
RHIO-example/results/             Where output from tests.rkt ends up.  Empty to start.
RHIO-example/mct-results/         The results from me running tests.rkt 

If you want to create your own RHIO tests, start with tests.rkt.  If you want to make your tests all together, start with audit-tests.rkt.

The output format from tests.rkt is the same format as a Racket program (hance, the suffix .rkt), but it doesn't actually run as one.  This just makes parsing a lot easier.  Each output files is named with the arguments used to create it.  These arguments are also provided inside the file along with the results of each call to audit and the over results for the SERT/SERT'.  It also provide timing results in milliseconds.  Of the three times provided, the first is the "running time".  (see "time" in the Racket manual for details.)

DrRacket will be making .bak files for backups and compiled/ directories for holding compiled code (I believe it's doing JIT compilation).  I have successfully ignored these files and directories.

Michael 
mtschant 'at-sign' cs.cmu.edu