Protocon: Add Convergence to Shared Memory Protocols
1. Downloads
Source code on GitHub
Linux 64-bit Package (Updated 2015.10.20)
Includes: serial version (default mode of bin/protocon), multi-core version (use -parallel flag), MPI version (bin/protocon-mpi), and GUI (bin/protocon-gui)
2. Resources
3. Acknowledgments
Resources
- Superior, a high performance computing cluster at Michigan Technological University, was used in obtaining results.
- This work is sponsored by the NSF grant CCF-1116546.
|
Any opinions, findings, and conclusions or recommendtions expressed in this material are those of the authors and do not necessarily reflect the views of the National Science Foundation. |
Software
- espresso-ab is optionally used for logic minimization (spawned process).
- GLU 2.4 provides BDD/MDD manipulation (statically linked).
- peg/leg generates an input file parser (preprocessing step).
- Qt 4.6 is used by the GUI (dynamically linked).
4. Release Notes
2015.10.20
- Benchmarks and updates to documentation
2015.09.29
- Add dining cryptographers, dining philosophers, and stop-and-wait examples
- Allow actions that are not self-disabling when a self-disabling version violates safety
- Make synthesis feasible for synchronous systems
- Fix crash when optimizing using MPI
- Fix
-=>
operator when used with random write variables, and change it to automatically randomize unassigned ones
- Fix
-=>
operator to not affect the guard for pure shadow variables
- New
random read:
access to variables for probabilistic stabilization
- New
(future & closed)
keyword for stabilization without enforcing a specific protocol behavior
2015.04.23
- New
random write:
access to variables for probabilistic stabilization
- New
(future & future silent)
and (future & future shadow)
keywords for convergence to any subset of the invariant
- Daisy chain orientation example
- Can implicitly remove self-loops by using
-=>
in place of -->
- New
min(a,b)
and max(a,b)
functions
2015.01.16
- Introduce
active shadow
which can be substituted for shadow
to prevent shadow self-loops
- Change
permit:
semantics to make more intuitive sense
- More examples and documentation
2014.12.21
- New support for
shadow
variables
- Use .prot file extension
- MPI version now supports protocol optimization via the -optimize flag
- When using puppet variables, enforce a silent protocol with
future silent;
line
2014.09.12
- New
permit:
keyword to complement forbid:
- New
(assume & closed)
keyword to restrict initial states
- New -optimize flag for finding an optimal protocol (in interleaved steps)
- New
(future & silent)
or (future & shadow)
syntax for invariants (see examples)
- Putting a -def before (but not after) -x in the argument list affects the initial file read and candidate actions
- More examples!
- Substantially more quality control and testing, associated bug fixes
2014.05.24
- File reorganization
- Preserve locally-conjunctive invariants
2014.04.26
- Serial search is now the default mode
- Improved packaging
- Improved file reading, still much room to improve
- Verification in GUI
2014.01.31
- Symmetry can be enforced across sets of variables.
- GUI gets a state exploration mode.
- Can now mark actions as forbidden. Synthesis cannot use them for recovery.
- Improve Promela model output.
- More testing and bug fixes.
2013.11.19
- Fix output format when multiple variables are used.
- Add ring orientation example