19.01.2015 Aufrufe

Softwaretechnik 3 SS 2010 Einführung in TLA+

Softwaretechnik 3 SS 2010 Einführung in TLA+

Softwaretechnik 3 SS 2010 Einführung in TLA+

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

<strong>Softwaretechnik</strong> 3 <strong>SS</strong> <strong>2010</strong><br />

E<strong>in</strong>führung <strong>in</strong> TLA +<br />

Stefan Hallerstede<br />

halstefa@cs.uni-duesseldorf.de<br />

Universität Düsseldorf<br />

2. Juni <strong>2010</strong>


Inhalt<br />

Allgeme<strong>in</strong>es<br />

Beispiel e<strong>in</strong>er Spezifikation<br />

Beispiel<br />

Semantik anhand des Beispiels<br />

Kompositionalität<br />

Stottern<br />

Das Beispiel vollständig erklärt<br />

Notation für temporale Formeln<br />

Über Fairness<br />

Mehr Notation und e<strong>in</strong> größeres Beispiel


Inhalt<br />

Allgeme<strong>in</strong>es<br />

Beispiel e<strong>in</strong>er Spezifikation<br />

Beispiel<br />

Semantik anhand des Beispiels<br />

Kompositionalität<br />

Stottern<br />

Das Beispiel vollständig erklärt<br />

Notation für temporale Formeln<br />

Über Fairness<br />

Mehr Notation und e<strong>in</strong> größeres Beispiel


Was ist TLA + <br />

◮ Notation zur Spezifikation von Systemen<br />

◮ Basierend auf temporaler Logik (LTL-{X})<br />

◮<br />

TLA – Temporal Logic of Actions<br />

◮ Mengenlehre<br />

◮ Prädikatenlogik erster Stufe<br />

◮ Modularisierung von Spezifikationen<br />

◮ Komposition von Spezifikationen


Inhalt<br />

Allgeme<strong>in</strong>es<br />

Beispiel e<strong>in</strong>er Spezifikation<br />

Beispiel<br />

Semantik anhand des Beispiels<br />

Kompositionalität<br />

Stottern<br />

Das Beispiel vollständig erklärt<br />

Notation für temporale Formeln<br />

Über Fairness<br />

Mehr Notation und e<strong>in</strong> größeres Beispiel


Inhalt<br />

Allgeme<strong>in</strong>es<br />

Beispiel e<strong>in</strong>er Spezifikation<br />

Beispiel<br />

Semantik anhand des Beispiels<br />

Kompositionalität<br />

Stottern<br />

Das Beispiel vollständig erklärt<br />

Notation für temporale Formeln<br />

Über Fairness<br />

Mehr Notation und e<strong>in</strong> größeres Beispiel


Beispiel e<strong>in</strong>er TLA + -Spezifikation<br />

module HourClock<br />

extends Naturals<br />

variable hr<br />

∆<br />

HC<strong>in</strong>i = hr ∈ (1 . . 12)<br />

∆<br />

HCnxt = hr ′ = if hr ≠ 12 then hr + 1<br />

else 1<br />

HC ∆ = HC<strong>in</strong>i ∧ □[HCnxt] hr<br />

theorem HC ⇒ □HC<strong>in</strong>i


ASCII-Version der TLA + -Spezifikation<br />

---------------------- MODULE HourClock ----------------------<br />

EXTENDS Naturals<br />

VARIABLE hr<br />

HC<strong>in</strong>i == hr \<strong>in</strong> (1 .. 12)<br />

HCnxt == hr’ = IF hr # 12 THEN hr + 1<br />

ELSE 1<br />

HC == HC<strong>in</strong>i /\ [] [HCnxt]_hr<br />

--------------------------------------------------------------<br />

THEOREM HC => []HC<strong>in</strong>i<br />

==============================================================


Bemerkung<br />

◮ TLA + ist untypisiert!<br />

◮ x = true ∨ x = 1 ist e<strong>in</strong>e korrekte TLA + -Formel<br />

◮ Typen werden als Mengene<strong>in</strong>schränkungen explizit spezifiziert<br />

◮<br />

x ∈ boolean zum Beispiel<br />

◮ Theorem Spec ⇒ □x ∈ boolean notwendig


Inhalt<br />

Allgeme<strong>in</strong>es<br />

Beispiel e<strong>in</strong>er Spezifikation<br />

Beispiel<br />

Semantik anhand des Beispiels<br />

Kompositionalität<br />

Stottern<br />

Das Beispiel vollständig erklärt<br />

Notation für temporale Formeln<br />

Über Fairness<br />

Mehr Notation und e<strong>in</strong> größeres Beispiel


Term<strong>in</strong>ologie<br />

◮ Zustand (engl. state)<br />

◮ e<strong>in</strong>e Variablenbelegung (mit Werten des Universums)<br />

◮ Schritt (engl. step)<br />

◮<br />

e<strong>in</strong> Zustandspaar<br />

◮ Verhalten (engl. behavior)<br />

◮ e<strong>in</strong>e Folge von Zuständen<br />

◮ Spezifikation (engl. specification)<br />

◮ e<strong>in</strong>e temporale Formel (oft Spec genannt)<br />

◮ Zustandsprädikat (engl. state predicate)<br />

◮ e<strong>in</strong>e Formel über Zuständen<br />

◮ Aktion (engl. action)<br />

◮ e<strong>in</strong>e Formel über Schritten


Verhalten<br />

◮ Beispiel: HourClock<br />

◮ Sei hr e<strong>in</strong>e Variable (die Uhrzeit)<br />

◮ typisches Verhalten, Sequenz von Zuständen:<br />

[hr = 11] → [hr = 12] → [hr = 1] → [hr = 2] → · · ·<br />

◮ wobei [hr = 11] e<strong>in</strong> Zustand ist, <strong>in</strong> dem hr den Wert 11 hat<br />

◮ und e<strong>in</strong> Paar aufe<strong>in</strong>anderfolgender Zustände<br />

[hr = 1] → [hr = 2]<br />

e<strong>in</strong> Schritt


Inhalt<br />

Allgeme<strong>in</strong>es<br />

Beispiel e<strong>in</strong>er Spezifikation<br />

Beispiel<br />

Semantik anhand des Beispiels<br />

Kompositionalität<br />

Stottern<br />

Das Beispiel vollständig erklärt<br />

Notation für temporale Formeln<br />

Über Fairness<br />

Mehr Notation und e<strong>in</strong> größeres Beispiel


Spezifikation der Uhr<br />

◮ Beschreibung aller möglichen Verhalten mittels<br />

◮<br />

Anfangsprädikat (engl. <strong>in</strong>itial predicate)<br />

HC<strong>in</strong>i<br />

∆<br />

= hr ∈ (1 . . 12)<br />

◮<br />

Folgezustandsrelation (engl. next-state relation)<br />

HCnxt<br />

∆<br />

= hr ′ = if hr ≠ 12 then hr + 1<br />

else 1<br />

◮ hr ist der alte Zustand, hr ′ der neue Zustand<br />

◮ HCnxt wird Aktion genannt<br />

◮ E<strong>in</strong> Schritt, der HCnxt erfüllt, heißt HCnxt-Schritt


Spezifikation der Verhalten der Uhr (1. Versuch)<br />

◮ Die Anfangszustände der Uhr erfüllen HC<strong>in</strong>i<br />

◮ Alle Schritte erfüllen HCnxt<br />

HC ∆ = HC<strong>in</strong>i ∧ □HCnxt<br />

◮ Diese Spezifikation ermöglicht folgenden Schritt nicht:<br />

[hr = 12] → [hr = 12]


Uhr mit Temperaturanzeige<br />

◮ Verhalten e<strong>in</strong>er Temperaturanzeige mit e<strong>in</strong>gebauter Uhr:<br />

[ ]<br />

