„Computation Tree Logic“ – Versionsunterschied
[gesichtete Version] | [gesichtete Version] |
Artikel umgeschrieben; Hinweis auf Real Time Logic entfernt, da keine Informationen darüber auffindbar sind; neue ISBN eingefügt; Informationen ohne Anwendungen und Quellen (Vergangenheitsoperationen) entfernt. |
Aka (Diskussion | Beiträge) K Tippfehler entfernt, Links optimiert, Kleinkram |
||
Zeile 5: | Zeile 5: | ||
Die CTL wird zur [[Verifizierung|Verifikation]] von Hard- und Software verwendet, üblicherweise von [[Model Checking|Model Checkern]]. |
Die CTL wird zur [[Verifizierung|Verifikation]] von Hard- und Software verwendet, üblicherweise von [[Model Checking|Model Checkern]]. |
||
Zu der Familie der temporalen Logiken gehört auch die [[Lineare temporale Logik|Linear temporale Logik]] (LTL), wobei hier nur eine Zukunft möglich ist. Eine Verallgemeinerung der beiden Logiken wird als als CTL* bezeichnet. |
Zu der Familie der temporalen Logiken gehört auch die [[Lineare temporale Logik|Linear temporale Logik]] (LTL), wobei hier nur eine Zukunft möglich ist. Eine Verallgemeinerung der beiden Logiken wird als als CTL* bezeichnet. |
||
== Syntax == |
== Syntax == |
||
=== Minimale Grammatik === |
=== Minimale Grammatik === |
||
Sei <math>AP</math> eine Menge von [[Aussage (Logik)#Einfach – zusammengesetzt|atomaren Aussagen]] (Behauptungen), dann ist jedes Element <math>p \in AP</math> eine CTL-Formel. Sind <math>\phi</math> und <math>\psi</math> Formeln, dann auch <math>\neg\phi</math>, <math>\phi \lor \psi</math>, <math>\text{EX}\phi</math>, <math>\text{EG} \phi</math> und <math>\phi \text{EU} \psi</math>. Dies definiert die minimale [[Formale Grammatik|Grammatik]] von CTL. In der Regel wird diese allerdings um die gängigen [[Boolescher Operator| |
Sei <math>AP</math> eine Menge von [[Aussage (Logik)#Einfach – zusammengesetzt|atomaren Aussagen]] (Behauptungen), dann ist jedes Element <math>p \in AP</math> eine CTL-Formel. Sind <math>\phi</math> und <math>\psi</math> Formeln, dann auch <math>\neg\phi</math>, <math>\phi \lor \psi</math>, <math>\text{EX}\phi</math>, <math>\text{EG} \phi</math> und <math>\phi \text{EU} \psi</math>. Dies definiert die minimale [[Formale Grammatik|Grammatik]] von CTL. In der Regel wird diese allerdings um die gängigen [[Boolescher Operator|booleschen Operatoren]] <math>\land</math>, <math>\implies</math>und <math>\Lrarr</math>, sowie einigen weiteren temporalen Operatoren erweitert. |
||
=== Temporale Operatoren === |
=== Temporale Operatoren === |
||
Die Erweiterung der minimalen Grammatik um folgende Operatoren erhöht nicht die Mächtigkeit der [[Formale Sprache|Sprache]], da alle Operatoren durch Umformungen zurückgeführt werden können. |
Die Erweiterung der minimalen Grammatik um folgende Operatoren erhöht nicht die Mächtigkeit der [[Formale Sprache|Sprache]], da alle Operatoren durch Umformungen zurückgeführt werden können. |
||
*Pfadoperatoren: |
* Pfadoperatoren: |
||
**<math>A\phi</math> – ''auf allen Pfaden folgt <math>\phi</math>'' (englisch: ''All'') |
** <math>A\phi</math> – ''auf allen Pfaden folgt <math>\phi</math>'' (englisch: ''All'') |
||
**<math>E\phi</math> – ''auf mindestens einem Pfad folgt <math>\phi</math>'' (englisch: ''Exists'') |
** <math>E\phi</math> – ''auf mindestens einem Pfad folgt <math>\phi</math>'' (englisch: ''Exists'') |
||
*Pfad-spezifische Operatoren: |
* Pfad-spezifische Operatoren: |
||
**<math>X\phi</math> – ''unmittelbar folgt <math>\phi</math>'' (englisch: ''neXt state'') |
** <math>X\phi</math> – ''unmittelbar folgt <math>\phi</math>'' (englisch: ''neXt state'') |
||
**<math>F\phi</math> – ''irgendwann folgt <math>\phi</math>'' (englisch: ''some Future state'' oder ''Finally'') |
** <math>F\phi</math> – ''irgendwann folgt <math>\phi</math>'' (englisch: ''some Future state'' oder ''Finally'') |
||
**<math>G\phi</math> – ''auf dem folgenden Pfad folgt in jedem Zustand <math>\phi</math>'' (englisch: ''Globally'') |
** <math>G\phi</math> – ''auf dem folgenden Pfad folgt in jedem Zustand <math>\phi</math>'' (englisch: ''Globally'') |
||
**<math>\phi U \psi</math> – ''<math>\phi</math> folgt bis zum Erreichen des Zustands <math>\psi</math>'' (englisch: ''Until'') |
** <math>\phi U \psi</math> – ''<math>\phi</math> folgt bis zum Erreichen des Zustands <math>\psi</math>'' (englisch: ''Until'') |
||
**<math>\phi W \psi</math> – ''<math>\phi</math> folgt immer oder bis zum Erreichen des Zustands <math>\psi</math>'' (englisch: ''Weak Until'') |
** <math>\phi W \psi</math> – ''<math>\phi</math> folgt immer oder bis zum Erreichen des Zustands <math>\psi</math>'' (englisch: ''Weak Until'') |
||
Pfad und pfad-spezifische Operatoren können miteinander kombiniert werden, sodass sich beispielsweise folgende Formeln ergeben: |
Pfad und pfad-spezifische Operatoren können miteinander kombiniert werden, sodass sich beispielsweise folgende Formeln ergeben: |
||
*<math>EX\phi</math> –''in (mind.) einem nächsten Zustand gilt'' <math>\phi</math> |
* <math>EX\phi</math> –''in (mind.) einem nächsten Zustand gilt'' <math>\phi</math> |
||
*<math>EF\phi</math> – ''in (mind.) einem der folgenden Zustände gilt'' <math>\phi</math> |
* <math>EF\phi</math> – ''in (mind.) einem der folgenden Zustände gilt'' <math>\phi</math> |
||
*<math>EG\phi</math> – ''es gibt (mind.) einen Pfad, so dass <math>\phi</math> entlang des ganzen Pfades gilt'' |
* <math>EG\phi</math> – ''es gibt (mind.) einen Pfad, so dass <math>\phi</math> entlang des ganzen Pfades gilt'' |
||
*<math>E[\phi U \psi ]</math> – ''es gibt einen Pfad, für den gilt: bis zum ersten Auftreten von <math>\psi</math> gilt'' <math>\phi</math> |
* <math>E[\phi U \psi ]</math> – ''es gibt einen Pfad, für den gilt: bis zum ersten Auftreten von <math>\psi</math> gilt'' <math>\phi</math> |
||
*<math>AX \phi</math> – ''in jedem nächsten Zustand gilt'' <math>\phi</math> |
* <math>AX \phi</math> – ''in jedem nächsten Zustand gilt'' <math>\phi</math> |
||
*<math>AF \phi</math> – ''man erreicht immer einen Zustand, in dem <math>\phi</math> gilt'' |
* <math>AF \phi</math> – ''man erreicht immer einen Zustand, in dem <math>\phi</math> gilt'' |
||
*<math>AG \phi</math> – ''auf allen Pfaden gilt in jedem Zustand'' <math>\phi</math> |
* <math>AG \phi</math> – ''auf allen Pfaden gilt in jedem Zustand'' <math>\phi</math> |
||
*<math>A [ \phi U \psi ]</math> – ''es gilt immer <math>\phi</math> bis zum ersten Auftreten von'' <math>\psi</math> |
* <math>A [ \phi U \psi ]</math> – ''es gilt immer <math>\phi</math> bis zum ersten Auftreten von'' <math>\psi</math> |
||
== Semantik == |
== Semantik == |
||
CTL Formeln werden über [[Transitionssystem |
CTL Formeln werden über [[Transitionssystem]]e definiert. Für eine gegebene Folge von Zuständen des Systems <math>T(s_0) = s_0, s_1, \ldots</math> (beginnend in Zustand <math>s_0</math>) sind die Operatoren formal wie folgt definiert, dabei steht <math>T(s_0) \models \phi</math> für <math>T(s_0)</math> erfüllt <math>\phi</math>: |
||
*<math>T(s_0) \models \neg \phi \quad \Lrarr \quad T(s_0) \not\models \phi </math> |
* <math>T(s_0) \models \neg \phi \quad \Lrarr \quad T(s_0) \not\models \phi </math> |
||
*<math>T(s_0) \models \phi \lor \psi \quad \Lrarr \quad T(s_0) \models \phi \text{ oder } T(s_0) \models \psi </math> |
* <math>T(s_0) \models \phi \lor \psi \quad \Lrarr \quad T(s_0) \models \phi \text{ oder } T(s_0) \models \psi </math> |
||
*<math>T(s_0) \models EX\phi \quad \Lrarr \quad T(s_1) \models \phi </math> |
* <math>T(s_0) \models EX\phi \quad \Lrarr \quad T(s_1) \models \phi </math> |
||
*<math>T(s_0) \models EG\phi \quad \Lrarr \quad \forall i: T(s_i) \models \phi </math> |
* <math>T(s_0) \models EG\phi \quad \Lrarr \quad \forall i: T(s_i) \models \phi </math> |
||
*<math>T(s_0) \models \phi EU \psi \quad \Lrarr \quad \exists k: T(s_k) \models \psi \land \forall i < k: T(s_i) \models \phi</math> |
* <math>T(s_0) \models \phi EU \psi \quad \Lrarr \quad \exists k: T(s_k) \models \psi \land \forall i < k: T(s_i) \models \phi</math> |
||
Die oben genannten Umformungen erlauben es, Formeln ineinander umzuwandeln. |
Die oben genannten Umformungen erlauben es, Formeln ineinander umzuwandeln. |
||
*<math>\neg A\phi \equiv E \neg \phi </math> |
* <math>\neg A\phi \equiv E \neg \phi </math> |
||
*<math>\neg AF\phi \equiv EG\neg\phi</math> |
* <math>\neg AF\phi \equiv EG\neg\phi</math> |
||
*<math>\neg EF\phi \equiv AG\neg\phi</math> |
* <math>\neg EF\phi \equiv AG\neg\phi</math> |
||
*<math>\neg AX\phi \equiv EX\neg\phi</math> |
* <math>\neg AX\phi \equiv EX\neg\phi</math> |
||
*<math>AG\phi \equiv \phi \land AX AG \phi</math> |
* <math>AG\phi \equiv \phi \land AX AG \phi</math> |
||
*<math>EG\phi \equiv \phi \land EX EG \phi</math> |
* <math>EG\phi \equiv \phi \land EX EG \phi</math> |
||
*<math>AF\phi \equiv \phi \lor AX AF \phi</math> |
* <math>AF\phi \equiv \phi \lor AX AF \phi</math> |
||
*<math>EF\phi \equiv \phi \lor EX EF \phi</math> |
* <math>EF\phi \equiv \phi \lor EX EF \phi</math> |
||
*<math>A[\phi U \psi] \equiv \psi \lor (\phi \land AX A [\phi U \psi])</math> |
* <math>A[\phi U \psi] \equiv \psi \lor (\phi \land AX A [\phi U \psi])</math> |
||
*<math>E[\phi U \psi] \equiv \psi \lor (\phi \land EX E [\phi U \psi])</math> |
* <math>E[\phi U \psi] \equiv \psi \lor (\phi \land EX E [\phi U \psi])</math> |
||
== Literatur == |
== Literatur == |
Version vom 22. Februar 2020, 19:33 Uhr

Die Computation Tree Logic (kurz CTL) ist eine Temporale Logik, deren Modell der Zeit eine baumartige Struktur hat. Die zeitliche Änderung von Zuständen und deren Eigenschaften wird durch Pfade innerhalb dieser Baumstruktur modelliert. Hierbei hat die Zukunft mehrere Pfade, wobei nicht festgelegt ist, welche letztendlich realisiert werden. Demnach können Aussagen über die mögliche Entwicklungen getroffen werden.
Die CTL wird zur Verifikation von Hard- und Software verwendet, üblicherweise von Model Checkern.
Zu der Familie der temporalen Logiken gehört auch die Linear temporale Logik (LTL), wobei hier nur eine Zukunft möglich ist. Eine Verallgemeinerung der beiden Logiken wird als als CTL* bezeichnet.
Syntax
Minimale Grammatik
Sei eine Menge von atomaren Aussagen (Behauptungen), dann ist jedes Element eine CTL-Formel. Sind und Formeln, dann auch , , , und . Dies definiert die minimale Grammatik von CTL. In der Regel wird diese allerdings um die gängigen booleschen Operatoren , und , sowie einigen weiteren temporalen Operatoren erweitert.
Temporale Operatoren
Die Erweiterung der minimalen Grammatik um folgende Operatoren erhöht nicht die Mächtigkeit der Sprache, da alle Operatoren durch Umformungen zurückgeführt werden können.
- Pfadoperatoren:
- – auf allen Pfaden folgt (englisch: All)
- – auf mindestens einem Pfad folgt (englisch: Exists)
- Pfad-spezifische Operatoren:
- – unmittelbar folgt (englisch: neXt state)
- – irgendwann folgt (englisch: some Future state oder Finally)
- – auf dem folgenden Pfad folgt in jedem Zustand (englisch: Globally)
- – folgt bis zum Erreichen des Zustands (englisch: Until)
- – folgt immer oder bis zum Erreichen des Zustands (englisch: Weak Until)
Pfad und pfad-spezifische Operatoren können miteinander kombiniert werden, sodass sich beispielsweise folgende Formeln ergeben:
- –in (mind.) einem nächsten Zustand gilt
- – in (mind.) einem der folgenden Zustände gilt
- – es gibt (mind.) einen Pfad, so dass entlang des ganzen Pfades gilt
- – es gibt einen Pfad, für den gilt: bis zum ersten Auftreten von gilt
- – in jedem nächsten Zustand gilt
- – man erreicht immer einen Zustand, in dem gilt
- – auf allen Pfaden gilt in jedem Zustand
- – es gilt immer bis zum ersten Auftreten von
Semantik
CTL Formeln werden über Transitionssysteme definiert. Für eine gegebene Folge von Zuständen des Systems (beginnend in Zustand ) sind die Operatoren formal wie folgt definiert, dabei steht für erfüllt :
Die oben genannten Umformungen erlauben es, Formeln ineinander umzuwandeln.
Literatur
- Clarke, Grumberg, Peled: Model Checking. MIT Press, 2000. ISBN 0-262-03270-8
- Rohit Kapur: CTL for Test Information of Digital ICS, Springer, 2002, ISBN 978-1-4020-7293-2
- B. Berard, Michel Bidoit, Alain Finkel: Systems and Software Verification. Model-Checking Techniques and Tools.: Model-checking Techniques and Tools. Springer, 2001, ISBN 3-540-41523-8
- M. Huth and M. Ryan: Logic in Computer Science - Modelling and Reasoning about Systems. Cambridge, 2004, ISBN 0-521-54310-X