Verification View

The Verification View provides 3 different methods to test a machine:

In each tab you can add multiple tests to check you currently selected machine and interrupt the checking process by pressing the "Cancel" button.

Modelchecking

Modelchecking

By pressing the plus button you can add several model checking variants. The following view will be shown:

Modelchecking Stage

Select one of the search strategies (breadth first, depth first or a mix of both) and the checkboxes containing different possible errors like deadlocks to be checked for. By pushing the "Model Check" button your selected variant will be added to the list shown at the top of the Modelchecking Tab.

LTL Verifications

LTL

By pressing the "Add LTL Formula" or "Add LTL Pattern" buttons an editor for each respectively will be opened and you can add LTL formulas or patterns to the lists to be checked for.

Summary of LTL Syntax supported by ProB

Setting Fairness Constraints

Summary of LTL Patterns

    def `<name>` ( `<parameters>` ):
        `<body>`

The parameters are separated by a comma. Each parameter is of the form <identifier> : <type> The body contains statements such as definition or assignment of variables as well as loops. Patterns can be overloaded.

Remark: Pattern Invocations do not depend on the order of the definitions of the used patterns. So patterns can be invocated before they are defined. Patterns can only be defined in the global scope. It is not possible to define patterns within other patterns.

    count `<identifier>`: `<start>` `<up/down>` to `<end>`:
        `<body>`
    end

The body must at least define or assign a variable.

A sequence contains many formulae that must be true in different states. It is not required that the states must come one after another. must at least contain two formulae.

( <formulae> without <condition> ) <identifier> without <condition>

The first use case extends the definition of a sequence by an additional condition. The second use case requires to be a name of a variable with the datatype seq. The sequence stored in the variable are used to define a new sequence where the condition is true.

is a variable of the type seq or a definition of a sequence. Invoking a sequence returns a LTL formula.

before(<right endpoint>, <property>) after(<left endpoint>, <property>) between(<left endpoint>, <right endpoint>, <property>) after_until(<left endpoint>, <right endpoint>, <property>)

The endpoints and properties must be regular LTL formulae. The return value of a scope is a regular LTL formula where the given conditions are true.

Symbolic Checking

Symbolic Checking

By pressing the plus button you can add several symbolic checking variants. The following view will be shown:

Add SC

The dropdown menu allows you to select the type of check. Some variants of the symbolic checking might need additional parameters (e.g. Invariant needs an operation).