7.2 Conjoining Specifications

Ähnliche Dokumente
HA-Lösung TA-Lösung Diskrete Strukturen Tutoraufgabenblatt 10. Besprechung in KW02/2019

Aussagenlogik. Aussagen und Aussagenverknüpfungen

Tilman Bauer. 4. September 2007

Übung 1: Vorspann Ein physikalisches System

Shannon Formeln. Formale Systeme. Normierte Shannon Formeln. Eigenschaften des sh-operators

1. Einführung in Temporallogik CTL

Mathematische und logische Grundlagen der Linguistik. Kapitel 3: Grundbegriffe der Aussagenlogik

Mathematische und logische Grundlagen der Linguistik. Mathematische und logische Grundlagen der Linguistik. Karl Heinz Wagner. Hier Titel eingeben 1

2.3 Deduktiver Aufbau der Aussagenlogik

Diskrete Strukturen Kapitel 2: Grundlagen (Beweise)

Formale Systeme. Prof. Dr. Bernhard Beckert. Winter 2008/2009. Fakultät für Informatik Universität Karlsruhe (TH)

Vorkurs: Mathematik für Informatiker

Vorkurs: Mathematik für Informatiker

Logik für Informatiker Logic for computer scientists

Formale Methoden II. Gerhard Jäger. SS 2005 Universität Bielefeld. Teil 3, 12. Mai Formale Methoden II p.1/23

Logik für Informatiker Logic for computer scientists

Einführung in die formale Logik. Prof. Dr. Andreas Hüttemann

Logische und funktionale Programmierung

Logik für Informatiker

Mathematische Grundlagen der Computerlinguistik

C. A. R. Hoare. An Axiomatic Basis for Computer Programming. Nicolas Schelp. Proseminar Assertions SS 2007

Motivation. Formale Grundlagen der Informatik 1 Kapitel 14 Aussagenlogik Syntax & Semantik. Motivation. Motivation

Lösungen Wahrscheinlichkeitstheorie

Vorkurs Mathematik. JProf. Dr. Pia Pinger / Dr. Andreas Pondorfer. September/Oktober Lennéstraße 43, 1. OG

Ein Beispielbeweis zur Verifikation des Programms zur Division mit Rest auf der Basis der Hoare-Regeln

