
## CONTENTS

 * mpstpp.jar -- The executable tool
 
 * key-value-store/ -- Example global types for the Key-Value Store protocol
 
 * key-value-store-seq/ -- Example global types for the Key-Value Store protocol
 in which parallel composition is replaced by sequential composition
 
 * load-balancer/ -- Example global types for the Load Balancer protocol
 
 * map-reduce/ -- Example global types for the Map/Reduce protocol
 
 * peer-to-peer/ -- Example global types for the Peer-to-Peer protocol
 
 * pub-sub/ -- Example global types for the Pub/Sub protocol
 
 * work-stealing/ -- Example global types for the Work Stealing protocol



## SETUP

 * Download and install Java 13
 
 * Download and install mCRL2 201908.0 (only needed if direct weak bisimilarity
 checks are to be carried out)
 
 * Ensure that the bin folder of Java and mCRL2 are included in PATH. If yes,
 "java -version", "mcrl22lps --version", and "lps2lts --version" should print
 version information that indicates Java 13 and mCRL2 201908.0



## CHECKING OPERATIONAL EQUIVALENCE

To sequentially check well-formedness of a global type:

  $ java -jar mpstpp.jar glob --project --check /path/to/protocol.glob

To parallel check well-formedness of a global type:

  $ java -jar mpstpp.jar glob --project --check --parallel /path/to/protocol.glob

To check weak bisimilarity of a global type and its group of projections (using
mCRL2):

  $ java -jar mpstpp.jar glob --project --check --mcrl2=weak-bisim /path/to/protocol.glob



## BENCHMARKING

To sequentially check well-formedness of a global type repeatedly, either until
the 0.95 confidence interval is within 5% of the mean, or until 1000 repetitions
are done:

  $ java -jar mpstpp.jar glob --project --check --benchmark=0.95 --reps=1000 /path/to/protocol.glob

To parallel check well-formedness of a global type repeatedly, either until the
0.95 confidence interval is within 5% of the mean, or until 1000 repetitions are
done:

  $ java -jar mpstpp.jar glob --project --check --parallel --benchmark=0.95 --reps=1000 /path/to/protocol.glob

To check weak bisimilarity of a global type and its group of projections
repeatedly, either until the 0.95 confidence interval is within 5% of the mean,
or until 1000 repetitions are done:

  $ java -jar mpstpp.jar glob --project --check --mcrl2=weak-bisim --benchmark=0.95 --reps=1000 /path/to/protocol.glob



## API GENERATION

To generate Java APIs in package foo:

  $ java -jar mpstpp.jar glob --project --check --java=foo /path/to/protocol.glob
