Westfälische Wilhelms-Universität Münster Ausarbeitung Temporale Logiken: CTL und LTL im Rahmen des Seminars Formale Spezifikation im WS 2005/06 Thorsten Bruns Themensteller: Prof. Dr. Herbert Kuchen Betreuer: (Prof. Dr. Herbert Kuchen) Institut für Wirtschaftsinformatik Praktische Informatik in der Wirtschaft Inhaltsverzeichnis 1 Einleitung................................................................................................................... 1 2 Grundlagen der Logik................................................................................................ 2 3 2.1 Aussagenlogik................................................................................................... 2 2.2 Prädikatenlogik ................................................................................................. 3 2.3 Entscheidbarkeit von Logiken .......................................................................... 6 Temporale Logiken.................................................................................................... 7 3.1 Erweiterung der Aussagen- oder Prädikatenlogik ............................................ 7 3.2 Klassifikation temporaler Logiken ................................................................... 7 3.3 Semantik verschiedener Zeitmodelle................................................................ 8 3.4 LTL ................................................................................................................... 9 3.4.1 3.4.2 3.4.3 3.5 3.5.1 3.5.2 3.5.3 3.5.4 3.5.5 4 Syntax von LTL ............................................................................................ 9 Semantik von LTL ...................................................................................... 10 Varianten von LTL ..................................................................................... 12 CTL................................................................................................................. 12 Syntax von CTL.......................................................................................... 12 Semantik von CTL...................................................................................... 13 Semantische Äquivalenzen ......................................................................... 15 CTL Model Checking ................................................................................. 15 Anwendung des Markierungsalgorithmus .................................................. 17 3.6 Fixpunktcharakterisierung .............................................................................. 18 3.7 Theoretische Aspekte temporaler Logiken ..................................................... 19 Zusammenfassung ................................................................................................... 20 Literaturverzeichnis ........................................................................................................ 21 II Kapitel 1: Einleitung 1 Einleitung Einen Problembereich der Informatik stellt die Qualitätssicherung von Hard- und Software dar. Dieses Problem kann einerseits durch Testen und andererseits durch Beweise gelöst werden. Das Testen lässt sich größtenteils automatisieren, es kann aber nicht sichergestellt werden, dass alle möglichen Fälle berücksichtigt werden. Die Alternative zum Testen sind Beweise. Hierbei wird zwischen Theorembeweisen und Model Checkern unterschieden. Theorembeweise müssen interaktiv durchgeführt werden und erfordern viel Zeit, daher sind sie weniger beliebt. Model Checker bieten die Möglichkeit, Eigenschaften von Programmen vollständig automatisiert zu prüfen. Dazu muss das zu prüfende Soft- oder Hardwaresystem als formales Modell mit endlich vielen Zuständen darstellbar sein. Als weiteres wird eine formale Spezifikation benötigt, die festlegt, welche Eigenschaften das Programm erfüllen soll. Die Aufgabe eines Model Checkers besteht darin, zu prüfen, ob die Implementierung der Spezifikation genügt. Bei den zu prüfenden Systemen handelt es sich um sogenannte reaktive Systeme, die in ständiger Interaktion mit Ihrer Umgebung stehen, auf die Signale aus ihrer Umgebung reagieren und im Normalfall nie terminieren, wie z. B. Betriebssysteme, Netzwerkprotokolle oder Prozesssteuerungen. Diese Systeme lassen sich in endlichen Modellen darstellen. Die Eigenschaften, die sich prüfen lassen, sind z. B. Lebendigkeit, Deadlockfreiheit, Fairness und Sicherheit. Das Ziel dieser Arbeit ist es, die Möglichkeiten der Darstellung einer formalen Spezifikation durch temporale Logiken darzustellen und aufzuzeigen, wie diese Logiken für das Model Checking eingesetzt werden können. Die Arbeit gliedert sich in ein Grundlagen- und ein Hauptkapitel. Im ersten wird ein kurzer Überblick über die Aussagen- und die Prädikatenlogik gegeben, da diese als Voraussetzung für temporale Logiken benötigt werden. Im nächsten Kapitel werden die beiden temporalen Logiken LTL und CTL genauer untersucht. 1 Kapitel 2: Grundlagen der Logik 2 Grundlagen der Logik 2.1 Aussagenlogik Die Aussagenlogik beschäftigt sich mit der Untersuchung des Wahrheitswertes von Aussagen. Diese können entweder wahr oder falsch sein und sind somit zweiwertig. Die formale Darstellung von Aussagen geschieht in einer formalen Logik, der Aussagenlogik. Die Wahrheitswerte von Aussagen sind hier statisch, d. h. sie gelten dauerhaft und können sich nicht dynamisch ändern. Die Syntax der Aussagenlogik ist nach [Sc00] folgendermaßen definiert: Formeln bestehen aus atomaren Formeln der Form Ai mit i = 1,2,3,K . Formeln werden durch folgenden induktiven Prozess definiert: 1. Alle atomaren Formeln Ai sind Formeln. 2. Für alle Formeln F und G sind (F ∧ G ) und (F ∨ G ) Formeln. 3. Für jede Formel F ist ¬F eine Formel. Eine Formel der Form (F ∧ G ) wird als Konjunktion bezeichnet, eine Formel der Form (F ∨ G ) als Disjunktion und ¬F als Negation. Nachfolgend werden einige Umformungsregeln aufgestellt. Dabei werden zwei neue Symbole, → und ↔ , sowie die boolschen Konstanten true und false eingeführt. Hierbei bezeichnen A und B beliebige aussagenlogische Formeln: (A ∨ B) = ¬(¬A ∧ ¬B ) (A → B) = (¬A ∨ B ) (A ↔ B) = (( A ∧ B ) ∨ (¬A ∧ ¬B )) true = A ∨ ¬A false = ¬true Die Semantik der Aussagenlogik ist nach [Sc00] wie folgt definiert: Jede atomare Formel besitzt eine Belegung mit einem Wahrheitswert aus {0,1} . Eine Belegung ist eine Funktion A : D → {0,1} mit der Menge D , die eine Teilmenge der atomaren Formeln ist. A wird zu  : E → {0,1} erweitert, wobei E die Menge aller 2 Kapitel 2: Grundlagen der Logik Formeln ist, die sich aus der Menge D der atomaren Formeln zusammensetzt. So lässt sich jeder beliebigen Formel, die nur aus atomaren Formeln zusammengesetzt ist, ein Wahrheitswert zuordnen. 1. Für jede atomare Formel Ai ∈ D gilt  ( Ai ) = A( Ai ) mit i = 1,2,3,K . 2.  ((F ∧ G )) = 1 , falls  (F ) = 1 und  (G ) = 1 , sonst 0. 3.  ((F ∨ G )) = 1 , falls  (F ) = 1 oder  (G ) = 1 , sonst 0. 4.  (¬F ) = 1 , falls  (F ) = 0 , sonst 0. Zur Berechnung des Wahrheitswertes aussagenlogischer Formeln können diese in Verknüpfungstabellen dargestellt werden. Anhand dieser Tabellen ist ersichtlich, dass die Anzahl aller möglicher Wertebelegungen für einen Ausdruck exponentiell in Bezug auf die Anzahl der in einem Ausdruck enthaltenen atomaren Formeln wächst. Im folgenden werden weitere Begriffe nach [Sc00] definiert: Sei F eine Formel und A eine Belegung. Dann heißt A zu F passend, wenn A für alle in F vorkommenden atomaren Formeln definiert ist. Falls A zu F passend ist und A(F ) = 1 gilt, so wird A ⊨ F geschrieben. F gilt unter der Belegung von A bzw. A ist ein Modell für F . Umgekehrt ist A kein Modell für F , falls A(F ) = 0 , geschrieben A ⊭ F . Jede Belegung von Wahrheitswerten, die der Formel F den Wert 1 zuordnet, wird somit als Modell bezeichnet. Eine Formel heißt erfüllbar, falls F mindestens ein Modell besitzt, sonst heißt F unerfüllbar. Um zu prüfen, ob eine Formel erfüllbar ist, müssen alle möglichen Belegungen geprüft werden, ob mindestens eine Belegung für die Formel den Wert 1 ergibt. Eine Formel heißt gültig oder Tautologie, falls jede zu F passende Belegung ein Modell für F ist. In diesem Fall wird nur ⊨ F geschrieben. 2.2 Prädikatenlogik Die Prädikatenlogik ist eine Erweiterung der Aussagenlogik um Quantoren, Funktionssowie Prädikatsymbole. Hiermit lassen sich Aussagen über Objekte machen, die durch Variablen repräsentiert werden, z. B., dass Objekte gewisse Eigenschaften haben oder mit anderen Objekten in Beziehung stehen. 3 Kapitel 2: Grundlagen der Logik Die Syntax prädikatenlogischer Formeln ist nach [Sc00] folgendermaßen definiert: Zur Definition prädikatenlogischer Formeln werden Variablen, Prädikat- und Funktionssymbole eingeführt. Eine Variable hat die Form xi mit i = 1,2,3,K . Ein Prädikatsymbol hat die Form Pi k mit i = 1,2,3,K und k = 0,1,2,3,K . Ein Funktionssymbol hat die Form f i k mit i = 1,2,3,K und k = 0,1,2,3,K . Hierbei stellt i den Index und k die Stelligkeit der Prädikate und Funktionen dar. Mit Variablen und Funktionen werden Terme gebildet. Diese sind wie folgt definiert: 1. Jede Variable xi mit i = 1,2,3,K ist ein Term. 2. Ist f ein Funktionssymbol mit der Stelligkeit k und sind t1 ,..., t k Terme, so ist auch f (t1 ,..., t k ) ein Term. Funktionen der Stelligkeit null werden als Konstanten bezeichnet und ohne Klammern dargestellt. Prädikatenlogische Formeln sind definiert: 1. Ist P ein Prädikatsymbol der Stelligkeit k und sind t1 ,..., t k Terme, so ist P(t1 ,..., t k ) eine Formel. 2. Für jede Formel F ist auch ¬F eine Formel. 3. Für alle Formeln F und G sind auch (F ∧ G ) und (F ∨ G ) Formeln. 4. Ist x eine Variable und F eine Formel, so sind auch ∃xF und ∀xF Formeln. Variablen werden in freie und gebundene unterteilt. Kommt eine Variable x in einer Teilformel G der Formeln ∃xG oder ∀xG vor, so wird diese Variable als gebunden bezeichnet, anderenfalls als frei. Eine Formel wird nur dann als Aussage bezeichnet, wenn diese ausschließlich gebundene Variablen enthält. Das Symbol ∃ wird als Existenzquantor und das Symbol ∀ als Allquantor bezeichnet. Die Semantik prädikatenlogischer Ausdrücke ist nach [Sc00] folgendermaßen definiert: Zur Definition der Semantik der Prädikatenlogik wird zunächst eine Struktur A = (U A , I A ) benötigt. U A bezeichnet eine beliebige nichtleere Menge, die auch als Grundmenge von A bezeichnet wird. Weiter ist I A eine Abbildung, die • jedem k-stelligen Prädikatsymbol P ein k-stelliges Prädikat über U A zuordnet, • jedem k-stelligen Funktionssymbol f eine k-stellige Funktion auf U A zuordnet 4 Kapitel 2: Grundlagen der Logik • und jeder Variablen x ein Element der Grundmenge U A zuordnet. Sie F eine Formel und A = (U A , I A ) eine Struktur. A heißt zu F passend, falls I A für alle in F vorkommenden Prädikat- und Funktionssymbole sowie freien Variablen definiert ist. Sei F eine Formel und A eine zu F passende Struktur. Für jeden Term t , der sich aus den Bestandteilen von F bilden lässt, wird der Wert von t in der Struktur A , bezeichnet mit A(t ) , wie folgt definiert: 1. Falls t eine Variable t = x ist, so gilt A(t ) = x A . 2. Falls t A(t ) = f ein A k-stelliges Funktionssymbol t = f (t1 ,..., t k ) ist, so gilt ( A(t1 ),..., A(t k )) . Bei nullstelligen Funktionssymbolen t = a gilt A(t ) = a A . Der Wahrheitswert einer Formel F wird folgendermaßen definiert: 1. Hat F die Form F = P (t1 ,...t k ) mit den Termen t1 ,..., t k und dem k-stelligen Prädikatsymbol P , so ist A(F ) = 1 , falls ( A(t1 ),..., A(t k )) ∈ P A , sonst 0. 2. Hat F die Form F = ¬G , so ist A(F ) = 1 , falls A(G ) = 0 , sonst 0. 3. Hat F die Form F = (G ∧ H ) , so ist A(F ) = 1 , falls A(G ) = 1 und A(H ) = 1 , sonst 0. 4. Hat F die Form F = (G ∨ H ) , so ist A(F ) = 1 , falls A(G ) = 1 oder A(H ) = 1 , sonst 0. 5. Hat F die Form F = ∀xG , so ist A(F ) = 1 , falls für alle d ∈ U A gilt: A[ x / d ] (G ) = 1 , sonst 0. 6. Hat F die Form F = ∃xG , so ist A(F ) = 1 , falls es ein d ∈ U A gibt mit: A[ x / d ] (G ) = 1 , sonst 0. Die Modell-, Erfüllbarkeits- und Gültigkeitsdefinitionen gelten hier analog zur Aussagenlogik. Die Prädikatenlogik ist ausdrucksstärker als die Aussagenlogik, allerdings kann auch hiermit nicht jede mathematische Aussage formuliert werden. Die Quantoren lassen sich in der dargestellten Form nur auf Variablen anwenden, nicht aber auf Funktions- 5 Kapitel 2: Grundlagen der Logik symbole. Daher wird diese Logik Prädikatenlogik erster Stufe genannt. Die zweite Stufe umfasst zusätzlich die Anwendung der Quantoren auf Funktionssymbole. 2.3 Entscheidbarkeit von Logiken Für Anwendungszwecke ist es wichtig zu wissen, ob eine Logik entscheidbar ist oder nicht. Der Ausdruck entscheidbar bedeutet, ob sich ein Algorithmus finden lässt, der in endlicher Zeit ausgibt, ob es zu einer beliebigen Formel einer gegebenen Logik ein Modell, d. h. mindestens eine gültige Belegung, gibt oder nicht. Wichtig ist hierbei, dass so ein Algorithmus nicht nur positive, sondern auch negative Ergebnisse ausgibt und dabei in jedem Fall stoppt. Für aussagenlogische Ausdrücke ist diese Überlegung einfach. Das Aufschreiben aller möglichen Belegungen ist bereits ein entsprechender Algorithmus. Es gibt in einer aussagenlogischen Formel mit n atomaren Formeln immer genau 2 n mögliche Belegungen, die überprüft werden müssen, da jede atomare Formel genau zwei Wahrheitswerte, 0 oder 1, belegen kann. Daraus folgt, dass die Aussagenlogik entscheidbar ist. In der Prädikatenlogik ist bereits das Gültigkeitsproblem unentscheidbar, d. h. es lässt sich kein Algorithmus finden, der in endlicher Zeit feststellen kann, ob eine Belegung eines beliebigen prädikatenlogischen Ausdrucks wahr oder falsch ist. Daraus lässt sich folgern, dass das Erfüllbarkeitsproblem der Prädikatenlogik ebenfalls unentscheidbar ist, da dieses Problem die Entscheidbarkeit des Gültigkeitsproblems voraussetzt. Das Aufschreiben aller möglichen Belegungen lässt sich nicht auf die Prädikatenlogik übertragen, da hier Strukturen anstatt Belegungen existieren. Diese Strukturen können unendliche Mengen enthalten, die ein vollständiges Aufschreiben verhindern. Dies alleine ist jedoch noch kein Beweis für die Unentscheidbarkeit des Gültigkeitsproblems der Prädikatenlogik. Der Beweis erfolgt, indem dieses Problem auf ein bereits als unentscheidbar bekanntes Problem, das Postsche Korrespondenzproblem, zurückgeführt wird. Dazu muss ein Algorithmus gefunden werden, der in endlicher Zeit jedes beliebige Postsche Korrespondenzproblem K in eine prädikatenlogische Formel FK überführt, so dass K genau dann eine Lösung besitzt, wenn FK gültig ist. Da dieser Beweis einen tieferen Einstieg in die Berechenbarkeitstheorie erfordert, wird dieser hier ausgelassen. Der Beweis kann in [Sc00, S.71-73] nachgelesen werden. 6 Kapitel 3: Temporale Logiken 3 Temporale Logiken 3.1 Erweiterung der Aussagen- oder Prädikatenlogik Temporale Logiken sind Erweiterungen der Aussagen- oder der Prädikatenlogik. Diese Logiken ermöglichen Aussagen über zeitliche Veränderungen. In der Aussagenlogik sind Aussagen entweder immer oder nie wahr. Bei temporalen Logiken ist der Wahrheitswert einer Aussage zusätzlich vom aktuellen Zeitpunkt abhängig, da es möglich ist, sowohl Aussagen über die Zukunft als auch über die Vergangenheit zu formulieren. Mit der Erweiterung der Aussagenlogik um einen Zeitoperator für die Zukunft und einen für die Vergangenheit lassen sich bereits beliebig komplexe Zeitstrukturen darstellen, die sprachlich nicht mehr ausgedrückt werden können. Der Ursprung der temporalen Logik entstammt der Philosophie, daher existiert ein enger Bezug zur Repräsentation der Zeitformen einer natürlichen Sprache durch eine formale Logik [Bu84]. 3.2 Klassifikation temporaler Logiken Temporale Logiken lassen sich nach [Em90] auf verschiedene Arten klassifizieren. Temporale Logiken können: • Auf der Aussagen- oder der Prädikatenlogik basieren. Dazu erweitert eine temporale Logik entweder die Aussagen- oder die Prädikatenlogik um neue Operatoren. • Ein lineares oder ein verzweigtes Zeitmodell besitzen. Die Zeit kann entweder eindeutig oder nicht eindeutig modelliert werden. Ist die Zeit eindeutig, so existiert zu jedem Zeitpunkt nur ein möglicher unmittelbarer Nachfolger in der Zukunft. Bei Verwendung eines verzweigten Zeitmodells können zu jedem Zeitpunkt mehrere unmittelbare Nachfolger existieren. Dabei ist festzuhalten, dass dieser Nichtdeterminismus nur für die Zukunft, nicht aber für die Vergangenheit gilt. Die Vergangenheit ist in jedem Zeitpunkt eindeutig. • Die Zeit diskret oder kontinuierlich modellieren. Die Zeit kann als Folge von Zeitpunkten angesehen werden, so dass bei Verwendung eines linearen Zeitmodells jeder Zeitpunkt genau einen Nachfolger hat und bei einem verzweigten Zeitmodell jeder Zeitpunkt abzählbar viele Nachfolger besitzt. Hier 7 Kapitel 3: Temporale Logiken kann von jedem Zeitpunkt zum nächsten gesprungen werden. Alternativ kann die Zeit auch kontinuierlich sein, so dass es zu keinem Zeitpunkt einen unmittelbar nachfolgenden Zeitpunkt gibt. Hier ist nur ein Vergleich auf früher oder später zwischen zwei Zeitpunkten möglich. Da in Programmen nur diskrete Berechnungen möglich sind, wird die Zeit in der Regel als diskret angesehen. • Zeitpunkte oder Zeiträume betrachten. Die Zeit kann als Folge aufeinanderfolgender Zeitpunkte oder auch als Folge von Intervallen betrachtet werden. • Die Vergangenheit oder die Zukunft berücksichtigen. Es gibt sowohl Operatoren für die Zukunft als auch für die Vergangenheit. Temporale Logiken, die zur Programmverifikation eingesetzt werden, besitzen nur Operatoren für die Zukunft, da jedes Programm einen definierten Startzeitpunkt besitzt und die Betrachtung der Vergangenheit somit irrelevant ist. Der zusätzliche Operator für die Vergangenheit bringt außerdem keine Erweiterung der Ausdrucksstärke. Bis auf den letzten Punkt schließen sich alle Alternativen gegenseitig aus. Eine temporale Logik kann beim letzten Punkt beide Fälle berücksichtigen. Die hier dargestellten Kombinationen erlauben, eine Vielzahl möglicher temporaler Logiken zu definieren. Im folgenden werden zwei Alternativen genauer untersucht, die sich hauptsächlich im verwendeten Zeitmodell unterscheiden. 3.3 Semantik verschiedener Zeitmodelle Zur späteren Definition der Semantik einer temporalen Logik wird die Bedeutung der verschiedenen Zeitmodelle benötigt. Dazu müssen die verschiedenen Zeitmodelle definiert werden. Im Falle der Modellierung diskreter Systeme, wie eines Soft- oder Hardwaresystems, muss auch die Zeit diskret modelliert werden. Daher existiert in diesen Fällen eine Menge von Zuständen, die den zeitlichen Ablauf repräsentieren. Zudem wird auf dieser Menge von Zuständen wird eine zeitliche Ordnung benötigt, die festlegt, wie sich die Zustände ordnen lassen. Dazu wird ein Tupel gebildet, das in diesem Zusammenhang Rahmen genannt wird. Dieser Rahmen enthält die Menge der Zustände und die zugehörige Ordnungsrelation. Wird eine lineare Zeitstruktur verwendet, so lässt sich jedem Zustand eindeutig eine Zahl aus der Menge der natürlichen Zahlen zuordnen. Die auf den natürlichen Zahlen basierende Ordnungsrelation ist total. Dies bedeutet auf die Menge der Zustände 8 Kapitel 3: Temporale Logiken übertragen, dass für zwei beliebige Zustände s und t gilt: Entweder kommt s zeitlich vor t , s und t sind gleich oder s kommt nach t . Bei Verwendung einer verzweigten Zeitstruktur ist die Zukunft nicht eindeutig definiert. Die hier verwendete Ordnungsrelation muss einer Baumordnung entsprechen. Für jeden Zustand, der mehrere unmittelbare Nachfolger enthält, steht nicht eindeutig fest, welcher Zustand danach als erstes eintritt. Da die Verzweigung nur in die Zukunft gerichtet ist, besitzen die Zustände der Vergangenheit eine lineare Ordnungsrelation. 3.4 LTL LTL steht für linear temporal logic. Diese Logik zeichnet sich durch die Verwendung einer linearen Zeitstruktur aus. In [Em90] werden folgende drei grundlegende Annahmen für LTL getroffen: 1. Die Zeit ist diskret. 2. Es gibt einen Startzustand, der keine Vorgänger besitzt. 3. Die Zukunft ist unendlich. Die Annahme einer diskreten Zeit ist darauf zurückzuführen, dass heutige Computer digitale Geräte sind, die nur diskrete Berechnungen ermöglichen. Somit läuft auch die Zeit diskret ab, indem jeder Zeitpunkt als ein Zustand betrachtet wird. Jedes Programm beginnt in einem Startzustand ohne vorherige Informationen, dies rechtfertigt die zweite Annahme. Die letzte Annahme ist damit zu begründen, dass die zu untersuchenden Programme im Idealfall nie stoppen und unendlich lange laufen sollen. Zu LTL gibt es Varianten, die entweder auf der Aussagenlogik oder der Prädikatenlogik basieren. Im folgenden wird nur die Erweiterung der Aussagenlogik untersucht. Diese Logik wird in [Em90] als PLTL bezeichnet. 3.4.1 Syntax von LTL Die Syntax von LTL erweitert die Syntax der Aussagenlogik um vier weitere Operatoren. Sie wird mittels Backus Naur Form (BNF) nach [HR01] folgendermaßen definiert: p ::= P | (¬p ) | ( p ∧ p ) | ( p ∨ p ) | ( p → p ) | ( p ↔ p ) | Xp | Fp | Gp | ( p U p ) P bezeichnet hier eine beliebig atomare aussagenlogische Formel. 9 Kapitel 3: Temporale Logiken Die höchste Bindung besitzen die unären Operatoren ¬ , X , F und G . Danach folgen zuerst das ∧ und anschließend das ∨ . Als letztes kommen → , ↔ sowie U . Zusätzlich zu den Umformungsmöglichkeiten der Aussagenlogik können in LTL folgende Umformungen durchgeführt werden: Fp = (true U p ) Gp = ¬F¬p 3.4.2 Semantik von LTL Zur Definition der Semantik von LTL wird neben der Definition des Rahmens der linearen Zeitstruktur eine Auswertungsfunktion benötigt, die jeder Formel in jedem Zustand einen Wahrheitswert zuordnet bzw. jedem Zustand die Menge der gültigen atomaren Aussagen zuweist. Damit wird der Rahmen um eine Funktion erweitet. Die Zeitstruktur in der Verwendung einer temporalen Logik wird als Struktur M = (S , R, L ) definiert. Diese Strukturen werden auch als Kripkestrukturen bezeichnet. S bezeichnet die Menge der Zustände, R die Übergangsrelation R ⊆ S × S über den Zuständen und L : S → Potenzmenge(P ) die Funktion, die jedem Zustand eine Teilmenge der Menge P aller atomaren Aussagen zuweist, die in diesem Zustand gültig sind. Da in LTL nur lineare Zeitstrukturen betrachtet werden, sind Aussagen nicht auf einzelnen Zuständen, sondern auf einem Pfad oder auf Teilpfaden definiert. Im folgenden bedeutet M , π ⊨ p , dass die Formel p im Pfad π = (s 0 , s1 ,....) für die Struktur M gültig ist, M , π i ⊨ p bedeutet, dass die Formel p in einem Teilpfad von π = (s 0 , s1 ,....) beginnend mit dem Zustand si gültig ist. Ist die Struktur klar, so kann das Symbol M weggelassen werden und es wird nur π ⊨ p geschrieben. Die Semantik von LTL ist nach [HR01] folgendermaßen definiert: 1. π ⊨ P gdw. P ∈ L(s 0 ) für eine atomare aussagenlogische Formel P . 2. π ⊨ ¬p gdw. π ⊭ p . 3. π ⊨ ( p ∧ q ) gdw. π ⊨ p und π ⊨ q . 4. π ⊨ Xp gdw. π 1 ⊨ p . 5. π ⊨ Fp gdw. ∃j ≥ 0 für das gilt: π j ⊨ p . 10 Kapitel 3: Temporale Logiken 6. π ⊨ Gp gdw. ∀j ≥ 0 gilt: π j ⊨ p . 7. π ⊨ ( p U q ) gdw. ∃j ≥ 0 für das gilt: π j ⊨ q und ∀0 ≤ k < j gilt: π k ⊨ p . Der Wahrheitswert einer Formel ist immer auf den gegenwärtigen Zeitpunkt bzw. Zustand bezogen. In den nachfolgenden Abbildungen stellt der erste dargestellte Zustand den jeweils aktuellen Zustand dar. Die vollständig ausgefüllten Zustände sind diejenigen, in denen die Aussage p wahr ist. Die Formel Xp ist im aktuellen Zustand wahr, wenn p im nächsten Zustand wahr ist. Die Formel Fp ist im aktuellen Zustand wahr, wenn p in einem beliebigen Zustand in der Zukunft wahr ist. Die Formel Gp ist im aktuellen Zustand wahr, wenn p in jedem Zustand in der Zukunft wahr ist. Die Formel ( p U q ) ist im aktuellen Zustand wahr, wenn p vom aktuellen Zustand an solange wahr ist, bis q wahr wird. In dem schraffierten Zustand ist q wahr, über p wird hierbei keine Aussage mehr getroffen. Eine Formel verhält sich nach [Mc93] wie ein offener Satz mit einem freien Parameter, der den aktuellen Zustand repräsentiert. Da eine Formel aber nicht nur in einem bestimmten Zustand gültig sein muss, steht dieser Parameter für die Menge aller gültigen Zustände. Anders herum wird durch die Festlegung eines Zustandes eine Menge von Formeln definiert, die in diesem Zustand gültig sind. Eine Formel p in LTL ist genau dann erfüllbar, wenn es eine Zeitstruktur M = (S , R, L ) gibt, auf der ein Pfad π definiert ist, so dass M , π ⊨ p gilt. Jede Zeitstruktur, die dies erfüllt, wird somit als Modell für p bezeichnet. Die Formel p heißt gültig genau dann, wenn diese Formel für alle Zeitstrukturen M = (S , R, L ) gilt. In diesem Fall wird nur ⊨ p geschrieben. Die Formel p ist gültig genau dann, wenn ¬p nicht erfüllbar ist. 11 Kapitel 3: Temporale Logiken 3.4.3 Varianten von LTL Es gibt viele Varianten von LTL. Diese betreffen z. B. die Semantik der Operatoren oder die verwendeten Operatoren überhaupt. Zu den hier verwendeten lassen sich noch Operatoren hinzufügen, die Aussagen über die Vergangenheit ermöglichen. Die Semantik der Operatoren lässt sich z. B. auf die Frage hin ändern, ob die Zukunft die Gegenwart mit einschließt oder nicht. Weitere Beispiele von Varianten, welche die Semantik von Operatoren betreffen, können in [Em90] nachgelesen werden. Die zuvor angegebene Logik basiert auf der Aussagenlogik. Eine grundlegende Änderung dieser Logik besteht darin, diese auf der Prädikatenlogik aufzubauen. Bei einer solchen Erweiterung muss die Unentscheidbarkeit der Prädikatenlogik beachtet werden. Da Formeln temporaler Logiken automatisiert auf Gültigkeit überprüft werden sollen, kann diese Erweiterung nur so restriktiv erfolgen, dass die daraus entstehende Logik entscheidbar ist. Diese Erweiterung wird in dieser Arbeit nicht weiter untersucht. 3.5 CTL CTL steht für Computation tree logic. Diese temporale Logik wurde von Clarke und Emerson [CE81] definiert. CTL basiert auf der Aussagenlogik und benutzt eine verzweigte Zeitstruktur. Jeder Zeitpunkt kann bei dieser Zeitstruktur mehrere nachfolgende Zeitpunkte besitzen, d. h. die Zukunft ist nichtdeterministisch. Dieses Zeitmodell besitzt eine baumähnliche Struktur, da sich die Menge aller möglichen Pfade eines Modells als Baum darstellen lässt. Hieraus stammt auch der Name dieser Logik, Berechnungsbaumlogik. CTL ist syntaktisch eng mit LTL verbunden, da es die gleichen temporalen Operatoren benutzt. CTL ist im Vergleich zu LTL aber eine syntaktisch sehr restriktive Logik. Dies schränkt ihre Ausdrucksstärke stark ein. 3.5.1 Syntax von CTL Formeln in CTL enthalten Paare von temporalen Konnektoren, die aus einem Pfadquantor gefolgt von einem temporalen Operator bestehen. Die Pfadquantoren sind die Symbole A und E , die temporalen Operatoren die Symbole X , F , G und U . Diese Konnektoren dürfen in einer syntaktisch korrekten Formel nie getrennt vorkommen. Die Syntax einer Formel in CTL wird in BNF nach [HR01] folgendermaßen definiert: 12 Kapitel 3: Temporale Logiken p ::= P | (¬p ) | ( p ∧ p ) | ( p ∨ p ) | ( p → p ) | ( p ↔ p ) | AXp | EXp | AFp | EFp | AGp | EGp | A( p U p ) | E ( p U p ) P bezeichnet hier eine beliebig atomare aussagenlogische Formel. Die höchste Bindung besitzen die unären Operatoren ¬, AX , EX , AF , EF , AG und EG . Danach folgen ∧ und ∨ . Als letztes kommen → , ↔ sowie AU und EU . Zur eindeutigen Bindung können beliebig zusätzliche Klammern gesetzt werden. Mit obigen Regeln können zu den Umformungsmöglichkeiten der Aussagenlogik folgende weitere Umformungen vorgenommen werden: • AFp ≡ A(true U p ) • EFp ≡ E (true U p ) • AGp ≡ ¬E (true U ¬p ) • EGp ≡ ¬A(true U ¬p ) 3.5.2 Semantik von CTL Zur Definition der Semantik von CTL wird analog zur Definition der Semantik von LTL neben der Definition des Rahmens noch eine Auswertungsfunktion benötigt, die jedem Zustand die Menge der in dem jeweiligen Zustand gültigen atomaren Aussagen zuweist. Der verwendete Rahmen besitzt hier keine lineare, sondern eine verzweigte Zeitstruktur. Die um die Auswertungsfunktion erweiterte Zeitstruktur M = (S , R, L ) enthält die Menge der Zustände S , die Übergangsrelation R ⊆ S × S über diesen Zuständen, die jedem Zustand mindestens einen Nachfolger zuweist, und die Auswertungsfunktion L : S → Potenzmenge(P ) , die jedem Zustand eine Teilmenge der Menge P aller atomaren Aussagen zuweist, die in diesem Zustand gültig sind. Im folgenden bedeutet M , si ⊨ p , dass die Formel p im Zustand si für die Struktur M gültig ist. Ist die Struktur klar, so kann das Symbol M weggelassen werden und es wird nur si ⊨ p geschrieben. Die Semantik von CTL ist wird nach [CE81] über strukturelle Induktion folgendermaßen definiert: 1. s 0 ⊨ P gdw. P ∈ L( s 0 ) , für eine atomare aussagenlogische Formel P . 2. s 0 ⊨ ¬p gdw. s 0 ⊭ p 13 Kapitel 3: Temporale Logiken 3. s 0 ⊨ ( p1 ∧ p 2 ) gdw. s 0 ⊨ p1 und s 0 ⊨ p 2 . 4. s 0 ⊨ AXp gdw. für alle Pfade (s 0 , s1 ,...) gilt: s1 ⊨ p . 5. s 0 ⊨ EXp gdw. für mindestens einen Pfad (s 0 , s1 ,...) gilt: s1 ⊨ p . 6. s 0 ⊨ A( p1 U p 2 ) gdw. für alle Pfade (s 0 , s1 ,...) für mindestens ein i ≥ 0 gilt: si ⊨ p 2 und für alle 0 ≤ j < i gilt: s j ⊨ p1 . 7. s 0 ⊨ E ( p1 U p 2 ) gdw. für mindestens einen Pfad (s 0 , s1 ,...) für mindestens ein i ≥ 0 gilt: si ⊨ p 2 und für alle 0 ≤ j < i gilt: s j ⊨ p1 . Die übrigen Operatoren werden an dieser Stelle nicht explizit definiert, da diese sich über die Umformungsregeln ableiten lassen. Der Pfadquantor A bedeutet, dass eine Aussage für alle Pfade gilt, der Pfadquantor E besagt, dass eine Aussage für mindestens einen Pfad gilt. Die temporalen Operatoren X , F , G und U besitzen dieselbe Bedeutung wie in der Logik LTL. Die folgenden Abbildungen zeigen die Bedeutungen der Formeln grafisch. In den Abbildungen sind diejenigen Zustände ausgefüllt, in denen die Aussage p wahr ist. In den schraffiert dargestellten Zuständen ist die Aussage q wahr. Die Wurzel der abgebildeten Bäume stellt den aktuellen Zustand dar, in dem die jeweilig angegebene Formel wahr ist. Jeder Knoten besitzt hier genau zwei Nachfolger. Dies muss nicht grundsätzlich der Fall sein. Jeder Knoten muss mindestens einen Nachfolger besitzen. Jeder dargestellte Pfad geht unendlich lange weiter. Zur Veranschaulichung ist die verwendete Baumtiefe ausreichend. EXp EFp EGp E(p U q) AXp AFp AGp A(p U q) 14 Kapitel 3: Temporale Logiken 3.5.3 Semantische Äquivalenzen Zwei Formeln p und q in CTL sind genau dann äquivalent, wenn in jedem Zustand eines beliebigen Modells, in dem eine der beiden Formeln erfüllt ist, gleichzeitig auch die andere Formel gilt. Zur vollständigen Ausdrucksstärke genügt es, die Logik CTL über der Menge der Operatoren false , ¬ und ∧ zusammen mit EX , E ( U ) und EG zu definieren. Alle anderen Operatoren lassen sich daraus ableiten. Dafür müssen die folgenden Äquivalenzen bekannt sein: AFp ≡ ¬EG¬p EFp ≡ E (true U p ) AXp ≡ ¬EX¬p AGp ≡ ¬E (true U ¬p ) A( p U q ) ≡ ¬(E (¬q U (¬p ∧ ¬q )) ∨ EG¬q ) Die vollständige Ausdrucksstärke lässt sich auch über andere Operatoren umsetzen. 3.5.4 CTL Model Checking Der Ausgangspunkt des Model Checking ist die Frage, ob in einem gegebenen Modell, das sich in einem bestimmten Zustand befindet, eine gegebene Formel in diesem Zustand wahr ist oder nicht. Die Gleichung M , s ⊨ p wird als ein Berechnungsproblem betrachtet. Alternativ könnte auch nur ein Modell und eine Formel gegeben sein, und es interessiert die Menge der Zustände, für die diese Formel gültig ist. Dieses Problem würde die erste Fragegestellung automatisch mit beantworten. Die zweite Fragestellung lässt sich mit Hilfe des sogenannten Markierungsalgorithmus berechnen. Dieser läuft folgendermaßen ab: Als Eingabe wird ein Modell M und eine Formel p erwartet. Die Formel p muss in CTL sein und darf nur die Operatoren false , ¬ und ∧ zusammen mit EX , E ( U ) und AF besitzen, alle anderen Konnek- toren müssen vor der Anwendung des Algorithmus entsprechend semantisch äquivalent umgeformt werden. Die angegebenen Konnektoren sind zur Vollständigkeit der Ausdrucksstärke von CTL ausreichend. Der Algorithmus gibt die Menge der Zustände des Modells M aus, welche die Formel p erfüllen. Der erste Schritt des Algorithmus 15 Kapitel 3: Temporale Logiken besteht darin, die Potenzmenge der Teilformeln der Formel p zu bilden. Beginnend mit der kürzesten Teilformel wird mit jedem Element dieser Potenzmenge einer der nachfolgenden Schritte durchgeführt. Dieser Schritt hängt vom Inhalt der Teilformel ab: • false : Es wird kein Zustand markiert. • p : Alle Zustände werden markiert, für die gilt: p ∈ L(s ) . • p ∧ q : Markiere alle Zustände mit p ∧ q , die bereits sowohl mit p als auch mit q markiert sind. • ¬p : Markiere alle Zustände mit ¬p , die nicht bereits mit p markiert sind. • AFp : Falls es irgendeinen Zustand gibt, der bereits mit p markiert ist, so markiere diesen mit AFp . Markiere solange alle Zustände mit AFp , dessen Nachfolger alle bereits mit AFp markiert sind, bis sich keine Änderungen mehr ergeben. • E ( p U q ) : Markiere alle Zustände mit E ( p U q ) , die bereits mit q markiert sind. Markiere solange alle Zustände mit E ( p U q ) , die bereits mit p markiert sind und mindestens einen unmittelbaren Nachfolger besitzen, der bereits mit E ( p U q ) markiert ist, bis keine weiteren Änderungen möglich sind. • EXp : Markiere jeden Zustand mit EXp , der mindestens einen unmittelbaren Nachfolger besitzt, der bereits mit p markiert ist. Wurde dieser Algorithmus mit allen Teilformeln und der zu prüfenden Formel selber durchgeführt, so müssen die Zustände gesucht werden, die mit der zu prüfenden Formel markiert sind. Für die Menge dieser Zustände ist die eingegebene Formel gültig. Dieser Algorithmus besitzt die Komplexität O( f ⋅ V ⋅ (V + E )) . Hierbei ist f die Anzahl der Konnektoren der zu prüfenden Formel, V entspricht der Menge der Zustände des Modells und E entspricht der Anzahl der Zustandsübergänge. Zur Laufzeitverbesserung können in der zu prüfenden Formel auch mehr als nur die minimal benötigte Menge an zulässigen Konnektoren erlaubt werden. Das Problem der Zustandsexplosion bleibt jedoch auch bei diesen Verbesserungen erhalten. Unter diesem Problem wird die exponentiell mit der Anzahl der Programmvariablen wachsende Menge der Zustände eines Modells verstanden. 16 Kapitel 3: Temporale Logiken 3.5.5 Anwendung des Markierungsalgorithmus Gegeben sei ein beliebiges Modell dargestellt als gerichteter Graph. Mit Hilfe des Markierungsalgorithmus sollen alle Zustände gefunden werden, in denen eine gegebene Formel F wahr ist. Dazu werden der nachfolgende Graph und die Formel EFp untersucht. Der Zustand, in dem die Teilformel p wahr ist, ist entsprechend beschriftet. s0 s1 s2 s3 p Zur Anwendung des Markierungsalgorithmus wird die Formel EFp so umgeformt, dass nur Teilformeln enthalten sind, für die der Algorithmus definiert ist. EFp ≡ E (true U p ) ≡ E (¬false U p ) Als nächstes wird diese Formel in ihre Teilformeln zerlegt. Zusätzlich werden die Teilformeln der Länge nach sortiert, so dass der Algorithmus der Reihenfolge der Länge der Teilformeln nach auf jede Teilformel angewandt werden kann. Die Menge der Teilformeln ergibt: p, false, ¬false, E (¬false U p ) Im ersten Schritt wird der Algorithmus für die Teilformeln der Länge eins, p und false , durchlaufen. Es werden alle Zustände mit p markiert, in denen die Teilformel p gilt, dies ist nur der Zustand s1 . Die boolsche Konstante false ist immer falsch, daher werden hiermit keine Zustände markiert. Im zweiten Schritt wird der Algorithmus auf die Teilformel ¬false angewandt. Diese ist überall wahr, daher wird hiermit jeder Zustand markiert. Im letzten Schritt wird die Formel E (¬false U p ) angewandt. Dazu werden mit dieser Formel zuerst alle Zustände markiert, in denen p gilt, dies ist Zustand s1 . Im weiteren werden die Zustände markiert, welche bereits mit ¬false markiert sind und mindestens einen unmittelbaren Nachfolger besitzen, der mit p markiert ist. Dies wird solange wiederholt bis keine Änderungen mehr erfolgen. Dabei wird zuerst Zustand s 0 und dann s 2 markiert. Danach erfolgen keine weiteren Änderungen. Damit ist die Formel EFp in den Zuständen s 0 , s1 und s 2 gültig. 17 Kapitel 3: Temporale Logiken 3.6 Fixpunktcharakterisierung Der zuvor dargestellte Algorithmus nutzt die Eigenschaft, dass sich die Operatoren temporaler Logiken als Fixpunkte monotoner Funktionale berechnen lassen. Funktionale werden in der Form λy. f geschrieben, wobei f die Formel und y die Variable bezeichnen. Ein Fixpunkt eines Funktionals f ist gegeben, wenn f ( p ) = p gilt. Ein Funktional f ist monoton, wenn für alle Teilmengen x , y seiner Definitionsmenge S gilt: Aus x ⊆ y folgt f ( x ) ⊆ f ( y ) . Monotone Funktionale besitzen nach [Ta55] einen kleinsten sowie einen größten Fixpunkt. Zur Berechnung des kleinsten Fixpunktes wird als Startwert die leere Menge übergeben. Der größte Fixpunkte wird berechnet, indem als Startwert die Menge aller Elemente der Definitionsmenge übergeben wird. Auf diese Startwerte wird die Funktion solange auf sich selber angewandt, bis keine Änderung des Funktionswertes mehr erfolgt. Zur Berechnung der Fixpunkte der Operatoren einer temporalen Logik wird die Funktion einmal mit false und einmal mit true gestartet. Auf das Model Checking übertragen, entspricht dies einmal der leeren Menge und einmal der Menge der Zustände eines Modells. Diese Menge ist endlich, da nur Systeme betrachtet werden, die sich in endlichen Modellen darstellen lassen. Bei einer endlichen Zustandsmenge mit n Zuständen muss ein monotones Funktional f maximal n -mal auf sich selber angewandt werden, um einen Fixpunkt zu finden. Die Fixpunktcharakterisierung der Operatoren von CTL führt zu folgendem Ergebnis, wobei µy. f den kleinsten und νy. f den größten Fixpunkt bezeichnet. AGp = νy. p ∧ AX y EGp = νy. p ∧ EX y AFp = µy. p ∨ AX y EFp = µy. p ∨ EX y A(q U p ) = µy. p ∨ (q ∧ AX y ) E (q U p ) = µy.( p ∨ (q ∧ EX y )) Diese Darstellung der Operatoren als Fixpunkte wird im obigen Algorithmus für das Model Checking ausgenutzt. Da hiermit gezeigt ist, dass jede Fixpunktberechnung höchstens so viele Schritte erfordert, wie das entsprechende Modell Zustände enthält, ist auch bewiesen, dass der Markierungsalgorithmus terminiert. 18 Kapitel 3: Temporale Logiken 3.7 Theoretische Aspekte temporaler Logiken In diesem Abschnitt werden theoretische Aspekte der dargestellten temporalen Logiken untersucht. Hier geht es darum, Aussagen über die Entscheidbarkeit, Ausdrucksstärke und Komplexität zu treffen und die verschiedenen Logiken daraufhin zu vergleichen. Die Entscheidbarkeit ist sowohl bei LTL als auch bei CTL gegeben. Die Grundlage hierfür ist darin begründet, dass beide Logiken auf der Aussagenlogik basieren, die ebenfalls entscheidbar ist. Weiter wurde durch die Angabe eines Algorithmus zum Model Checking gezeigt, dass Aussagen in CTL in endlicher Zeit überprüfbar sind. Für LTL existieren ebenso Algorithmen. Eine Möglichkeit besteht hier, ein System als Büchi-Automat darzustellen. Die Komplexität des dargestellten Markierungsalgorithmus liegt in deterministisch polynomieller Zeit bezüglich der Modellgröße und der Formellänge. Die Komplexität der bekannten Algorithmen für LTL Formeln ist weitaus größer und befindet sich in der Klasse PSPACE-vollständig. Bezüglich der Ausdrucksstärke sind LTL und CTL unvergleichbar. Es entsteht zunächst der Eindruck, dass CTL gegenüber LTL ausdrucksstärker ist, da hier zusätzlich zu den temporalen Operatoren Pfadquantoren erlaubt sind, die Bedeutungen für einzelne Berechnungspfade besitzen. In einem anderen Punkt ist jedoch LTL ausdrucksstärker. In LTL sind bestimmte Verschachtelungen boolscher Konnektoren mit den temporalen Operatoren erlaubt, die in CTL nicht gestattet sind. Daher ist weder LTL noch CTL ausdrucksstärker. Vielmehr ist es möglich, bestimmte Aussagen in beiden Logiken auszudrücken. Daher bilden die Ausdrucksmöglichkeiten beider Logiken nur eine Schnittmenge. LTL CTL Die Formel AG EFp ist nur in CTL enthalten, nicht aber in LTL. Die hier angegebenen Pfadquantoren existieren in LTL nicht, daher sind dort Aussagen über alle oder nur einige Pfade nicht möglich. Diese Möglichkeit ist nur in CTL gegeben. 19 Kapitel 4: Zusammenfassung Die Formel GFp → Fq ist nur in LTL enthalten, nicht aber in CTL. Würde diese Formel in CTL um den Pfadquantor A ergänzt, so hätte die neue Formel nicht die gleiche Bedeutung. Außerdem können in CTL temporale Operatoren nicht wie in LTL unmittelbar nacheinander folgen. Die Formel AG ( p → AFq ) ist sowohl in CTL als auch in LTL enthalten, da diese Formel aus syntaktischer Sicht um den Operator A gekürzt werden kann, so dass nur noch G ( p → Fq ) übrig bleibt. Dies sagt in LTL immer noch dasselbe aus, da nur ein Zeitpfad betrachtet wird. Semantisch bedeutet die Formel, dass (für alle Pfade) immer gilt: p impliziert, dass (für alle Pfade) irgendwann q gilt. Dies ist auch in CTL (für alle Pfade) der Fall, da jeder temporaler Operator den Pfadquantor A besitzt. Da in LTL nur ein Pfad betrachtet wird, entspricht dies der Formel ohne A in LTL. 4 Zusammenfassung Soft- und Hardwaresystemen lassen sich neben dem Testen auch durch Beweise auf Korrektheit prüfen. Eine Möglichkeit ist, dies mittels Model Checker durchzuführen. Dafür wird vorausgesetzt, dass sich ein zu prüfendes System als endliches Modell darstellen lässt. Model Checker erlauben zudem nur die Prüfung bestimmter Eigenschaften wie z. B. Lebendigkeit oder Deadlockfreiheit. Diese Eigenschaften müssen in einer formalen Spezifikation dargestellt werden. Dazu werden temporale Logiken benötigt, die eine Erweiterung der Aussagen- oder auch der Prädikatenlogik sind. Diese Logiken basieren auf unterschiedlichen Zeitmodellen. Unterschieden werden lineare und verzweigte Zeitmodelle. Die Logik LTL basiert auf einem linearen Zeitmodell, CTL dagegen basiert auf einem verzweigten Zeitmodell. Der Algorithmus des CTL Model Checking erwartet als Eingabe die Spezifikation einer zu prüfenden Eigenschaft in einer temporalen Logik und ein Modell des zu prüfenden Systems. Dieses Modell enthält die Zustände, Zustandsübergänge und Auswertungsfunktion. Der vorgestellte Markierungsalgorithmus berechnet die Menge der Zustände, in denen eine gegebene Formel in CTL gültig ist. Die Grundlage dieses Algorithmus ist die Fixpunktcharakterisierung. Diese besagt, dass jede monotone Funktion einen kleinsten und einen größten Fixpunkt besitzt, die sich bei endlicher Anwendung der Funktion auf sich selber berechnen lassen. Da die Systeme endlich sind, lässt sich dies auf das Model Checking übertragen. Als Fixpunkte ergeben sich die Operatoren der temporalen Logiken. 20 Literaturverzeichnis [Bu84] Burges, John. P.: Basic tense logic. In: Handbook of philosophical logic. Band II: Extensions of Classical Logic. Hrsg.: D. Gabbay, F. Guenthner. Dordrecht, Bosten, Lancester 1984, S. 89-133. [CE81] Clarke, Edmund M.; Emerson, E. Allen: Design and Synthesis of Synchronization Skeletons using Branching Time Temporal Logic. In: Lecture Notes on Computer Science, Hrsg.: Dexter Kozen, Band 131, 1981, S. 52-71. [Em90] Emerson, E. Allen: Temporal and Modal Logic. In: Formal Models and Semantics. Hrsg.: Jan van Leeuwen, Band B, Amsterdam u.a. 1990, S. 995-1072. [HR01] Huth, Michael; Ryan, Mark: Logic in Computer Science, Cambridge 2001. [Mc93] McMillan, Kenneth L.: Symbolic Model Checking, Boston u.a. 1993. [Sc00] Schöning, Uwe: Logik für Informatiker, 5.Aufl., Heidelberg, Berlin 2000. [Ta55] Tarski, Alfred: A lattice-theoretical fixpoint theorem and its applications. Pacific Journal of Mathematics, 1955, S. 285-309.