Skip to content
Snippets Groups Projects
Commit 80974e04 authored by penguinn's avatar penguinn
Browse files

Rearrange handbook files and merge developer handbook and user manual

parent 0ae16323
Branches
No related tags found
No related merge requests found
Showing
with 296 additions and 271 deletions
[[prob-cli]]
== ProB CLI
= ProB CLI
The ProB Cli (command-line interface) offers many of the ProB features
via command-line. As such, you can run ProB from your shell scripts or
......
:leveloffset: -1
[[other-languages]]
= Other languages
:leveloffset: +1
[[other-languages]]
= Other languages
[[other-languages-overview]]
= Overview
Since version
1.2.7 of ProB (July 2008) you can also open Promela files with ProB.
......@@ -96,7 +97,7 @@ the Rush Hour puzzle>> which also includes a graphical visualisation
(using the `animation_function_result` predicate recognised by ProB as
of version 1.4.0-rc3).
== Other recognised Prolog predicates
= Other recognised Prolog predicates
The following can be used to set up an animation image matrix with corresponding actions:
* animation_image(Nr,Path)
......
[[alloy]]
== Alloy
= Alloy
As of version 1.8 ProB provides support to load
http://alloy.mit.edu/alloy/[Alloy] models. The Alloy models are
......@@ -17,7 +18,7 @@ B language. In addition to basic Alloy constructs, our approach supports
integers and orderings.
[[installation-alloy]]
=== Installation
== Installation
Alloy2B is included as of version 1.8.2 of ProB.
......@@ -29,10 +30,10 @@ on Github].
* put resulting alloy2b-*.jar file into ProB's lib folder.
[[examples-alloy]]
=== Examples
== Examples
[[n-queens-alloy]]
==== N-Queens
=== N-Queens
....
module queens
......@@ -103,7 +104,7 @@ END
[[river-crossing-puzzle]]
==== River Crossing Puzzle
=== River Crossing Puzzle
....
module river_crossing
open util/ordering[State]
......@@ -186,7 +187,7 @@ END
....
[[proof-with-atelier-b-example]]
==== Proof with Atelier-B Example
=== Proof with Atelier-B Example
....
sig Object {}
......@@ -243,7 +244,7 @@ image::AlloyAtelierB.png[]
[[Alloy-Syntax]]
==== Alloy Syntax
=== Alloy Syntax
....
Logical predicates:
-------------------
......
[[csp]]
== CSP
[[csp-m]]
=== CSP-M
= CSP-M
ProB supports
machine readable CSPfootnote:[M. Butler and M. Leuschel: _Combining CSP
......@@ -21,7 +19,7 @@ below)
current B machine to control it
[[limitations-of-csp-m-support]]
==== Limitations of CSP-M Support
== Limitations of CSP-M Support
ProB now supports FDR and ProBE compatible CSP-M syntax, with the
following outstanding issues
......@@ -50,7 +48,7 @@ We still need to tune the animator and model checker for efficiency
deeply nested CSP synchronization constructs).
[[guiding-b-machines-with-csp]]
==== Guiding B Machines with CSP
== Guiding B Machines with CSP
To use this feature of ProB: first open a B Machine, then select "Use
CSP File to Guide B..." or "Use Default CSP File" in the "Open
......@@ -116,4 +114,4 @@ guide the B machine with
(This feature is included since version 1.3.5-beta7.)
==== References
== References
[[csp-m-syntax]]
=== CSP-M Syntax
= CSP-M Syntax
[[details-of-supported-csp-m-syntax]]
==== Details of supported CSP-M syntax
== Details of supported CSP-M syntax
Note: you can use the command "Summary of CSP syntax" in ProB's help
menu to get an up-to-date list of the supported syntax, along with
current limitations.
[[process-definitions]]
==== PROCESS DEFINITIONS
== PROCESS DEFINITIONS
* `Process = ProcessExpression`
[[process-expressions]]
==== PROCESS EXPRESSIONS
== PROCESS EXPRESSIONS
* `STOP` deadlocking process
* `SKIP` terminating process
......@@ -54,7 +54,7 @@ empty)
* `let f1=E1 ... fk=Ek within P`
[[boolean-expressions]]
==== BOOLEAN EXPRESSIONS
== BOOLEAN EXPRESSIONS
* `true`
* `false`
......@@ -73,7 +73,7 @@ empty)
* `elem(x,s)` sequence member check
[[value-expressions]]
==== VALUE EXPRESSIONS
== VALUE EXPRESSIONS
* `v+w`, `v-w` addition and subtraction
* `v*w` multiplication
......@@ -106,13 +106,13 @@ explicit sequence for patterns)
* `set(s)` convert sequence into set
[[comments]]
==== COMMENTS
== COMMENTS
* `-- comment until end of line`
* `\{- arbitrary comment -}`
[[pragmas]]
==== PRAGMAS
== PRAGMAS
* `transparent f` where f is a unary function which will then on be
ignored by ProB
......
[[checking-csp-assertions]]
=== Checking CSP Assertions
= Checking CSP Assertions
As of version 1.3.4, ProB provides support for refinement checking and
various other assertions (deadlock, divergence, determinism, and LTL/CTL
......@@ -11,7 +11,7 @@ assembled and checked in the _CSP Assertions Viewer_. A description of
the _CSP Assertions Viewer_ is also given.
[[supported-csp-assertions-in-prob]]
==== Supported CSP Assertions in ProB
== Supported CSP Assertions in ProB
ProB provides support for checking almost all types of CSP-M assertions
that can be checked within FDR2. Besides the assertion types that can be
......@@ -144,7 +144,7 @@ syntax error. Bear in mind to remove or comment out such LTL/CTL
assertions in the CSP-M file before loading it in FDR2.
[[csp-assertions-viewer]]
==== CSP Assertions Viewer
== CSP Assertions Viewer
When a CSP-M specification is loaded one can open the _CSP Assertion
Viewer_ either from the menu bar of the main window by selecting the
......@@ -392,7 +392,7 @@ button command “Cancel” is replaced by another button command
check when the button is clicked on.
[[debugging-non-satisfied-assertions]]
==== Debugging Non-satisfied Assertions
== Debugging Non-satisfied Assertions
In case an assertion check has failed the user can explore the reason
for the assertion violation. If the corresponding assertion is not
......@@ -489,7 +489,7 @@ In the figure above, the nodes and the transitions of the respective
counterexample "a -> (b -> a)+" are colored in red.
[[checking-csp-assertions-with-probcli]]
==== Checking CSP Assertions with `probcli`
== Checking CSP Assertions with `probcli`
It is also possible to check CSP assertions with the command line
version of ProB. The command has the following syntax:
......@@ -513,4 +513,4 @@ formula by means of a backslash \.
`probcli -csp_assertion "Q |= LTL: \"F [c]\"" example.csp`
==== References and Notes
== References and Notes
:leveloffset: -1
[[eventb-and-rodin]]
= Event B and Rodin
:leveloffset: +1
[[event-b]]
== Event-B
= Event-B
=== Installation and General Information
== Installation and General Information
ProB supports animation and model-checking for Event-B specifications.
[[installation-event-b]]
==== Installation
=== Installation
To install the ProB plugin for http://www.event-b.org[Rodin], open the
_Help_ menu in Rodin and click "Install new software".
......@@ -20,7 +21,7 @@ Alternativaly, one can use the Tcl/Tk version of ProB but Event-B models
must be exported to an .eventb file first (see below).
[[animation-and-modelchecking]]
==== Animation and Modelchecking
=== Animation and Modelchecking
You can start animation of a model (machine or context) by
right-clicking on the model in the Event-B explorer. Choose "Start
......@@ -29,7 +30,7 @@ Animation / Model Checking".
//*TODO:* Here we should add more details about the ProB perspective and views.
[[export-for-use-with-the-tcltk-version-of-prob]]
==== Export for use with the Tcl/Tk version of ProB
=== Export for use with the Tcl/Tk version of ProB
You can export a model (machine or context) to an .eventb - file by
right-clicking on the model in the Event-B explorer. You can find the
......@@ -39,7 +40,7 @@ Such a .eventb file can be opened by the command line and Tcl/Tk version
of ProB.
[[theories]]
==== Theories
=== Theories
ProB has (limited) support for theories.
......@@ -54,7 +55,7 @@ Axiomatically defined operators are not supported without additional
annotations.
[[tagging-operators-event-b]]
===== Tagging operators
==== Tagging operators
ProB has some extra support for certain operators. ProB expects an
annotation to an operator that provides the information that it should
......
[[event-b-theories]]
=== Event-B Theories
= Event-B Theories
ProB has (limited) support for theories.
......@@ -14,7 +15,7 @@ Axiomatically defined operators are not supported without additional
annotations.
[[download-theories]]
==== Download Theories
== Download Theories
//An example project with theories: theories2.zip[] TODO: Downloadlink
......@@ -57,7 +58,7 @@ BinaryTree::
Binary Trees are supported by ProB.
[[tagging-operators-event-b-theories]]
==== Tagging operators
== Tagging operators
[IMPORTANT]
*Please note:*
......@@ -102,7 +103,7 @@ Nat
|=======================================================================
[[error-messages]]
===== Error Messages
=== Error Messages
In case the .ptm file is missing, you will get an error message such as
the following one:
......
[[prob-for-event-b]]
=== ProB for Event-B
= ProB for Event-B
In addition to classical B (aka B for software development), ProB also
supports Event-B and the Rodin platform. ProB can be installed as a
......
[[prob-for-rodin]]
=== ProB for Rodin
= ProB for Rodin
Currently there are two versions of ProB available for Rodin.
[[prob-1-for-rodin]]
==== ProB (1) for Rodin
== ProB (1) for Rodin
The first one is based on the old Java API and supports
http://wiki.event-b.org/index.php/Rodin_Platform_2.8_Release_Notes[Rodin
......@@ -16,7 +17,7 @@ Rodin>>. Nightly releases of this versions are also available on the
<<download,Download>> page.
[[prob-2.0-for-rodin]]
==== ProB 2.0 for Rodin
== ProB 2.0 for Rodin
The second, still experimental, one is based on the new
<<prob-java-api,ProB Java API>> (aka ProB 2.0). Because the UI
......@@ -30,7 +31,7 @@ releases of this versions is also available on the
<<download,Download>> page.
[[multi-simulation-for-rodin-based-on-prob]]
==== Multi-Simulation for Rodin based on ProB
== Multi-Simulation for Rodin based on ProB
There is now also a
http://users.ecs.soton.ac.uk/vs2/ac.soton.multisim.updatesite/[Multi-Simulation
......@@ -38,10 +39,10 @@ Plug-in] available for Rodin. It enables discrete/continuous
co-simulation.
[[other-plug-ins-for-rodin]]
==== Other Plug-Ins for Rodin
== Other Plug-Ins for Rodin
[[prover-evaluation]]
===== Prover Evaluation
=== Prover Evaluation
This Plug-in is available at the update site
http://nightly.cobra.cs.uni-duesseldorf.de/rodin_provereval/[http://nightly.cobra.cs.uni-duesseldorf.de/rodin_provereval/]
......@@ -49,7 +50,7 @@ and is capable to evaluate a variety of provers or tactics on a
selection of proof obligations.
[[camille]]
===== Camille
=== Camille
We also develop the Camille text-editor for Rodin. A preliminary version
of Camille for Rodin 3.3 is available at the nightly update site:
......
:leveloffset: -1
[[proz]]
== ProZ
= ProZ
ProZ is a extension
of the ProB animator and model checker to support Z specifications. It
......@@ -11,7 +12,7 @@ https://www3.hhu.de/stups/downloads/pdf/proz07.pdf[iFM'07
article on ProZ] contains more details about the implementation.
[[preferences-for-proz]]
=== Preferences
== Preferences
A Z specification frequently makes use of comprehension sets, which are
often introduced by the underlying translation process from Z to B.
......@@ -25,10 +26,10 @@ Animation Preferences ->
....
[[structure-of-the-z-specification]]
=== Structure of the Z Specification
== Structure of the Z Specification
[[state-and-initialization]]
==== State and Initialization
=== State and Initialization
To identify the components (like state, initialization, operations) of a
Z specification, ProZ expects a certain structure of the specification:
......@@ -53,7 +54,7 @@ in the initialization, you can do that by including those schemas in the
predicate part.
[[operations]]
===== Operations
==== Operations
ProZ identifies schemas as operations if they satisfy the following
properties:
......@@ -79,7 +80,7 @@ Then the schemas A,B and E describe all the same operation. F is also
identified as an operation that leaves the state unchanged.
[[axiomatic-definitions]]
===== Axiomatic definitions
==== Axiomatic definitions
If axiomatic definitions are present, the declared variables are treated
like constants. In the first step of the animation, ProB searches for
......@@ -112,7 +113,7 @@ ProB will try to find a explicit set that will satisfy the given
property.
[[invariant]]
===== Invariant
==== Invariant
You can add a B-style invariant to the specification by defining a
schema "Invariant" that declares a subset of the state variables. In
......@@ -120,7 +121,7 @@ each explored state the invariant will be checked. The model checking
feature of ProB will try to find states that violate the invariant.
[[scope-proz]]
===== Scope
==== Scope
It is possible to limit the search space of the model checker by adding
a schema "Scope" that declares a subset of the state variables. If
......@@ -128,7 +129,7 @@ such a schema is present, each explored state is checked, if it
satisfies the predicate. If not, the state is not further explored.
[[abbreviation-definitions]]
===== Abbreviation Definitions
==== Abbreviation Definitions
Abbreviation definitions (e.g. Abbr == {1,2,3}) are used like macros by
ProZ. A reference to an abbreviation is replaced by its definition in a
......@@ -139,7 +140,7 @@ definitions (\defs instead of ==) when defining state, initialization,
operations, etc.
[[graphical-animation-proz]]
==== Graphical animation
=== Graphical animation
(*Please note that this functionality is part of the next version. If
you want to use graphical animation, please download a version from the
......@@ -191,10 +192,10 @@ Here is how the animation of the specification should look like:
image::ProZ_jars.png[]
[[special-constructs]]
==== Special constructs
=== Special constructs
[[prozignore]]
===== prozignore
==== prozignore
Sometimes it is not desired to check properties of some variables. E.g.
ProZ checks if the square function in 2.3.a is a total function by
......@@ -236,7 +237,7 @@ It is also possible to append these lines to the "fuzzlib" in the fuzz
distribution.
[[translation-to-b]]
===== Translation to B
==== Translation to B
You can inspect the result of the translation process with "Show
internal representation" in the _Debug_ menu. Please note that the
......@@ -248,7 +249,7 @@ shown B machine is normally not syntactically correct because of
* lack of support from the pretty printer for every construct
[[known-limitations]]
==== Known Limitations
=== Known Limitations
* Generic definitions are not supported yet.
* Miscellaneous unsupported constructs
......@@ -257,22 +258,22 @@ shown B machine is normally not syntactically correct because of
* The error messages are not very helpful yet.
[[summary-of-supported-operators]]
==== Summary of Supported Operators
=== Summary of Supported Operators
....
=== Logical predicates:
== Logical predicates:
P \land Q conjunction
P \lor Q disjunction
P \implies Q implication
P \iff Q equivalence
\lnot P negation
=== Quantifiers:
== Quantifiers:
\forall x:T | P @ Q universal quantification (P => Q)
\exists x:T | P @ Q existential quantification (P & Q)
\exists_1 x:T | P @ Q exactly one existential quantification
=== Sets:
== Sets:
\emptyset empty set
\{E,F\} set extension
\{~x:S | P~\} set comprehension
......@@ -288,13 +289,13 @@ shown B machine is normally not syntactically correct because of
\bigcup A generalized union of sets of sets
\bigcap A generalized intersection of sets of sets
=== Pairs:
== Pairs:
E \mapsto F pair
S \cross T Cartesian product
first E first part of pair
second E second part of pair
=== Numbers:
== Numbers:
\nat Natural numbers
\num Integers
\nat_1 Positive natural numbers
......@@ -314,7 +315,7 @@ shown B machine is normally not syntactically correct because of
**: modulo of negative numbers not supported
=== Functions:
== Functions:
S \rel T relations
S \pfun T partial functions from S to T
S \fun T total functions from S to T
......@@ -331,7 +332,7 @@ shown B machine is normally not syntactically correct because of
R \oplus Q overriding
R \plus transitive closure
=== Sequences:
== Sequences:
\langle E,... \rangle explicit sequence
\seq S sequences over S
\seq_1 S non-empty sequences
......
[[tla]]
== TLA
= TLA
As of version 1.3.5, ProB supports
http://research.microsoft.com/en-us/um/people/lamport/tla/tla.html[TLA+].
[[using-prob-for-animation-and-model-checking-of-tla-specifications]]
=== Using ProB for Animation and Model Checking of TLA+ specifications
== Using ProB for Animation and Model Checking of TLA+ specifications
The http://nightly.cobra.cs.uni-duesseldorf.de/tcl/[latest version of
ProB] uses the translator TLA2B, which translates the non temporal part
......@@ -32,7 +33,7 @@ also supports TLA syntax and you can experiment with its predicate and
expression evaluation capabilities.
[[tla2b]]
=== TLA2B
== TLA2B
The parser and semantic analyzer
http://research.microsoft.com/en-us/um/people/lamport/tla/sany.html[SANY]
......@@ -63,7 +64,7 @@ under the ASSUME clause. TLA2B supports furthermore overriding of a
constant or definition by another definition in the configuration file.
[[supported-tla-syntax]]
=== Supported TLA+ syntax
== Supported TLA+ syntax
....
Logic
......@@ -183,14 +184,14 @@ foo == ...
Init == ...
Next == ...
Spec == ...
=====================
====================
....
Temporal formulas and unused definitions are ignored by TLA2B (they are
also ignored by the type inference algorithm).
[[limitations-of-the-translation]]
=== Limitations of the translation
== Limitations of the translation
* due to the strict type system of the B method there are several
restrictions to TLA+ modules.
......@@ -202,7 +203,7 @@ the tuple must have the same type
operator with arguments as argument (e.g.: `foo(bar(_),p)`)
[[tla-actions]]
=== TLA+ Actions
== TLA+ Actions
'''''
......@@ -216,7 +217,7 @@ by ProB are not necessarily identical with the actions determined by
TLC.
[[understanding-the-type-checker]]
=== Understanding the type checker
== Understanding the type checker
Corresponding B types to TLA+ data values (let type(e) be the type of
the expression e):
......
:leveloffset: -1
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment