Skip to content
The library FDR3 uses for parsing, type checking and evaluating machine CSP.
Haskell Logos Shell
Latest commit 0478963 May 19, 2016 @tomgr Merge pull request #13 from sashabu/master
Change ProfilerThunks.hs to use Template Haskell to make it easier to…
Failed to load latest commit information.
cspmchecker Fix a preprocessor problem. Apr 21, 2015
profiler Add a new time and space profiler. Apr 10, 2015
src Change ProfilerThunks.hs to use Template Haskell to make it easier to… May 19, 2016
tests Fix scripts that were erroneously passing the type checker. Mar 30, 2016
.gitignore Update gitignore Oct 11, 2013
CHANGELOG.txt Update for release. Oct 11, 2013
LICENSE.txt Update license. Aug 2, 2013 Update the build status url. Feb 26, 2015
Setup.hs Various updates to the cabal files and simplification of the Setup.hs… Oct 3, 2011
libcspm.cabal Fix release script. Oct 11, 2013


This library provides a FDR-compliant parser, type checker and (experimental) evaluator for machine CSP files.

There is also a program, cspmchecker, that makes use of this library to provide command line type checking.

Build Status


The simplest method is to install via Hackage. cabal install cspmchecker will install cspmchecker and its dependencies.

Otherwise, if you obtain a source distribution then the following commands will install libcspm.

cabal configure
cabal build
cabal install

To install cspmchecker, firstly install libcspm as above, then change directory to cspmchecker and run the following commands.

cabal configure
cabal build
cabal install

This should make cspmchecker available from your command line shell (if not check that the location cabal installs binaries to is on your $PATH).

Usage of cspmchecker

From a command line shell simply do cspmchecker file.csp to type check the files. Any error messages will be printed out. For example:

$ cspmchecker ucsexamples/chapter04/abp.csp 
Checking ucsexamples/chapter04/abp.csp.....
    Couldn't match expected type Int.Int with actual type Int
    In the expression: bit
    In the expression: ack == bit
    In the expression: (ack == bit)

Documentation of the type system is forthcoming.

Usage of libcspm

See for documentation.


To test libcspm run the following commands.

cabal configure --enable-tests
cabal build
cabal test

Bug Reports

Please files bug reports at Please provide a minimal example script that exhibits the error (if possible).

Something went wrong with that request. Please try again.