Skip to content
Snippets Groups Projects
Commit b72bf27a authored by dgelessus's avatar dgelessus
Browse files

Remove Validation section whose content can be found on the wiki

parent 53de0a44
Branches
No related tags found
No related merge requests found
[[prob-validation-methods]]
= ProB Validation Methods
ProB offers various validation techniques:
* <<consistency-checking,Consistency Checking (Finding Invariant
Violations using the Model Checker)>>
* <<constraint-based-checking,Constraint Based Checking>>
* <<refinement-checking,Refinement Checking>>
* <<ltl-model-checking,LTL Model Checking>>
* <<bounded-model-checking,Bounded Model Checking>>
Here we want to describe the advantages and disadvantages of the various
methods.
.__Comparing ProB Validation Techniques__
[cols=",,,,",options="header",]
|=======================================================================
|Question |Model Checking |LTL Model Checking |CBC Checking |Bounded
Model Checking
|Can find Invariant Violations ? |yes |yes (`G{INV}`) |yes |yes
|Only reachable counter-examples from initial state? |yes |yes |no |yes
|Search Technique for counter-examples? |mixed df/bf, df, bf
|depth-first (df) |length 1 |breadth-first (bf)
|Can deal with large branching factor? |no |no |yes |yes
|Can find deep counter-examples? |yes |yes |n/a (length 1) |no
|Can find deadlocks ? |yes |yes (`G not(deadlock)`) |yes |not yet
|Can find assertion violations ? |yes |(`G{ASS}`) |static |no
|Can confirm absence of errors ? |finite statespace |finite statespace
|invariant strong enough |bound on trace length
|=======================================================================
[[refinement-checking]]
= Refinement Checking
ProB can be used for refinement checking
of B, Z and CSP specifications. Below we first discuss refinement
checking for B machines. There is a tutorial on checking CSP assertions
in ProB which can be viewed
http://stups.hhu.de/ProB/w/Checking_CSP_Assertions[here].
[[what-kind-of-refinement-is-checked]]
== What kind of refinement is checked?
ProB checks trace refinement. In other words, it checks whether every
trace (consisting of executed operations with their parameter values and
return values) of a refinement machine can also be performed by the
abstract specification.
Hence, ProB does *not* check the gluing invariant. Also, PRE-conditions
are treated as SELECT and PRE-conditions of the abstract machine are
*not* always propagated down to the refinement machine. Hence,
refinement checking has to be used with care for classical B machines,
but it is well suited for EventB-style machines.
[[how-does-it-work-refinement-checking]]
== How does it work?
1. Open the abstract specification, explore its state space (e.g.,using
an exhaustive temporal model check).
2. Use the command "Save state for later refinement check" in the _Verify_ menu.
3. Open the refinement machine.
4. You can now use the "Refinement Check..." command in the _Verify_ menu.
:leveloffset: -1
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment