Logik von Hoare

Logik von Hoare (auch bekannt als Logik von Floyd-Hoare oder Regierungen von Hoare) sind ein formelles System mit einer Reihe logischer Regeln, um streng über die Genauigkeit von Computerprogrammen vernünftig zu urteilen. Es wurde 1969 vom britischen Computerwissenschaftler und Logiker C. A. R. Hoare vorgeschlagen, und nachher von Hoare und anderen Forschern raffiniert. Die ursprünglichen Ideen wurden durch die Arbeit von Robert Floyd entsamt, der ein ähnliches System für Flussschemen veröffentlicht hatte.

Dreifacher Hoare

Die Haupteigenschaft der Logik von Hoare ist der dreifache Hoare. Ein dreifacher beschreibt, wie die Ausführung eines Stückes des Codes den Staat der Berechnung ändert. Ein dreifacher Hoare ist der Form

:

wo P und Q Behauptungen sind und C ein Befehl ist. P wird die Vorbedingung und Q die Postbedingung genannt: Wenn die Vorbedingung entsprochen wird, gründet der Befehl die Postbedingung. Behauptungen sind Formeln in der Prädikat-Logik.

Logik von Hoare stellt Axiome und Interferenzregeln für alle Konstruktionen einer einfachen befehlenden Programmiersprache zur Verfügung. Zusätzlich zu den Regeln für die einfache Sprache in der ursprünglichen Zeitung von Hoare sind Regeln für andere Sprachkonstruktionen seitdem von Hoare und vielen anderen Forschern entwickelt worden. Es gibt Regeln für die Parallelität, Verfahren, Sprünge und Zeigestöcke.

Teilweise und ganze Genauigkeit

Standardlogik von Hoare beweist nur teilweise Genauigkeit, während Beendigung getrennt bewiesen werden muss. So ist das intuitive Lesen eines dreifachen Hoares: Wann auch immer P des Staates hält, bevor die Ausführung von C dann Q später halten wird, oder C nicht endet. Bemerken Sie dass, wenn C nicht endet, dann gibt es nicht "danach", so kann Q jede Behauptung überhaupt sein. Tatsächlich kann man Q wählen, um falsch zu sein, um auszudrücken, dass C nicht endet.

Gesamtgenauigkeit kann auch mit einer verlängerten Version Während Regel bewiesen werden.

Regeln

Leeres Behauptungsaxiom-Diagramm

Die leere Behauptungsregel behauptet, dass die Hopser-Behauptung den Staat des Programms so nicht ändert, was auch immer für wahr hält, bevor Hopser auch später für wahr hält.

:

Anweisungsaxiom-Diagramm

Das Anweisungsaxiom stellt fest, dass nach der Anweisung jedes Prädikat für die Variable hält, die vorher für die Rechte der Anweisung wahr war:

:

Hier zeigt den Ausdruck P an, in dem alle freien Ereignisse der Variable x durch den Ausdruck E ersetzt worden sind.

Das Anweisungsaxiom bedeutet, dass die Wahrheit dessen zur Nachdem-Anweisungswahrheit dessen gleichwertig ist. So waren vor der Anweisung durch das Anweisungsaxiom wahr, würde dann nachfolgend auf der sein wahr. Umgekehrt, waren vor dem Zuweisungsbefehl falsch, muss dann folglich falsch sein.

Das ist zum Ausspruch dass gleichwertig, die Vorbedingung zu finden, zuerst die Postbedingung zu nehmen und alle Ereignisse der linken Seite der Anweisung mit der Rechte der Anweisung zu ersetzen. Hüten Sie sich davor zu versuchen, das umgekehrt durch den folgenden diese falsche Denkart zu tun:

Beispiele von gültigen verdreifachen sich schließen Sie ein:

: *

: *

Das von Hoare vorgeschlagene Anweisungsaxiom gilt nicht, wenn sich mehr als ein Name auf denselben versorgten Wert beziehen kann. Zum Beispiel,

:

ist nicht eine wahre Behauptung, wenn sich x und y auf dieselbe Variable beziehen, weil keine Vorbedingung A y veranlassen kann, 3 zu sein, nachdem x auf 2 gesetzt wird.

Regel der Zusammensetzung

Die Regierung von Hoare der Zusammensetzung gilt für folgend durchgeführte Programme S und T, wo S vor T durchführt und S geschrieben wird; T.

:

Denken Sie zum Beispiel die folgenden zwei Beispiele des Anweisungsaxioms:

:

und

:

Durch die Sequencing-Regel hört man auf:

:

Bedingte Regel

:

{\{P\}\\\textbf {wenn }\\B\\textbf {dann }\\S\\textbf {sonst }\\T\\textbf {endif }\\\{Q\}} \! </Mathematik>

Folge-Regel

:

\frac {P^\\Haupt\rightarrow\P\, \\lbrace P \rbrace\S\\lbrace Q \rbrace\, \Q \rightarrow\Q^\\erster }\

{\lbrace P^\\prime\\rbrace\S\\lbrace Q^\\prime\rbrace }\

\! </Mathematik>

Während Regel

:

{\{P \}\\\textbf {während }\\B\\textbf {}\\S\\textbf {getaner }\\\{\\neg B \wedge P\} }\tun

\! </Mathematik>

Hier ist P die Schleife invariant.

Während Regel für die Gesamtgenauigkeit

::

\frac {

In dieser Regel, zusätzlich zum Aufrechterhalten der Schleife invariant, beweist man auch Beendigung über einen Begriff, genannt die Schleife-Variante, hier t, dessen Wert ausschließlich in Bezug auf eine wohl begründete Beziehung während jeder Wiederholung abnimmt. Bemerken Sie, dass, in Anbetracht des invariant P, die Bedingung B andeuten muss, dass t nicht ist, würde ein minimales Element seiner Reihe, für sonst die Proposition dieser Regel falsch sein. Weil die Beziehung"

||

| (Anweisungsaxiom)

| -||||| -|||

| (Folge-Regel)

| -

| Stil = "background:silver;" colspan = "4" |Example 2

| -|||| (Anweisungsaxiom)| -|||

| (

| -

|

||| (Folge-Regel)| }\

Siehe auch

Weiterführende Literatur

  • Robert D. Tennent. Das Spezifizieren der Software (ein Lehrbuch, das eine Einführung in die Logik von Hoare, geschrieben 2002 einschließt), internationale Standardbuchnummer 0-521-00401-2

Links

  • Projektbali hat Hoare logikartige Regeln für eine Teilmenge der javanischen Programmiersprache, für den Gebrauch mit dem Lehrsatz von Isabelle prover definiert
  • SCHLÜSSEL-HOARE ist ein halbautomatisches Überprüfungssystem, das oben auf dem Lehrsatz von KeY prover gebaut ist. Es zeigt eine Rechnung von Hoare für einen einfachen während Sprache.
  • j-Algo-modul Rechnung von Hoare - Eine Visualisierung der Rechnung von Hoare im Algorithmus-Visualisierungsprogramm j-Algo

Erdölgeologie / Mickey Finn (Rauschgifte)
Impressum & Datenschutz