= Tools for Curry-Coloured Petri Nets = The Curry-coloured Petri net formalism and its tool set provide the possibilities - to model CCPNs (Curry-coloured Petri nets) with [http://www.curry-language.org Curry] inscriptions in the [http://renew.de Renew] editor environment - to simulate CCPN models - to generate a reachability graph for CCPN models - to integrate the [https://git.informatik.uni-hamburg.de/9simon/ccpn CCPN simulator] as a [https://www.haskell.org Haskell] library into Haskell programs While [https://www.haskell.org Haskell] is used as the implementations language, [http://www.curry-language.org Curry] is used as the inscription language. The main advantage is that CCPN inscriptions are side effect free due to the Curry's functional pureness and the control of side effects by its strong type system. Binding searches are based on the highly optimized Curry evaluation environment of the [https://www-ps.informatik.uni-kiel.de/kics2 KiCS2] compiler. '''Here we provide a download for reviewers: [http://www.informatik.uni-hamburg.de/TGI/moldt/renew2.6devbase.zip renew2.6devbase.zip]''' == Prerequisites == Installation for the CCPN tools is supported for Unix-like systems (macOS, Linux, BSD,...) and requires: - Java Runtime Environment in Version 9 or later - [https://git-scm.com/downloads Git] == Installation == The CCPN tool set requires two components, Renew with the CurryCPN and the !RefNetReachabilityGraph plugin, as well as the [https://git.informatik.uni-hamburg.de/9simon/ccpn CCPN simulator] (includes the [https://www-ps.informatik.uni-kiel.de/kics2 KiCS2] Curry compiler). We have extensively tested the installation on macOS, but it also supports other Unix-like systems (Linux, BSD,...). Windows is currently not officially supported (see below). === Renew === This package contains a precompiled version of Renew and the required plugins. To generate the startup scripts for Renew run the `bin/unix/installrenew` script. === CCPN Simulator === The CCPN simulator has to be compiled manually. The setup script requires Git to clone the CCPN repository and its dependencies. The script uses the Haskell tool [https://haskellstack.org Stack] to download and compile all required Haskell libraries. Stack is automatically installed, if it is not already available. To compile the CCPN simulator and all its dependencies run: {{{ sh setup_ccpn.sh }}} This may take a while because it bootstraps the KiCS2 compiler. === On Windows === So far, we do not offer a working setup script for the CCPN simulator on Windows. The installation described above only works on Unix-like systems (macOS, Linux, BSD,...). The CCPN simulator installation depends on a lot of standard GNU commands that are very difficult to set up correctly in Windows. However, if the CCPN simulator installation succeeded, Renew can be set up in Windows by running `bin/win/installrenew.bat` and then started by running `bin/win/loadrenew`. == Usage == To start Renew with the CurryCPN plugin use the generated `bin/unix/loadrenew` script. You can find the example CCPN from the ''Tools for Curry-Coloured Petri Nets'' paper in `examples/word.rnw`. The other examples are from the master thesis. To select the CCPN simulation formalism click on the menu item ''Simulation -> Formalisms -> Curry Net Compiler''. Subsequently, you can start a concurrent CCPN simulation by ''Simulation -> Run Simulation''. Please note that the CCPN compilation occurs at the beginning of each new simulation and takes some time before the first marking is visualized. Alternatively, you can start a simulation and fire individual transitions by ''Simulation -> Simulation Step''. A running simulation is halted by ''Simulation -> Halt Simulation'' and any simulation is terminated by ''Simulation -> Terminate Simulation''. The colored reachability graph can be generated by ''Tools -> Curry Reachability Graph''. In the generated graph, a graphical representation of a marking is opened by double-clicking it. The `doc` directory contains the general Renew manual for version 2.5. This package contains version 2.6dev, so there are some small differences. Most noticeable is the requirement for Java 9 for this version of Renew. === As a Haskell Library === See the ''Usage Examples'' in the README of the CCPN simulator's [https://git.informatik.uni-hamburg.de/9simon/ccpn/tree/master_thesis_examples master_thesis_examples branch]. They exceed the scope of the ''Tools for Curry-Coloured Petri Nets'' paper, but two of them are explained in the master thesis. == References for CCPN == - Michael Simon. Curry-Coloured Petri Nets: A concurrent simulator for Petri nets with purely functional logic program inscriptions. Master thesis, University of Hamburg, Department of Informatics, Vogt-Kölln Str. 30, D-22527 Hamburg, April 2018. - [https://git.informatik.uni-hamburg.de/9simon/ccpn/wikis/uploads/4eac7bfc80b93071c7779d447c6ff58b/Master_Thesis_Michael_Simon__corrected_.pdf Corrected version] - Michael Simon and Daniel Moldt. About the development of a Curry-Coloured Petri net simulator. In Robert Lorenz and Johannes Metzger, editors, Algorithms and Tools for Petri Nets, Proceedings of the 21th Workshop AWPN 2018, Augsburg, Germany, number 2018-02 in Reports / Technische Berichte der Fakultät für Angewandte Informatik der Universität Augsburg, pages 53–54, 2018. - Michael Simon and Daniel Moldt. Tools for Curry-Coloured Petri Nets. Internal Report 10 pages. (Please contact the authors.) === Additional References === - Michael Simon. Concept and implementation of distributed simulations in Renew. Bachelor thesis, University of Hamburg, Department of Informatics, Vogt-Kölln Str. 30, D-22527 Hamburg, March 2014. - [https://git.informatik.uni-hamburg.de/9simon/ccpn/wikis/uploads/ee8394aad2d78d1acb5f923b5d022f61/Bachelor_Thesis_Michael_Simon.pdf Official version]