(Created page with ' Category:User Manual As of version 1.3, ProB contains a much improved parser which tries be compliant with Atelier B as much as possible. == Atelier B Plugin == There is…') |
|||
Line 14: | Line 14: | ||
=== Extra Features of ProB === | === Extra Features of ProB === | ||
* Identifiers: ProB also allows identifiers consisting of a single letter. | |||
* Typing: | * Typing: | ||
** ProB makes use of a unification-based type inference algorithm. As such, typing information can not only flow from left-to-right inside a formula, but also from left-to-right. For example, < | ** ProB makes use of a unification-based type inference algorithm. As such, typing information can not only flow from left-to-right inside a formula, but also from left-to-right. For example, <tt>xx<:yy & yy<:NAT</tt> is sufficient to type both <tt>xx</tt> and <tt>yy</tt> in ProB. | ||
** Similar to Rodin, ProB extracts typing information from all predicates. As such, < | ** Similar to Rodin, ProB extracts typing information from all predicates. As such, <tt>xx/:{1,2}</tt> is sufficient to type <tt>xx</tt>. | ||
* DEFINITIONS: the definitions and its arguments are type checked by ProB. We believe this to be an important feature for a formal method language. However, as such, every DEFINITION must be either a predicate, an expression or a substitution. You '''cannot''' use, e.g., lists of identifiers as a definition. | |||
=== Limitations === | === Limitations === |
As of version 1.3, ProB contains a much improved parser which tries be compliant with Atelier B as much as possible.
There is also a plugin for Atelier B, in order to use the standalone Tcl/Tk Version on Atelier B projects.
ProB requires all deferred sets to be given a finite cardinality. If no cardinality is specified a default size will be used. Also, mathematical integers will only be enumerated within MININT to MAXINT.
Other general limitations are:
Note, however, that the transitive closure operator closure1 is fully supported, and hence one can translate an expression closure(e), where e is a binary relation over some domain d, into the expression closure1(e) \/ id(d).
See the page Using ProB with Atelier B for more details.
It is possible to use multiple B machines with ProB. However, ProB may not enforce all of the classical B visibility rules (although we try to). As far as the visibility rules are concerned, it is thus a good idea to check the machines in another B tool, such as Atelier B or the B-Toolkit.
While refinements are supported, the preconditions of operations are not propagated down to refinement machines. This means that you should rewrite the preconditions of operations (and reformulate them in terms of the variables of the refinement machine, if necessary). Also, the refinement checker does yet check the gluing invariant.