WikiDer > Hoarelogica
Hoarelogica ist eine formale Logik, die im Informatik wird verwendet, um darüber zu sprechen Programme zu begründen. Sie ist nach dem Schöpfer der Basis des Mechanismus benannt, Tony Hoare.
Hoaretriples und Korrektheit
Hoarelogica ist eine Anwendung der Prädikatsrechnung zur Programmentwicklung. Die Logik war in 1969 durch Tony Hoare im Artikel Eine axiomatische Grundlage für die Computerprogrammierung eingeführt. Das Hoare-Triple ist die Grundlage der Hoare-Logik:
- ,
in welchem und sind logische Prädikatsformeln, die eine Menge von Zuständen beschreiben und eine oder mehrere Anweisungen. Das heisere Triple bedeutet, dass, wenn sich ein Programm in einem Zustand befindet, in dem die Bedingung (die Voraussetzung) gilt, und ausgeführt wird, befindet sich das Programm dann in einem Zustand, in dem die Bedingung (die Postbedingung) gilt.
Ein heiseres Triple ist teilweise richtig, wenn: wenn geldt im aktuellen Zustand wahr ist, und ausgeführt wird, dann in dem Zustand, der nach ausgeführt wird, . Das könnte sein endet nie, weil endet in einer Endlosschleife (beendet dann nicht). In diesem Fall gibt es keinen Zustand nach der Ausführung , und möge sei also eine willkürliche Formel.
Ein heiseres Triple ist ganz richtig, wenn es teilweise richtig ist und endet immer.
Regeln zum Beweis der Hoare-Logik
Die Hoare-Logik enthält Beweisregeln, mit denen es möglich ist, die teilweise oder vollständige Richtigkeit eines Hoare-Tripels zu beweisen. Die ursprünglichen Beweisregeln verwendeten eine einfache, sequentielle Programmiersprache, aber viele Erweiterungen der Logik wurden von anderen entwickelt. Für eine einfache Programmiersprache bestehend aus Variablen, Zuweisungen, bedingten Sprüngen (wenn dann sonst) und Schleifen (während B tut) besteht die hoare Logik, mit der partielle Korrektheit bewiesen werden kann, aus folgenden Beweisregeln (für vollständige Korrektheit ist zusätzlich ein Beweis erforderlich, der das Programm immer beendet):
Attributionsaxiom
Mit dem Zuweisungsaxiom kann man über Variablenzuweisungen nachdenken.
Hier steht für die Formel wobei alle Vorkommen der Variablen ersetzt werden durch . Mit diesem Axiom lässt sich zum Beispiel beweisen, dass das hoare Tripel ist richtig.
Inferenzregel
Die Inferenzregel kann die Vorbedingung eines Hoare-Triples verstärken oder die Nachbedingung abschwächen:
Kompositionsregel
Die Kompositionsregel ermöglicht das Nachdenken über Programme, die aus mehr als einem Befehl bestehen.
Iterationsregel
Die Iterationsregel ermöglicht es Ihnen, über Schleifen nachzudenken.
In der obigen Zeile, die Schleifenbedingung: Wenn die Schleife endet, dann ist Nicht mehr wahr. Die Formel ist eine Schleifeninvariante, eine Formel, die kurz davor und kurz danach immer wahr ist ist durchgeführt.
Auswahlregel
Die Wahlregel wird verwendet, um zu argumentieren wenn-dann-sonst-Übungen.
Schwächste Voraussetzungen
Ein Beitrag aus dem Jahr 1975 zur heiseren Logik, von Edsger W. Dijkstraße, sollte schwächste Voraussetzungen geben. Die schwächste Voraussetzung einer Formel zu einem Programm een , geschrieben , ist die schwächste Bedingung (die Bedingung, dass die größte Menge von Programmzuständen erfüllt) so dass ist ein völlig korrektes hoares Tripel (d.h. unter anderem das beendet).
Die schwächste Voraussetzung lässt sich wie folgt berechnen:
- Vergeben:
- Sequentielle Zusammensetzung:
- Wahl:
- Wiederholung:
- bei welchem
- Hier ist induktiv definiert.
Literatur
- WAGEN. heiser. Eine axiomatische Grundlage für die Computerprogrammierung (pdf-Datei). Im: Mitteilungen der ACM. 12(10): 576–585, 1969.
- W.H.J. Feijen und A.J.M. aus Gasteren. Über eine Methode der Multiprogrammierung. Springer-Verlag, 1999.
- E. W. Dijkstra und C. S. Schölten. Prädikatenkalkül und Programmsemantik. Springer-Verlag, 1990.