hr = 11<br />

tmp = 23.5<br />

→<br />

[ ]<br />

hr = 12<br />

tmp = 23.5<br />

→<br />

[ ]<br />

hr = 12<br />

tmp = 22.7<br />

→<br />

[ ]<br />

hr = 1<br />

tmp = 23.4<br />

→ · · ·<br />

◮ Die Uhrspezifikation läßt sich dazu nicht verwenden<br />

◮ Wir würden gerne e<strong>in</strong>e Temperaturanzeigespezifikation<br />

TD ∆ = TD<strong>in</strong>i ∧ □TDnxt<br />

mit der Uhrspezifikation komponieren können<br />

TD ∧ HC<br />

so dass obiges Verhalten möglich ist


Inhalt<br />

Allgeme<strong>in</strong>es<br />

Beispiel e<strong>in</strong>er Spezifikation<br />

Beispiel<br />

Semantik anhand des Beispiels<br />

Kompositionalität<br />

Stottern<br />

Das Beispiel vollständig erklärt<br />

Notation für temporale Formeln<br />

Über Fairness<br />

Mehr Notation und e<strong>in</strong> größeres Beispiel


Lösung des Problems: Stotterschritte<br />

◮ Jeder Schritt e<strong>in</strong>es Uhr-Verhaltens muss<br />

◮<br />

◮<br />

e<strong>in</strong> Stotterschritt hr ′ = hr oder<br />

e<strong>in</strong> HCnxt-Schritt se<strong>in</strong><br />

also HCnxt ∨ hr ′ = hr<br />

◮ Die TLA + -Syntax dafür ist [HCnxt] hr<br />

◮ Spezifikation der Vehalten der Uhr (2. Versuch) 1<br />

HC ∆ = HC<strong>in</strong>i ∧ □[HCnxt] hr<br />

1 Gleichermaßen für die Spezifikation TD


Typ<strong>in</strong>variante<br />

◮ Der Wert der Variablen hr soll<br />

<strong>in</strong> jedem Zustand jedes Verhaltens der Uhr<br />

im Breich 1 . . 12 liegen<br />

◮ Formal:<br />

HC ⇒ □HC<strong>in</strong>i<br />

◮ In dieser e<strong>in</strong>fachen Spezifikation können wir<br />

das Anfangsprädikat auch als Typ<strong>in</strong>variante benutzen


Inhalt<br />

Allgeme<strong>in</strong>es<br />

Beispiel e<strong>in</strong>er Spezifikation<br />

Beispiel<br />

Semantik anhand des Beispiels<br />

Kompositionalität<br />

Stottern<br />

Das Beispiel vollständig erklärt<br />

Notation für temporale Formeln<br />

Über Fairness<br />

Mehr Notation und e<strong>in</strong> größeres Beispiel


Die TLA + -Spezifikation e<strong>in</strong>er Uhr<br />

module HourClock<br />

extends Naturals<br />

variable hr<br />

∆<br />

HC<strong>in</strong>i = hr ∈ (1 . . 12)<br />

∆<br />

HCnxt = hr ′ = if hr ≠ 12 then hr + 1<br />

else 1<br />

HC ∆ = HC<strong>in</strong>i ∧ □[HCnxt] hr<br />

theorem HC ⇒ □HC<strong>in</strong>i


Inhalt<br />

Allgeme<strong>in</strong>es<br />

Beispiel e<strong>in</strong>er Spezifikation<br />

Beispiel<br />

Semantik anhand des Beispiels<br />

Kompositionalität<br />

Stottern<br />

Das Beispiel vollständig erklärt<br />

Notation für temporale Formeln<br />

Über Fairness<br />

Mehr Notation und e<strong>in</strong> größeres Beispiel


Operatoren von TLA +<br />

Operatoren für Aktionen<br />

[A] e steht für A ∨ e ′ = e<br />

〈A〉 e steht für A ∧ e ′ ≠ e<br />

