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

(C) 2000-2026 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 (https://www.stups.hhu.de).

The following libraries are not licenced under EPL 1.0:
 - nauty (Apache 2.0 License, see LICENSE-nauty.txt)
 - fuzz (see below)

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:
   https://prob.hhu.de

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
	Jan Gruteser
	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)
B Rules DSL:
    Dominik Hansen, Jan Gruteser
B2SAT Satsolver Backend:
    Michael Leuschel, Sebastian Krings, Joshua Schmidt, Jan Roßbach
    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)
Clingo Backend:
    Michael Leuschel, Maxime Zielinger
PCTL Support:
    Honoré Marmion
Sequent Prover:
    Katharina Engels, Jan Gruteser, Michael Leuschel

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:
	Copyright (1988-2007) J. M. Spivey
	https://github.com/Spivoxity/fuzz

    Redistribution and use in source and binary forms, with or without
    modification, are permitted provided that the following conditions are met:

    - Redistributions of source code must retain the above copyright notice,
      this list of conditions and the following disclaimer.
    - Redistributions in binary form must reproduce the above copyright notice,
      this list of conditions and the following disclaimer in the documentation
      and/or other materials provided with the distribution.
    - The name of the author may not be used to endorse or promote products
      derived from this software without specific prior written permission.

	This software is provided by the author "as is" and any express or implied
	warranties, including, but not limited to, the implied warranties of
	merchantability and fitness for a particular purpose are disclaimed. In no
	event shall the author be liable for any direct, indirect, incidental,
	special, exemplary, or consequential damages (including, but not limited
	to, procurement of substitute goods or services; loss of use, data, or
	profits; or business interruption) however caused and on any theory of
	liability, whether in contract, strict liability, or tort (including
	negligence or otherwise) arising in any way out of the use of this
	software, even if advised of the possibility of such damage.


Nauty library for symmetry reduction:
	Copyright (1984-) Brendan McKay
	https://pallini.di.uniroma1.it/


Known limitations for classical B:
==================================
 - 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 https://prob.hhu.de/w/index.php/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 8 or newer is required for the B Parser to work

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