An Axiomatic Proof Technique for Parallel Programs Proseminar Assertions An Axiomatic Proof Technique for Parallel Programs (S. Owicki und D. Gries) Hendrik Pfeiffer Betreuerin: Prof. Dr. Heike Wehrheim
Beweisidee von Hoare auf parallele Programme erweitern Themeninhalt Beweisidee von Hoare auf parallele Programme erweitern Verständnis der Parallelität Befehle für Parallelität Problemstellung Sequentiell (Hoare) Parallel (Owicki/Gries) Seite 2 von 22
Themenabgrenzung Totale Korrektheit Partielle Korrektheit Terminierung nach der Ausführung gilt eine bestimmte Eigenschaft Totale Korrektheit Terminierung das Programm hält bei korrekter Eingabe Problemstellung Sequentiell (Hoare) Parallel (Owicki/Gries) Seite 3 von 22
Komplexität der Programme Einsatz in kritischen Bereichen Motivation Komplexität der Programme Einsatz in kritischen Bereichen Verifikation bei parallelen Programmen schwierig informeller Beweis reicht nicht aus Problemstellung Sequentiell (Hoare) Parallel (Owicki/Gries) Seite 4 von 22
Notationen nach Hoare Hoare-Triple: Ableitungsregel: {P} Anweisung {Q} (Standard-Beweisskizze) Ableitungsregel: {P} Anweisung {Q} Annahmen (bekannt) Folgerung Problemstellung Sequentiell (Hoare) Parallel (Owicki/Gries) Seite 5 von 22
Verständnis der Parallelität Befehle für parallele Abschnitte Atomarität Verständnis der Parallelität Befehle für parallele Abschnitte Beweisidee Interferenz-Freiheit Problemstellung Sequentiell (Hoare) Parallel (Owicki/Gries) Seite 6 von 22
Atomarität Eine Aktion A heißt atomar, wenn die in A vorkommenden Variablen während der Ausführung nur von A verändert werden. Problemstellung Sequentiell (Hoare) Parallel (Owicki/Gries) Seite 7 von 22
Atomarität Beispiel: x := 1; y := 2; S = [x := y || y := x ]; Problemstellung Sequentiell (Hoare) Parallel (Owicki/Gries) Seite 8 von 22
Atomarität Beispiel: Zuweisungen nicht atomar Zuweisungen atomar x := 1; y := 2; S = [x := y || y := x ]; Zuweisungen nicht atomar Zuweisungen atomar x = y = 1 x = y = 2 x = 2 und y = 1 x = y = 1 x = y = 2 Problemstellung Sequentiell (Hoare) Parallel (Owicki/Gries) Seite 8 von 22
Auswertungen von Ausdrücken Atomarität atomar bei Owicki und Gries: Auswertungen von Ausdrücken Wertzuweisungen Atomare Bereiche Problemstellung Sequentiell (Hoare) Parallel (Owicki/Gries) Seite 9 von 22
Verständnis der Parallelität Owicki/Gries: Interleaving Verzahnung statt Parallelität Sehr ähnlich zum sequentiellen Ablauf S1 S2 S3 T1 T2 T3 Zeit Problemstellung Sequentiell (Hoare) Parallel (Owicki/Gries) Seite 10 von 22
Verständnis der Parallelität Owicki/Gries: Interleaving Verzahnung statt Parallelität Sehr ähnlich zum sequentiellen Ablauf S1 T1 T2 S2 T3 S3 Zeit Problemstellung Sequentiell (Hoare) Parallel (Owicki/Gries) Seite 10 von 22
Interleaving Parallelität einzelne Anweisungen können sich nicht beeinflussen Beweisverfahren vereinfacht Problemstellung Sequentiell (Hoare) Parallel (Owicki/Gries) Seite 11 von 22
Synchronisation und Atomarität: Befehle für Parallelität Synchronisation und Atomarität: await B then S parallele Ausführung: cobegin S1//S2//…//Sn coend Problemstellung Sequentiell (Hoare) Parallel (Owicki/Gries) Seite 12 von 22
Cobegin-Anweisung Ziel: {P1} S1 {Q1} {P…} … {Q…} {Pn} Sn {Qn} Problemstellung Sequentiell (Hoare) Parallel (Owicki/Gries) Seite 13 von 22
Cobegin-Anweisung Ziel: folgt {P1} S1 {Q1} {P…} … {Q…} {Pn} Sn {Qn} S1 {P1 Λ P… Λ Pn} … {Q1 Λ Q… Λ Qn} Sn Problemstellung Sequentiell (Hoare) Parallel (Owicki/Gries) Seite 13 von 22
Cobegin-Anweisung: Beispiel 1 x := 1; y := 2; S = [x := 2 || y := 1 ]; {x=1} x:=2; {x=2} {y=2} y:=1; {y=1} Problemstellung Sequentiell (Hoare) Parallel (Owicki/Gries) Seite 14 von 22
Cobegin-Anweisung: Beispiel 1 x := 1; y := 2; S = [x := 2 || y := 1 ]; {x=1} x:=2; {x=2} {y=2} y:=1; {y=1} x:=1; {x=1 Λ y=2} {x=2 Λ y=1} y:=2; Problemstellung Sequentiell (Hoare) Parallel (Owicki/Gries) Seite 14 von 22
Cobegin-Anweisung: Beispiel 2 x := 1; y := 2; S = [x := y || y := x ]; {x=1 Λ y=2} x:=y; {x=2 Λ y=2} {x=1 Λ y=2} y:=x; {x=1 Λ y=1} Problemstellung Sequentiell (Hoare) Parallel (Owicki/Gries) Seite 15 von 22
Cobegin-Anweisung: Beispiel 2 x := 1; y := 2; S = [x := y || y := x ]; {x=1 Λ y=2} x:=y; {x=2 Λ y=2} {x=1 Λ y=2} y:=x; {x=1 Λ y=1} {(x=1 Λ y=2) Λ (x=2 Λ y=2)} {(x=2 Λ y=2) Λ (x=1 Λ y=1)} x:=y; y:=x; Problemstellung Sequentiell (Hoare) Parallel (Owicki/Gries) Seite 15 von 22
{P1 Λ…Λ Pn} cobegin S1||…||Sn coend {Q1 Λ…Λ Qn} Cobegin-Anweisung Ziel: {P1} S1 {Q1},…, {Pn} Sn {Qn} {P1 Λ…Λ Pn} cobegin S1||…||Sn coend {Q1 Λ…Λ Qn} kein Unterschied zwischen sequentieller und paralleler Ausführung funktioniert bei Verzicht auf gemeinsame Variablen Problemstellung Sequentiell (Hoare) Parallel (Owicki/Gries) Seite 16 von 22
Beweisidee für parallele Programme: Korrektheit für Teilprogramme beweisen Zeigen, dass sich Beweise der Teilprogramme gegenseitig nicht beeinflussen Interferenz-Freiheit beweisen Problemstellung Sequentiell (Hoare) Parallel (Owicki/Gries) Seite 17 von 22
Interferenz-Freiheit: einzelne Anweisungen Anweisung T interferiert nicht mit Beweis {P} S {Q}, falls gilt: {Q Λ pre(T)} T {Q} Problemstellung Sequentiell (Hoare) Parallel (Owicki/Gries) Seite 18 von 22
S: T: Interferenz-Freiheit: einzelne Anweisungen Anweisung T interferiert nicht mit Beweis {P} S {Q}, falls gilt: {Q Λ pre(T)} T {Q} S: T: {x=1} {y=2} x:=2; y:=1; {x=2} {y=1} Problemstellung Sequentiell (Hoare) Parallel (Owicki/Gries) Seite 18 von 22
S: T: Interferenz-Freiheit: einzelne Anweisungen Anweisung T interferiert nicht mit Beweis {P} S {Q}, falls gilt: {Q Λ pre(T)} T {Q} S: T: {x=1} {y=2} {x=2 Λ y=2} x:=2; y:=1; {x=2} {y=1} {x=2} Problemstellung Sequentiell (Hoare) Parallel (Owicki/Gries) Seite 18 von 22
Interferenz-Freiheit: Standard-Beweisskizzen Die Standardbeweisskizzen {P} S {Q} und {U} T {V} sind interferenzfrei, falls gilt: Es existiert keine Anweisung Ti in T, die mit einer Beweisskizze {Pj} Sj {Qj} in S interferiert und andersherum Problemstellung Sequentiell (Hoare) Parallel (Owicki/Gries) Seite 19 von 22
Interferenz-Freiheit: Standard-Beweisskizzen {P} {P1} {U1} {U} S S1 T1 T {Q1} {V1} {P2} {U2} S2 T2 {Q} {Q2} {V2} {V} Problemstellung Sequentiell (Hoare) Parallel (Owicki/Gries) Seite 20 von 22
Interferenz-Freiheit: Standard-Beweisskizzen {P} {P1} {U1} {U} S S1 T1 T {Q1} {V1} {P2} {U2} S2 T2 {Q} {Q2} {V2} {V} Problemstellung Sequentiell (Hoare) Parallel (Owicki/Gries) Seite 20 von 22
Interferenz-Freiheit: Standard-Beweisskizzen {P} {P1} {U1} {U} S S1 T1 T {Q1} {V1} {P2} {U2} S2 T2 {Q} {Q2} {V2} {V} Problemstellung Sequentiell (Hoare) Parallel (Owicki/Gries) Seite 20 von 22
Interferenz-Freiheit: Standard-Beweisskizzen {P} {P1} {U1} {U} S S1 T1 T {Q1} {V1} {P2} {U2} S2 T2 {Q} {Q2} {V2} {V} Problemstellung Sequentiell (Hoare) Parallel (Owicki/Gries) Seite 20 von 22
Interferenz-Freiheit: Standard-Beweisskizzen {P} {P1} {U1} {U} S S1 T1 T {Q1} {V1} {P2} {U2} S2 T2 {Q} {Q2} {V2} {V} Problemstellung Sequentiell (Hoare) Parallel (Owicki/Gries) Seite 20 von 22
Interferenz-Freiheit: Standard-Beweisskizzen {P} {P1} {U1} {U} S S1 T1 T {Q1} {V1} {P2} {U2} S2 T2 {Q} {Q2} {V2} {V} Problemstellung Sequentiell (Hoare) Parallel (Owicki/Gries) Seite 20 von 22
Interferenz-Freiheit: Standard-Beweisskizzen {P} {P1} {U1} {U} S S1 T1 T {Q1} {V1} {P2} {U2} S2 T2 {Q} {Q2} {V2} {V} Problemstellung Sequentiell (Hoare) Parallel (Owicki/Gries) Seite 20 von 22
Interferenz-Freiheit: Standard-Beweisskizzen {P} {P1} {U1} {U} S S1 T1 T {Q1} {V1} {P2} {U2} S2 T2 {Q} {Q2} {V2} {V} Problemstellung Sequentiell (Hoare) Parallel (Owicki/Gries) Seite 20 von 22
Interferenz-Freiheit: Standard-Beweisskizzen {P} {P1} {U1} {U} S S1 T1 T {Q1} {V1} {P2} {U2} S2 T2 {Q} {Q2} {V2} {V} Problemstellung Sequentiell (Hoare) Parallel (Owicki/Gries) Seite 20 von 22
{P1} S1 {Q1},…, {Pn} Sn {Qn} sind interferenzfrei Beweisidee formal 1. {P1} S1 {Q1} ,…, {Pn} Sn {Qn} Korrektheitsbeweis (sequentiell) 2. {P1} S1 {Q1},…, {Pn} Sn {Qn} sind interferenzfrei {P1 Λ…Λ Pn} cobegin S1||…||Sn coend {Q1 Λ…Λ Qn} Problemstellung Sequentiell (Hoare) Parallel (Owicki/Gries) Seite 21 von 22
Zusammenfassung Beweismethode für parallele Programme mit gemeinsamen Variablen Methode beruht auf Hoare´s Beweisschema für sequentielle Programme In den 70er Jahren entwickelt Problem: sehr aufwendig (exponentiell)
Vielen Dank für Eure Aufmerksamkeit