Enabled A steht für E<strong>in</strong> A-Schritt ist möglich (formal)<br />

unchanged e steht für e ′ = e<br />

A · B steht für Komposition von Aktionen (“A, dann B”)<br />

Temporale Operatoren<br />

□F steht für F ist immer wahr<br />

♦F steht für F is irgendwann wahr<br />

F G steht für F führt zu G<br />

WF e (A) steht für Schwache Fairness für Aktion A<br />

SF e (A) steht für Starke Fairness für Aktion A


Inhalt<br />

Allgeme<strong>in</strong>es<br />

Beispiel e<strong>in</strong>er Spezifikation<br />

Beispiel<br />

Semantik anhand des Beispiels<br />

Kompositionalität<br />

Stottern<br />

Das Beispiel vollständig erklärt<br />

Notation für temporale Formeln<br />

Über Fairness<br />

Mehr Notation und e<strong>in</strong> größeres Beispiel


Kategorien von Systemeigenschaften<br />

Grobe Aufteilung <strong>in</strong> zwei Kategorien:<br />

◮ Sicherheit<br />

e<strong>in</strong> unerwünschter Zustand wird nicht erreicht<br />

◮ Lebendigkeit<br />

e<strong>in</strong> erwünschter Zustand wird erreicht


Fairness<br />

◮ WF e (A) bedeutet □(□Enabled 〈A〉 e ⇒ ♦〈A〉 e )<br />

E<strong>in</strong> A-Schritt muss irgendwann e<strong>in</strong>treten,<br />

falls A permanent aktiviert ist.<br />

◮ SF e (A) bedeutet □♦Enabled 〈A〉 e ⇒ □♦〈A〉 e<br />

E<strong>in</strong> A-Schritt muss irgendwann e<strong>in</strong>treten,<br />

falls A immer wieder aktiviert ist.<br />

◮ SF e (A) impliziert WF e (A)


SF e (A) impliziert WF e (A).<br />

Beweis.<br />

SF e (A)<br />

⇔ { Def<strong>in</strong>ition von SF e (A) }<br />

□♦Enabled 〈A〉 e ⇒ □♦〈A〉 e<br />

⇔ { Prädikatenlogik, Distribution von ¬ über □ und ♦ }<br />

♦□¬(Enabled 〈A〉 e ) ∨ □♦〈A〉 e<br />

⇒ { Tautologie ♦□G ⇒ □♦G }<br />

□♦¬(Enabled 〈A〉 e ) ∨ □♦〈A〉 e<br />

⇒ { Tautologie (□F ) ∨ (□G) ⇒ □(F ∨ G) }<br />

□(♦¬(Enabled 〈A〉 e ) ∨ ♦〈A〉 e )<br />

⇔ { Prädikatenlogik, Distribution von ¬ über □ und ♦ }<br />

□(□Enabled 〈A〉 e ⇒ ♦〈A〉 e )<br />

⇔ { Def<strong>in</strong>ition von WF e (A) }<br />

WF e (A)


Inhalt<br />

Allgeme<strong>in</strong>es<br />

Beispiel e<strong>in</strong>er Spezifikation<br />

Beispiel<br />

Semantik anhand des Beispiels<br />

Kompositionalität<br />

Stottern<br />

Das Beispiel vollständig erklärt<br />

Notation für temporale Formeln<br />

Über Fairness<br />

Mehr Notation und e<strong>in</strong> größeres Beispiel


Mehr Notation und e<strong>in</strong> größeres Beispiel<br />

Zusammenfassung “A Summary of TLA + ” von L. Lamport<br />

Onl<strong>in</strong>e (PDF):<br />

http://research.microsoft.com/en-us/um/people/lamport/tla/summary.pdf<br />

Buch “Specify<strong>in</strong>g Systems” von L. Lamport<br />

Seiten 30 und 38<br />

Onl<strong>in</strong>e (PDF):<br />

http://research.microsoft.com/en-us/um/people/lamport/tla/book.html

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!