
ProB: An Animator, Constraint Solver and Model Checker for B
-----------------------------------------------------------

(C) 2000-2024 Michael Leuschel (and many others; see below).
This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html).
For availability of commercial support, please contact 
Michael Leuschel (http://www.stups.hhu.de).

The following libraries are not licenced under EPL 1.0:
 - nauty (see lib/NautyLicence.txt)
 - fuzz (see http://spivey.oriel.ox.ac.uk/mike/fuzz/)

Use of ProB's nauty library for symmetry reduction implies further
restrictions (no applications with nontrivial military
significance, see http://cs.anu.edu.au/~bdm/nauty/).

ProB comes with ABSOLUTELY NO WARRANTY OF ANY KIND !
This software is distributed in the hope that it will be useful
but WITHOUT ANY WARRANTY. The author(s) do not accept responsibility
to anyone for the consequences of using it or for whether it serves
any particular purpose or works at all. No warranty is made about
the software or its performance.

For updates and news check:
   http://www.stups.hhu.de/ProB/

ProB uses state-of-the-art Prolog technology (co-routining, finite
domain constraint solvers,...) to achieve symbolic debugging,
constraint-based and temporal-logic based model checking.
The tool was partly being developed within the EPSRC grants iMoc and ABCD
and the EU grant ASAP. Further development within RODIN has been carried out.
More developments within DEPLOY, GEPAVAS, and ADVANCE are being undertaken.
Some developments have been sponsored by industrial partners.

Development, Copyright and Intellectual Property Rights:
B-Kernel & Model Checker & Constraint-Based Checker:
	Michael Leuschel, Daniel Plagge, Jens Bendisposto, Sebastian Krings
Tcl/Tk Interface:
	Michael Leuschel, Daniel Plagge, Ivaylo Dobrikov, Laksono Adhianto
B Parser:
	Fabian Fritz, David Geleßus, Jens Bendisposto, Marc Fontaine, Dominik Hansen,
	Sebastian Krings, Michael Leuschel, Daniel Plagge, Kristin Rutenkolk
B Typechecker:
	Daniel Plagge, Michael Leuschel
Event-B Translator:
	Jens Bendisposto, Daniel Plagge
ProZ, LTL model checker:
	Daniel Plagge, Michael Leuschel, Ivaylo Dobrikov
CSP Interpreter:
	Michael Leuschel, Marc Fontaine, Ivaylo Dobrikov
Parser for CSP-M:
	Marc Fontaine
Nauty Interface for ProB:
	Corinna Spermann, Michael Leuschel
Symmetry Hash Markers:
	Michael Leuschel, Thierry Massart
Partial Order Reduction:
    Ivaylo Dobrikov
TLA+ Support & TLC Backend:
	Dominik Hansen
Alloy Support:
    Joshua Schmidt, Sebastian Krings, Michael Leuschel
SMT2/Z3 Support, IC3:
	Sebastian Krings, Joshua Schmidt, Michael Leuschel
CDCLT Solver:
    Joshua Schmidt
Parallel/Distributed version of ProB:
	Jens Bendisposto, Philipp Körner
	(see https://prob.hhu.de/w/index.php/ParB)
Bash Completion, VIM Support:
	David Schneider
	(see https://prob.hhu.de/w/index.php/Bash_Completion,
	 https://prob.hhu.de/w/index.php/Editors_for_ProB, and
	 https://github.com/bivab/prob.vim)
Atom Support:
	Sebastian Krings
	(see https://atom.io/packages/language-b-eventb)
VSCode Support:
    Sebastian Stock
ProB 2 Java FX UI:
	David Geleßus
	Yumiko Jansing
	Ina Katharina Backes-Schulz
	Antonia Pütz
	Sherin Schneider
	Miles Vella
	Fabian Vu
	Michelle Werth
	(see https://prob.hhu.de/w/index.php/ProB2-UI)
B2SAT Satsolver Backend:
    Michael Leuschel, Sebastian Krings, Joshua Schmidt, Jan Rossbach
    based on pl-minisat by Codish, Lagoon, Stuckey
    (http://amit.metodi.me/research/plsatsolver/)
    interfacing to Glucose SAT solver by Gilles Audemard, Laurent Simon
    (https://github.com/audemard/glucose)

Other Developers:
	Michael Birkhoff, Michael Butler,
	Joy Clark, Carla Ferreira, Philip Hoefges,
	Stephane Lo-Presti, Li Luo, Leonid Mikhailov,
	Ed Turner, Phil Turner, Harald Wiegard,
	Dennis Winter


Fuzz Parser and Type Checker for Z:
	Mike Spivey
	(see http://spivey.oriel.ox.ac.uk/mike/fuzz)
Nauty library for symmetry reduction:
	Copyright (1984-2007) Brendan McKay
	http://cs.anu.edu.au/~bdm/nauty/

Known limitations:
==================
 - Tuple notation without parentheses a,b,c is not allowed (use (a,b,c) instead)
 - Relational composition and parallel product need to be put inside parentheses
 - The VALUES clause is not yet fully supported
 - Definitions have to be syntactically correct and have to be either an expression,
   a predicate or a substitution; the arguments have to be expressions
 - some Atelier B's tree operations are not supported (mirror, infix)
 - Preconditions of operations are not automatically propagated down
   to operations in refinements and implementations
 - Refinement checker treats PRE as SELECT
 - Possibly more (see http://www.stups.hhu.de/ProB/index.php5/Current_Limitations
   or ProB Summary in About menu for which features are supported)

Notes:
======
 - To visualize state space graphs: dot from AT&T's GraphViz package has to be installed
 - On Mac OS X you may need to install a recent version of Tcl/Tk
   (e.g., if you have no menu bar or if ProB crashes when opening a file)
 - Java 7 or newer is required for the B Parser to work

See the FAQ.txt file for troubleshooting and frequently asked questions.
