-
Notifications
You must be signed in to change notification settings - Fork 81
Home
PRISM and PRISM-games are open-source software and we encourage developers to adapt and extend them.
Here, we collate information and resources for developers of these tools, or of code that extends/connects to them.
If you have questions or want to discuss issues relating to PRISM/PRISM-games development, please use the PRISM developers forum on Google Groups first. For anything else, please email Dave Parker at david.parker@cs.ox.ac.uk.
The source code for PRISM and PRISM-games can be found at:
These are the most up-to-date version of the code. If you plan to extend/adapt them, create a fork from that repo. Public releases (both binaries and source) are published on the PRISM download and PRISM-games download pages, and also on the GitHub PRISM releases and PRISM-games releases pages.
The prism-api repo contains examples of how to connect to PRISM programmatically:
The manual has PRISM installation instructions and there are some extra PRISM-games installation instructions.
In short, you need GNU make, a C/C++ compiler (e.g. gcc/g++) and a Java Development Kit (version 9 or above). And, from within the downloaded PRISM distribution, compilation should just require:
cd prism && make
These scripts install required packages and compile PRISM on a fresh install/VM for various OSs:
-
prism-install-ubuntu(and for PRISM-games:prism-install-ubuntu) -
prism-install-fedora(and for PRISM-games:prism-install-fedora) -
prism-install-windows.bat/prism-install-cygwin(and for PRISM-games:prism-install-windows.bat/prism-install-cygwin)
PRISM uses various libraries, but aims for the install to have minimal pre-requisites so these libraries are generally built from source at compile time or are included in binary form for various OSs.
-
CUDD: PRISM needs (a customised version of) the CUDD library for BDDs and MTBDD. This is in
../cuddand is compiled by the main build process. The CUDD repo is used to keep track of modifications made. -
Java libraries: PRISM uses various Java libraries, which are included, pre-compiled, as JAR files in the
libdirectory. See lib/README.md for a list of libraries and versions and this page for further details and links.
For the main PRISM repo, we use a linear git history, rebasing rather than merging when feature branches are incorporated. There is no specific policy for retaining/updating the timestamps of the original commits.
The PRISM-games repo is periodically updated to incorporate updates from the main PRISM repo. This is done via merging, not rebasing, since some parts of the codebase have diverged a little.
The prism-ext repo is used for hosting public snapshots (e.g. for tool competitions) or publicly released extensions (e.g. PRISM-pomdps, before it was integrated to the main repo).
The (modelling and property) languages in PRISM are processed using
parsers generated by JavaCC.
We use version 7.0. You do not need this to build a normal version of PRISM,
only if you have made your own modifications to the parsers.
(In that case, note that make parser re-compiles just the parser code)