b. Lehre des vernünftigen Schlussfolgerns (1. System von Regeln von Aristoteles ( v. Chr.); sprachliche Argumente

Inhaltsverzeichnis. Inhaltsverzeichnis

De Morgan sche Regeln

Einführung in die Logik

Logik (Prof. Dr. Wagner FB AI)

WS 2009/10. Diskrete Strukturen

Zentralübung: Schleifeninvarianten

Automaten und Formale Sprachen alias Theoretische Informatik. Sommersemester 2012

Vorkurs: Mathematik für Informatiker

Übung 4: Aussagenlogik II

Algorithmen für OBDD s. 1. Reduziere 2. Boole sche Operationen

Satz 1.18 (Kompaktheitssatz der Aussagenlogik)

2.1 Lineare Temporallogiken: LTL

Überblick. 3. Mathematische Grundlagen 3.1 Mengen und Abbildungen 3.2 Induktion und Rekursion 3.3 Boolsche Algebra

- Welche konkreten Invarianten müssen gelten? Berücksichtigen: Invarianten aus Modell und Implem.

Allgemeingültige Aussagen

Einführung in die Logik Aufgabenblatt 3, Zeigen Sie, dass folgende Mengen von Junktoren logisch vollständig sind:

Minesweeper ist NP-vollständig

Vorkurs: Mathematik für Informatiker

Tutorium: Diskrete Mathematik

Korrektheit durch modulare Konstruktion. Wie kann man die Korrektheit reaktiver Systeme gewährleisten?

2.2.4 Logische Äquivalenz

Wie kann man die Korrektheit reaktiver Systeme gewährleisten?

Künstliche Intelligenz Logische Agenten & Resolution

Aufgabe. Gelten die folgenden Äquivalenzen?. 2/??

1 Aussagenlogischer Kalkül

Sudoku ist NP-vollständig

Was ist Logik? Was ist Logik? Aussagenlogik. Wahrheitstabellen. Geschichte der Logik eng verknüpft mit Philosophie

Korrektheit und Hoare-Kalkül für Imperative Programme

Binäre Suchbäume (binary search trees, kurz: bst)

Vollständige Induktion

WS 2013/14. Diskrete Strukturen

Ein und derselbe Satz kann in Bezug auf unterschiedliche Situationen s 1. und s 2 unterschiedliche Wahrheitswerte haben.

Aussagenlogik. Übersicht: 1 Teil 1: Syntax und Semantik. 2 Teil 2: Modellierung und Beweise. Aussagenlogik H. Kleine Büning 1/25

typische Beweismuster Allgemeine Hilfe Beweistechniken WS2014/ Januar 2015 R. Düffel Beweistechniken

Modellierung von Wissen

Logische und funktionale Programmierung

Deduktion in der Aussagenlogik. Semantische Folgerungsbeziehung. Zusammenhang zwischen semantischer und syntaktischer Folgerung

Deduktion in der Aussagenlogik

Abstrakte Temporale Eigenschaften

Abschlusseigenschaften. Automaten und Formale Sprachen alias Theoretische Informatik. Sommersemester Abschlusseigenschaften

Theoretische Informatik und Logik Übungsblatt 4 (SS 2017) Lösungen

Formale Verifikation von Software. 10. Juli 2013

KAPITEL 5. Damit wird F n (B) selbst zu einer Booleschen Algebra und es gilt f(x) := f(x) 0(x) := 0 B 1(x) := 1 B

Software-Qualität Ausgewählte Kapitel

Der mathematische Beweis

Informationsverarbeitung auf Bitebene

Handout zu Beweistechniken

Vorlesung. Einführung in die mathematische Sprache und naive Mengenlehre

Formale Verifikation. KV Software Engineering Prof. Dr. Martin Glinz. Kapitel 4. Universität Zürich Institut für Informatik

Kapitel 3: Boolsche Algebra

Folgen und Reihen Folgen

Vorkurs Mathematik - SoSe 2017

Erklärung und Kausalität. Antworten auf die Leitfragen zum

2008W. Vorlesung im 2008W Institut für Algebra Johannes Kepler Universität Linz

Theoretische Grundlagen der Informatik

2.6 Natürliches Schließen in AL

Grundlagen von Datenbanken Sommersemester 2012

1 Algorithmische Grundlagen

mathe plus Aussagenlogik Seite 1

Vorkurs Mathematik Logik und Beweise II

Logik für Informatiker

Definitionen und Aussagen zur Maßtheorie

Kapitel 3 Sätze der offenen Abbildung

Dallmann, H. & Elster, K.H. (1991). Einführung in die höhere Mathematik, Band I. Jena: Fischer. (Kapitel 1, pp )

Aussagen. Mathematik und Logik 2011W. Was ist Logik? Elementare Zahlentheorie. Logik. Aussagenlogik. Prädikatenlogik. Datentypen.

Theorie der Informatik. Theorie der Informatik. 2.1 Äquivalenzen. 2.2 Vereinfachte Schreibweise. 2.3 Normalformen. 2.

Kapitel 1. Aussagenlogik

Vollständige Induktion

Zusammenfassung: Beweisverfahren

Abschnitt 3.2: Der Satz von Ehrenfeucht

Vollständige Induktion

Modelltheorie (Einige Impulse)

Transkript:

Seminar: Spezifikation und Verifikation verteilter Systeme 7.2 Conjoining Specifications Teil 2: Das Kompositions-Theorem Dirk Fahland 1 TLA & Komposition in TLA Jede TLA-Formel Mi lässt sich in eine äquivalente TLA-Formel M i in Normalform umschreiben: M i Init i [Next i ] vi F air i. Mit derartigen Formeln lassen sich besonders gut Beweise über die Implementation (Implikation) und Komposition (Konjunktion) von Systemen führen. Hinsichtlich der parallelen Komposition von Systemen gibt es drei grundsätzliche Kompositionsprinzipien: Komposition von Systemen mit disjunkten Variablen (M M 1 M 2 ): Die Abläufe von M 1 und M 2 sind jeweils völlig unabhängig voneinander. Komposition von Systemen mit nicht-disjunkten Variablemengen (M M 1 M 2 ): Wir beabsichtigen eine sequentialisierende parallele Komposition, d.h. wenn eine Komponente M i einen Schritt macht, stottern alle anderen Komponenten M j (j i) auf ihren Variablen. Die Abläufe einer Komponente unterscheiden sich bezüglich des Gesamtsystems nur anhand von Stotterschritten. Komposition von Systemen mit expliziter Synchronisation (M M 1 M 2 Σ): Eine explizite Synchronisationskomponente schränkt die möglichen Abläufe von M 1 und M 2 ein. Zusammen mit dem Implementation ist Implikation -Paradigma haben wir es eigentlich stets mit Implementationsformeln der Art M 1... M n N 1... N n (1) zu tun. Diese Art von Beweis kann bei nicht-trivialen Systemen ( (M i N i ), i = 1,..., n) sehr kompliziert werden. Dabei ist insbesondere die linke Seite der Implikation ein Problem. Wir müssen also die Komplexität der Formeln in der Prämisse senken. Der Ansatz, den wir nun weiterverfolgen ist, für die Implikation M 1... M n N i die Konjunktion der M j (j i) durch eine Umgebungsannahme E i zu ersetzen: M i E i N i. Diese Umgebungsannahme ist im Allgemeinen wesentlich weniger komplex als die Konjunktion aller Komponenten. Wie sieht ein Theorem aus, dass uns die Formel (1) mittels Zerlegung und Umgebungsannahmen beweist? 1

2 Theorem-Überlegungen Ein Theorem der Form M 1 E 1 N 1. M n E n N n M 1... M n N 1... N n hat eine ungenügende Prämisse. Die Umgebungsannahmen sind durch nichts gerechtfertigt. Da diese gerade die verbleibenden Systemkomponenten (vereinfacht) beschreiben sollen, wäre eine Absicherung der Form: i j M j E i zwar richtig, aber wiederum deutlich zu komplex für unser Anliegen. Nicht gerade naheliegend, aber auch nicht abwegig ist es, jede Umgebungsannahme E i durch die strukturell einfachere Spezifikation N 1... N n abzusichern. Wir gehen mit diesem Ansatz davon aus, dass jede Komponente M i nur Umgebungseigenschaften benötigt, die auch als essentielles Verhalten der anderen Komponenten in der High- Level -Spezifikation gesichert sind. Dann erhalten wir folgendes Theorem: N 1... N n E i (i = 1,..., n) M i E i N i (i = 1,..., n) M 1... M n N 1... N n Leider beinhaltet dieses Theorem einen Ringschluss. N 1... N n taucht in den Vorraussetzung als Prämisse auf und im Schluss auf der rechten Seite der Implikation. Dies fällt uns in einem sehr einfachen Fall bereits auf die Füsse: Seien M i und E i jeweils äquivalent: M i = E i. Dann reduziert sich das Theorem auf Wenn N 1... N n M i und M i N i (für alle i = 1,..., n), dann M 1... M n N 1... N n. Dieser Schluss setzt sich selbst voraus und ist damit nicht gültig. Das offensichtliche Problem liegt darin, dass wir äquivalentes Verhalten von E i und M i zulassen. Was das genau bedeutet, soll uns im folgenden interessieren. 3 Komponente und Umgebung Unser Theorem verfolgt den Ansatz eine Systemkomponente als offenes System zu betrachten. Dabei kann die Spezifikation einer Komponente nur gewisse Eigenschaften garantieren, wenn die Umgebung gewisse Voraussetzungen sichert. Doch was passiert, wenn diese Vorraussetzungen nicht erfüllt sind? Wir dürfen davon ausgehen, dass die Komponente nun ihre Eigenschaften nicht länger garantieren kann. Die interessante Frage ist, ab wann wir dies zulassen, so dass das Verhalten der Komponente immer noch ein gültiges bezüglich seiner Umgebung ist? Zwei abstrakte Beispiele: 2

σ 1 : s 0 s 1 s 2 s 3 s 4... E i : true true true false false... M i : true true true false false... σ 2 : s 0 s 1 s 2 s 3 s 4... E i : true true true false false... M i : true true true true false... Ablauf σ 1 und Ablauf σ 2 unterscheiden zwei grundsätzliche Verhalten. Im ersten Fall verletzen Komponente und Umgebung ihre Eigenschaften gleichzeitig, im letzteren Fall sieht die Komponente die Verletzung der Umgebungseigenschaft und geht erst danach in einen fehlerhaften Zustand. Wenn die Komponente tatsächlich nur über sich selbst redet und keine Eigenschaften der Umgebung mitspezifiziert, dann kann die Komponente nicht vorraussehen, dass die Umgebung einen Fehler machen wird. Der Fehler materialsiert sich für die Komponente erst im Folgezustand. Dieses Verhalten ist in σ 2 repräsentiert. σ 1 hingegen setzt entweder vorraus, dass die Komponente mehr von der Umgebung sieht, als für sie nötig wäre, oder die Komponente verletzt von ganz allein, ohne Einwirken der Umgebung seine Eigenschaften. σ 2 spiegelt die kausale Abhängigkeit der Komponente von der Umgebung korrekt wieder, σ 1 nicht. In unserem Theorem hat uns gerade das nicht-kausale Verhalten, wo Komponente und Umgebung gleichzeitig (äquivalent) die geforderten Eigenschaften verletzen, gestört. Wir werden also Forderungen an kausale Abhängigkeiten in unserem Theorem postulieren müssen. 4 Kausalität und Assumption/Guarantee-Spezifikationen Martin Abadi und Leslie Lamport haben für dieses Problem der kausalen Abhängigkeiten einige temporale Operatoren entworfen. Die beiden Operatoren und finden für Assumption/Guarantee-Spezifikationen Anwendung. Mit den obigen Abläufen σ 1 und σ 2 gilt: σ 1 = E i M i und σ 2 = E i M i, sowie σ 2 = E i Mi, jedoch σ 1 = E i Mi. Der Operator unterscheidet also gerade Abläufe anhand der kausalen Abhängigkeiten. Spezifikationen der Form E M sind damit die formale Fassung für Assumption/Guarantee- Spezifikationen. Sie formulieren die Aussage M gilt mindestens so lange, wie E gilt. Damit können wir für ein offenes System Beweise führen. Ein weiterer Operator ist der Operator. Angewandt auf eine Formel E: E v garantiert, dass, wenn E in einem Ablauf jemals falsch werden sollte, v ab dann für immer stottert. σ 3 : s 0 s 1 s 2 s 3 s 4 s 5... E : true true true false false false... v : 1 2 3 5 6 6... M : true true true true??... 3

E ist in σ 3 nicht erfüllt. E v hingegen ist erfüllt, da nachdem E seine Eigenschaft verletzt hat, v nur noch stottert. Der Operator verlängert gewissermaßen die Gültigkeit von E unter gewissen Annahmen. Interessant wird dies erst wieder, wenn wir E und M zusammenbringen. E M ist in σ 3 nicht erfüllt. E v M ist erfüllt. Durch das Stottern von v können wir keine allgemeinen Angaben über das korrekte Verhalten von M machen. Aber wir sind durch den Operator wiederum in der Lage die kausale Abhängigkeit zwischen E und M auszudrücken. Dass die diese Operatoren alle eng zusammenhängen zeigt sich auch in folgendem Satz: Wenn E und M Sicherheitseigenschaften sind und v alle (freien) Variablen von M beinhaltet, dann sind E M und E v M äquivalent. 5 Das Dekompositions-Theorem Es zeigt sich, dass wir für unser Theorem nicht alle Implikationen in voller Größe in der Prämisse beweisen müssen. Häufig genügt es die Beweise über Sicherheitseigenschaften zu führen, was die Beweisführung selbst entsprechend vereinfacht. Da wir nicht jeder TLA-Formel nur anhand ihres Namens M ansehen, ob sie auch Lebendigkeitseigenschaften beinhaltet, führen Abadi und Lamport einen weiteren Operator C ein. Zu einer gegebenen Formel M ist C(M) die stärkste Sicherheitseigenschaft, so dass gilt = M C(M). Aus dieser recht abstrakten Definition folgt, dass, wenn M Init [Next] v F air in Normalform vorliegt, C(M) = Init [Next] v ist. Wir wissen nun genug, um das Dekompositions-Theorem von Abadi und Lamport zu verstehen. Dekompositions-Theorem: Wenn für i = 1,..., n dann gilt (1) = C(N 1 )... C(N n ) E i (2)(a) = C(E i ) v C(M i ) C(N i ) (2)(b) = E i M i N i = M 1... M n N 1... N n In diesem Theorem sind mehrere Aspekte berücksichtigt. Zum einen eine Form der Prämissen, die den Beweisaufwand auf ein erträgliches Maß reduzieren. Zum anderen die Forderung nach kausaler Abhängigkeit zwischen Umgebung und Komponente. Dieses Theorem findet in all den Situationen Anwendung, wo die beiden Spezifikationen M 1... M n und N 1... N n als Dekomposition zweier großer Systeme M und N bereits als korrekt bewiesen wurden und nun die Implementation M N auf die Dekomposition zurückgeführt wird. Anstatt den Beweis über das gesamte System zu führen, wird er lokal an den einzelnen Komponenten (sh. Prämisse (2)(a) und (2)(b)) durchgeführt. Diese Vereinfachung ist bedeutsam. Die Trennung in (2)(a) und (2)(b) isoliert den Beweis der kausalen Abhängigkeit auf Sicherheitseigenschaften, da diese auch nur hier relevant sind. 4

Mit diesem Theorem geben Abadi und Lamport noch einige Sätze und ein Beweisverfahren an, die die Beweisführung der Prämissen unterstützen. 6 Das Kompositions-Theorem Ausgehend von Dekompositions-Theorem haben Abadi und Lamport noch ein weiteres Theorem bewiesen. Es beschäftigt sich mit der Komposition und Implementation von Assumption/Guarantee-Spezifikationen. Letztere beschreiben Eigenschaften offener System auf einem Niveau, dass nicht notwendigerweise die komplette Spezifikation des Systems beinhaltet, sondern vielmehr zugrunde legt. Die Formel E M wird in der Regel anhand einer Systemspezifikation M bewiesen. Da diese selbst nicht in der Formel auftaucht sind Implementationsbeweise über Assumption/Guarantee-Spezifikationen ebenfalls aufwändig zu führen. Gegeben seien E 1 M1,..., E n Mn und E M, die jeweils korrekt seien. Wie schon beim Dekompositions-Theorem möchten wir die Implikation n i=1 (E i M i ) (E M) beweisen. Das Hauptproblem dieser Implikation ist der Operator, der letztlich kausale Abhängigkeiten beschreibt. Das Kompositions-Theorem löst diesen auf. Kompositions-Theorem: Wenn für i = 1,..., n dann gilt (1) = C(E) C(M 1 )... C(M n ) E i (2)(a) = C(E i ) v C(M 1 )... C(M n ) C(M) (2)(b) = E i M 1... M n M = n (E i Mi ) (E M) i=1 Das Kompositions-Theorem erlaubt es uns direkt über Assumption/Guarantee-Spezifikation zu beweisen, ohne den Umweg über die Systemspezifiaktion zu nehmen. Für die Form und die Verwendung des Kompositions-Theorem gelten ähnliche Argumente, wie für das Dekompositions-Theorem. Literatur Abadi, Lamport: Conjoining Specifications, ACM Transactions on Programming Languages and Systems, vol.17, no.3, ACM Press, pp. 507 535, May 1995 Lamport: Composition: A Way to Make Proofs Harder, Lecture Notes in Computer Science, vol.1536, pp. 402 423, 1998 5