Überprüfungsansicht

Die Überprüfungsansicht liefert 3 verschiedene Methoden eine Maschine zu testen:

In jedem Tab kann man multiple Tests hizufügen um die derzeitig ausgewählte Mschine zu testen und den Überprüfungsprozess durch Drücken des "Abbrechen"-Buttons unterbrechen.

Model-Checking

Model-Checking

Durch Dürcken des Plus-Knopfes kann man diverse Model-Checking-Varianten hinzufügen. Die folgende Ansicht wird gezeigt:

Model-Checking-Fenster

Wählen Sie eine der Suchstrategien (Gemischte Breiten-/Tiefensuche, Breitensuche oder Tiefensuche) und die Checkboxen, die verschiedene mögliche Fehler wie Deadlocks enthalten, um diese zu checken. Durch Drücken des "Model-Check"-Buttons wird die von Ihnen gewählte Variante zur Liste, die oben im Model-Checking-Tab angezeigt wird, hinzugefügt.

LTL-Überprüfung

LTL

Durch Drücken von "LTL-Formel hinzufügen" oder "LTL-Pattern hinzufügen" wird ein Editor für das jeweilige geöffnet und man kann LTL-Formeln oder -Patterns zu den Listen hinzufügen, um diese zu checken.

Zusammenfassung der von ProB unterstützten LTL Syntax

Fairness Constraints

Zusammenfassung der von ProB unterstützten LTL Syntax für Muster

    def <Name> ( <Parameterliste> ):
        <Rumpf>

Hierbei enthält die Parameterliste Parameter von der Form <Bezeichner> : <Typ-Bezeichner>, wobei die Parameter durch Kommata getrennt sind. Der Rumpf kann Variablen definieren und zuweisen und Schleifen enthalten. Das Überladen von Mustern ist erlaubt.

Bemerkung: Musteraufrufe sind unabhängig von der Reihenfolge der Definition. D.h. ein Musteraufruf ist möglich bevor ein Muster definiert worden ist. Mustern können nur in dem globalen Scope definiert werden. Es ist also nicht möglich Mustern innerhalb von Mustern zu definieren.

    count <Bezeichner>: <Startwert> <up/down> to <Endwert>:
        <Rumpf>
    end

Der Rumpf muss mindestens eine Variable definieren oder zuweisen.

Eine Sequenz ist eine Abfolge von mehreren verschiedenen Formeln, die in unterschiedlichen Zuständen gelten. Dabei müssen die Zustände nicht direkt aufeinander folgen. Die <Formel-Liste> muss aus mindestens zwei Formeln bestehen

( <Formel-Liste> without <Bedingung> ) <Bezeichner> without <Bedingung>

Die erste Schreibweise ist eine Erweiterung der einfachen Sequenz-Definition um die Zusatzbedingung. Bei der zweiten Schreibweise ist der <Bezeichner> der Name einer Variablen mit Datentyp seq. Die Sequenz, die in der Variablen gespeichert ist, wird hier verwendet um eine neue Sequenz mit der Zusatzbedingung zu definieren.

Hierbei ist <Argument> eine Sequenzvariable oder eine Sequenz-Definition. Der Aufruf gibt eine gültige LTL Formel zurück.

before(<Rechter Begrenzer>, <Eigenschaft>) after(<Linker Begrenzer>, <Eigenschaft>) between(<Linker Begrenzer>, <Rechter Begrenzer>, <Eigenschaft>) after_until(<Linker Begrenzer>, <Rechter Begrenzer>, <Eigenschaft>)

Die Begrenzer- und Eigenschafts-Formeln müssen jeweils gültige LTL Formeln sein. Der Rückgabewert der einzelnen Gültigkeitsbereiche ist jeweils eine gültige LTL Formel, die die angegebene Eigenschaft im jeweiligen Bereich repräsentiert.

Symbolic Checking

Symbolic Checking

Durch Drücken des Plus-Knopfes kann man verschiedene Symbolic Checking-Varianten hinzufügen. Die folgende Ansicht wird angezeigt:

SC hinzufügen

Das Dropdown-Menü erlaubt es den Typ des Tests auszuwählen. Einige Varianten des Symbolic Checkings verlangen nach zusätzlichen Parametern (z.B. braucht Invariant eine Operation).