Proseminar Assertions An Axiomatic Proof Technique for Parallel Programs (S. Owicki und D. Gries) Hendrik Pfeiffer Betreuerin: Prof. Dr. Heike Wehrheim 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 Partielle Korrektheit nach der Ausführung gilt eine bestimmte Eigenschaft Terminierung Totale Korrektheit das Programm hält bei korrekter Eingabe Problemstellung Sequentiell (Hoare) Parallel (Owicki/Gries) Seite 3 von 22 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: {P} Anweisung {Q} (Standard-Beweisskizze) • Ableitungsregel: Annahmen (bekannt) Folgerung Problemstellung Sequentiell (Hoare) Parallel (Owicki/Gries) Seite 5 von 22 Parallelität 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: x := 1; y := 2; S = [x := y || y := x ]; Zuweisungen nicht atomar 1. x = y = 1 2. x = y = 2 3. x = 2 und y = 1 Zuweisungen atomar 1. x = y = 1 2. x = y = 2 Problemstellung Sequentiell (Hoare) Parallel (Owicki/Gries) Seite 8 von 22 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 T1 T2 S3 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 Interleaving: einzelne Anweisungen können sich nicht beeinflussen Beweisverfahren vereinfacht Problemstellung Sequentiell (Hoare) Parallel (Owicki/Gries) Seite 11 von 22 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: {P1} S1 {Q1} {P…} … {Q…} {Pn} Sn {Qn} folgt S1 {P1 Λ P… Λ Pn} … {Q1 Λ Q… Λ Qn} Sn Problemstellung Sequentiell (Hoare) Parallel (Owicki/Gries) Seite 13 von 22 Cobegin-Anweisung: Beispiel 1 Beispiel: {x=1} x:=2; x := 1; y := 2; S = [x := 2 || y := 1 ]; {x=2} {y=2} y:=1; {y=1} Problemstellung Sequentiell (Hoare) Parallel (Owicki/Gries) Seite 14 von 22 Cobegin-Anweisung: Beispiel 1 Beispiel: {x=1} x:=2; x := 1; y := 2; S = [x := 2 || y := 1 ]; {x=2} {y=2} y:=1; {y=1} x:=1; {x=1 Λ y=2} y:=2; {x=2 Λ y=1} Problemstellung Sequentiell (Hoare) Parallel (Owicki/Gries) Seite 14 von 22 Cobegin-Anweisung: Beispiel 2 Beispiel: {x=1 Λ y=2} x:=y; x := 1; y := 2; S = [x := y || y := x ]; {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 Beispiel: {x=1 Λ y=2} x:=y; {(x=1 Λ y=2) Λ (x=2 Λ y=2)} x := 1; y := 2; S = [x := y || y := x ]; {x=2 Λ y=2} {x=1 Λ y=2} y:=x; {x=1 Λ y=1} x:=y; {(x=2 Λ y=2) y:=x; Λ (x=1 Λ y=1)} Problemstellung Sequentiell (Hoare) Parallel (Owicki/Gries) Seite 15 von 22 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 Beweisidee für parallele Programme: 1. Korrektheit für Teilprogramme beweisen 2. 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 Interferenz-Freiheit: einzelne Anweisungen Anweisung T interferiert nicht mit Beweis {P} S {Q}, falls gilt: {Q Λ pre(T)} T {Q} S: {x=1} T: {y=2} x:=2; y:=1; {x=2} {y=1} Problemstellung Sequentiell (Hoare) Parallel (Owicki/Gries) Seite 18 von 22 Interferenz-Freiheit: einzelne Anweisungen Anweisung T interferiert nicht mit Beweis {P} S {Q}, falls gilt: {Q Λ pre(T)} T {Q} S: {x=1} T: {y=2} x:=2; y:=1; {x=2} {y=1} {x=2 Λ y=2} {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} S {Q} {P1} S1 {U1} T1 {Q1} {V1} {P2} {U2} S2 T2 {Q2} {V2} {U} T {V} Problemstellung Sequentiell (Hoare) Parallel (Owicki/Gries) Seite 20 von 22 Interferenz-Freiheit: Standard-Beweisskizzen {P} S {Q} {P1} S1 {U1} T1 {Q1} {V1} {P2} {U2} S2 T2 {Q2} {V2} {U} T {V} Problemstellung Sequentiell (Hoare) Parallel (Owicki/Gries) Seite 20 von 22 Interferenz-Freiheit: Standard-Beweisskizzen {P} S {Q} {P1} S1 {U1} T1 {Q1} {V1} {P2} {U2} S2 T2 {Q2} {V2} {U} T {V} Problemstellung Sequentiell (Hoare) Parallel (Owicki/Gries) Seite 20 von 22 Interferenz-Freiheit: Standard-Beweisskizzen {P} S {Q} {P1} S1 {U1} T1 {Q1} {V1} {P2} {U2} S2 T2 {Q2} {V2} {U} T {V} Problemstellung Sequentiell (Hoare) Parallel (Owicki/Gries) Seite 20 von 22 Interferenz-Freiheit: Standard-Beweisskizzen {P} S {Q} {P1} S1 {U1} T1 {Q1} {V1} {P2} {U2} S2 T2 {Q2} {V2} {U} T {V} Problemstellung Sequentiell (Hoare) Parallel (Owicki/Gries) Seite 20 von 22 Interferenz-Freiheit: Standard-Beweisskizzen {P} S {Q} {P1} S1 {U1} T1 {Q1} {V1} {P2} {U2} S2 T2 {Q2} {V2} {U} T {V} Problemstellung Sequentiell (Hoare) Parallel (Owicki/Gries) Seite 20 von 22 Interferenz-Freiheit: Standard-Beweisskizzen {P} S {Q} {P1} S1 {U1} T1 {Q1} {V1} {P2} {U2} S2 T2 {Q2} {V2} {U} T {V} Problemstellung Sequentiell (Hoare) Parallel (Owicki/Gries) Seite 20 von 22 Interferenz-Freiheit: Standard-Beweisskizzen {P} S {Q} {P1} S1 {U1} T1 {Q1} {V1} {P2} {U2} S2 T2 {Q2} {V2} {U} T {V} Problemstellung Sequentiell (Hoare) Parallel (Owicki/Gries) Seite 20 von 22 Interferenz-Freiheit: Standard-Beweisskizzen {P} S {Q} {P1} S1 {U1} T1 {Q1} {V1} {P2} {U2} S2 T2 {Q2} {V2} {U} T {V} Problemstellung Sequentiell (Hoare) Parallel (Owicki/Gries) Seite 20 von 22 Beweisidee formal {P1} S1 {Q1} ,…, {Pn} Sn {Qn} 1. Korrektheitsbeweis (sequentiell) {P1} S1 {Q1},…, {Pn} Sn {Qn} sind interferenzfrei 2. {P 1 Λ…Λ 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