4 Zusicherungen und Tests - Institut für Informatik Augsburg

Werbung
4 ZUSICHERUNGEN UND TESTS
4
21
Zusicherungen und Tests
Bei Beweisen uber imperative Programme, aber auch beim Arbeiten mit Graphen, spielen Zusicherungen eine
groe Rolle.
Zusicherungen sind Pradikate, die gewisse erlaubte oder erwunschte Zustands- oder Knotenmengen charakterisieren.
Daher wollen wir sie bzw. die ihnen entsprechenden Teilmengen auch algebraisch modellieren.
4.1
Zusicherungen und Einschränkung
Am direktesten geht das im Halbring PAT(A) der Pfadmengen uber der Knotenmenge A: Man betrachtet
einfach Teilmengen von A.
• Wir wissen bereits, dass die Teilmengenrelation die nat
urliche Halbringordnung ≤ ist.
• A selbst spielt in PAT(A) die Rolle von 1.
• Die Erf
ullungsmengen von Zusicherungen sind also hier Elemente ≤ 1.
Das ist kein Zufall.
Betrachten wir dazu nochmals die Zusicherungsanweisungen aus Kap. 2.
• F
ur einen Booleschen Ausdruck B verhalt sich assert B wie
if (B) {} else undeniert • Damit ist die Anweisung eine Einschrankung der leeren Anweisung {}:

• F
ur Zustande, in denen B gilt, bewirkt sie den identischen Ubergang,
d.h. der Zustand andert sich nicht.
• F
ur die ubrigen Zustande ist eigentlich kein ordentlicher Nachfolgezustand deniert.

• Damit hat assert B weniger Ubergangsm
oglichkeiten als {}, wir haben assert B ≤ {}.
• Auerdem spielt {} wieder die Rolle der 1 bez
uglich der Hintereinanderschaltung von Anweisungen:
{} ; C = C = C ; {}
• Insgesamt werden also auch hier Zusicherungen durch Elemente ≤ 1 dargestellt.
Wir nehmen daher allgemein die Bedingung p ≤ 1 als notwendig dafur, dass p so etwas wie eine Zusicherungsanweisung darstellt.
Wir zeigen eine einfache, aber im Folgenden laufend verwendete Eigenschaft, die wir dann auch nicht immer
eigens erwahnen:
Lemma 1 (Einschränkung) F
ur p ≤ 1 und beliebiges Halbringelement a gilt
p·a≤a
a·p≤a
Beweis: Wir zeigen nur die linke Ungleichung, die rechte ist symmetrisch.
Nach Lemma 3.4(5) ist · in beiden Argumenten isoton.
Mit der Neutralitat von 1 folgt nun p · a ≤ 1 · a = a.
Algebraische Semantik
t
u
c B. Moller 2007
4 ZUSICHERUNGEN UND TESTS
4.2
22
Logische Verknüpfung von Zusicherungen
Wir haben nun Kandidaten zur algebraischen Modellierung von Zusicherungen bzw. Einschrankungen, namlich
Elemente ≤ 1.
Wir mussen aber auch die logische Verknupfung von Zusicherungen modellieren.
Dazu betrachten wir nochmals die assert-Anweisungen. Es gilt
assert B ; assert C = assert (B && C)
D.h. Komposition solcher Anweisungen entspricht der logischen Konjunktion der zugehorigen Zusicherungen.
Prufen wir, ob das auch in PAT(A) so ist.
Seien P, Q ⊆ A, d.h. P, Q ≤ 1.
Po
nQ
f[ Denition ]g
= f[ Verklebbarkeit von Pfaden mit nur einem Knoten ]g
{p o
n q | p ∈ P, q ∈ Q und p = q}
= f[ Verklebung von Pfaden mit nur einem Knoten ]g
{p | p ∈ P, q ∈ Q und p = q}
= f[ Logik ]g
{p | p ∈ P und p ∈ Q}
= f[ Mengenlehre ]g
=
{p o
n q | p ∈ P, q ∈ Q und p, q verklebbar}
P∩Q
Auch hier fallt also Komposition mit Konjunktion zusammen.
Wie sieht es mit der logischen Disjunktion aus?
• assert (B||C) lasst genau die Zustande passieren\, die B oder C erf
ullen,
"
• hat also genau die Summe der M
oglichkeiten von assert B und assert C.
• Und in PAT(A) gilt analog f
ur P, Q ⊆ A, dass P + Q = P ∪ Q.
Fazit: Die Konjunktion bzw. Disjunktion von Zusicherungen lasst sich durch Produkt bzw. Summe der zugehorigen Elemente ≤ 1 modellieren.
Was bedeuten 1 und 0 in dieser Sicht?
• Oenbar gilt 1 = {} = assert true.
• Also spielt 1 die Rolle des stets wahren Zusicherung, die alle Zustande passieren\ lasst.
"
• Symmetrisch gilt, dass assert false gar keinen Zustand passieren\ lasst,
"

• also gleich dem blockierenden Element 0 mit gar keinen Ubergangsm
oglichkeiten ist.
• Also spielt 0 die Rolle der stets falschen Zusicherung.
• Auch das passt zum Verhalten in PAT(A), wo 1 = A = Menge aller Knoten und 0 = ∅ ist.
Welche Rolle spielt die naturliche Ordnung auf assert-Anweisungen?
• assert B ≤ assert C bedeutet: Jeder Zustand, der von B durchgelassen wird, wird auch von C durchge-
lassen.
Algebraische Semantik
c B. Moller 2007
4 ZUSICHERUNGEN UND TESTS
23
• Mit anderen Worten: Alle Zustande, die B erf
ullen, erfullen C,
• d.h. B impliziert C.
• Auch das passt zum Verhalten in PAT, wo P ≤ Q ⇔ P ⊆ Q.
4.3
Negation und Tests
Nun fehlt uns nur noch die Negation von Zusicherungen.
Anders als Konjunktion und Disjunktion hat sie keine direkte Entsprechung bei den Halbringoperationen.
Daher grenzen wir die Elemente ≤ 1 enger ein, namlich auf diejenigen, die sich negieren lassen; diese nennen
wir kurz Tests (diese Bezeichnung geht auf D. Kozen (1994) zuruck).
Definition 2 [Manes/Benson 1985] Ein Test in einem Halbring S ist ein Element p, das ein logisches Komplement ¬p besitzt, d.h. fur das gilt
p + ¬p = 1
p · ¬p = 0 = ¬p · p
Die Menge aller Tests von S wird mit test(S) bezeichnet.
Da + und · die Rolle von ∨ und ∧ spielen sollen, entspricht die erste Bedingung dem tertium non datur
p ∨ ¬p = true, die zweite der Eigenschaft vom Widerspruch, namlich p ∧ ¬p = false.
Fur das Verhalten bezuglich · sind zwei Gleichungen notwendig,
da · , im Gegensatz zu +, im Allgemeinen nicht kommutativ ist.
Wir zeigen nun, dass diese Denition sinnvoll ist.
Satz 3
(1) Fur einen Test p gilt p ≤ 1.
(2) Das logische Komplement ¬p ist eindeutig bestimmt. Auerdem ist ¬p wieder ein Test, und zwar mit
Komplement p, d.h. es gilt ¬¬p = p.
(3) 0 und 1 sind Tests mit ¬0 = 1 und ¬1 = 0.
(4) Auf Tests ist auch die Multiplikation idempotent, d.h. p · p = p.
(5) Auf Tests ist die Multiplikation kommutativ, d.h. p · q = q · p.
(6) Summe und Produkt von Tests sind wieder Tests; ihre Komplemente gehorchen den Gesetzen von de
Morgan:
¬(p + q) = ¬p · ¬q
¬(p · q) = ¬p + ¬q
(7) Fur Tests p, q, r gelten ein zweites Distributivgesetz und die Absorptionsgesetze
p + q · r = (p + q) · (p + r)
p+p·q=p
(p + q) · p = p
(8) Fur Tests p, q, r gilt r ≤ p · q ⇔ r ≤ p ∧ r ≤ q, d.h. p · q ist die grote untere Schranke (das Inmum)
von p und q in test(S).
Algebraische Semantik
c B. Moller 2007
4 ZUSICHERUNGEN UND TESTS
24
Beachte, dass fur beliebige Halbringelemente das Inmum nicht existieren muss!
Der Satz bedeutet, dass die Menge aller Tests eines Halbrings einen sog. Booleschen Verband bildet.
Beweis:
(1) Das folgt aus dem Axiom p + ¬p = 1 und Lemma 3.4(2).
(2) Es seien q und r Komplemente von p, d.h. es gelte
p+q
p·q=
=
0
1
=q·p
p+r =
p·r= 0
1
=r·p
Zu zeigen ist q = r. Das geht so:
q
f
f
f
f
f
f
g
[ Neutralitat von 1 ]
1·q
= [ r Komplement von p ]
(p + r) · q
= [ Linksdistributivitat ]
p·q+r·q
= [ q Komplement von p ]
0+r·q
= [ Neutralitat von 0 ]
r·q
≤ [ Einschrankung ]
r
Symmetrisch folgt r ≤ q und daraus mit der Antisymmetrie von ≤ auch q = r.
=
g
g
g
g
g
Da die Bedingungsgleichungen fur das Komplement symmetrisch in p und ¬p sind, ist p ein Komplement
von ¬p.
Also ist auch ¬p ein Test, und mit der Eindeutigkeit der Komplemente folgt schlielich ¬¬p = p.
(3) Wir mussen nur die Komplementgleichungen prufen.
Sie gelten wegen Neutralitat von 0 und 1 bezuglich + bzw. · :
0+1=1
0·1=0=1·0
(4) Wir verwenden Neutralitat von 1, das erste Komplementaxiom, Linksdistributivitat, das zweite Komplementaxiom und Neutralitat von 0:
p = 1 · p = (p + ¬p) · p = p · p + ¬p · p = p · p + 0 = p · p
(5) Die Schlussweise ist ahnlich wie in (3):
p · q = 1 · p · q = (q + ¬q) · p · q = q · p · q + ¬q · p · q
Wegen der Einschrankungseigenschaft ist der zweite Summand ≤ ¬q · q = 0, also selbst 0, und der erste
≤ q · p.
Damit ist p · q ≤ q · p gezeigt; die umgekehrte Ungleichung folgt symmetrisch.
Man beachte, dass hier und im Beweis von (3) benotigt wird, dass das Komplement auch Linksannihilator
ist; fur (1) dagegen genugt Rechtsannihilation.
Algebraische Semantik
c B. Moller 2007
4 ZUSICHERUNGEN UND TESTS
25
(6) Da nach (2) Komplemente eindeutig sind, genugt es zu zeigen, dass ¬p · ¬q und ¬p + ¬q die Bedingungsgleichungen fur Komplemente erfullen. Damit wird gleichzeitig gezeigt, dass Summe und Produkt von Tests
wieder Tests sind.
Fur das erste Komplementaxiom rechnen wir so:
1
f[ Komplement ]g
q + ¬q
= f[ Neutralitat von 1 und Komplement) ]g
(p + ¬p) · q + (p + ¬p) · ¬q
= f[ Linksdistributivitat ]g
p · q + p · ¬q + ¬p · q + ¬p · ¬q
= f[ Idempotenz von + ]g
p · q + p · q + p · ¬q + ¬p · q + ¬p · ¬q
= f[ Kommutativitat von + ]g
p · q + p · ¬q + p · q + ¬p · q + ¬p · ¬q
= f[ Kommutativitat von · auf Tests ]g
q · p + ¬q · p + p · q + ¬p · q + ¬p · ¬q
= f[ Linksdistributivitat ]g
(q + ¬q) · p + (p + ¬p) · q + ¬p · ¬q
= f[ Komplemente und Neutralitat von 1 ]g
=
p + q + ¬p · ¬q
Fur das zweite Komplementaxiom zeigen wir die Rechtsannihilation so:
(p + q) · ¬p · ¬q
f[ Linksdistributivitat ]g
p · ¬p · ¬q + q · ¬p · ¬q
≤ f[ p, q ≤ 1 und Einschrankung ]g
p · ¬p + q · ¬q
= f[ Komplemente und Neutralitat von 0 ]g
=
0
Die Linksannihilation zeigt man symmetrisch mittels Rechtsdistributivitat.

(7) Ubung.
(8) (⇒) Wegen p, q ≤ 1 folgt p · q ≤ p ∧ p · q ≤ q, also wegen der Transitivitat von ≤ die Behauptung.
(⇐) Mit (4) und der Isotonie von · ergibt sich r = r · r ≤ p · q.
t
u
Um uns an das algebraische Rechnen mit Tests zu gewohnen, fuhren wir einige Gesetze der Booleschen Algebra
in herkommlicher und in Halbringschreibweise an:
Algebraische Semantik
c B. Moller 2007
4 ZUSICHERUNGEN UND TESTS
p ∧ ¬p
p ∨ ¬p
true ∧ p
false ∧ p
true ∨ p
false ∨ p
p ∧ (q ∨ r)
p ∨ (q ∧ r)
¬(p ∨ q)
¬(p ∧ q)
p ∧ (p ∨ q)
p ∨ (p ∧ q)
=
=
=
=
=
=
=
=
=
=
=
=
false
true
p
false
true
p
(p ∧ q) ∨ (p ∧ r)
(p ∨ q) ∧ (p ∨ r)
¬p ∧ ¬q
¬p ∨ ¬q
p
p
26
p · ¬p
p + ¬p
1·p
0·p
1+p
0+p
p · (q + r)
p+q·r
¬(p + q)
¬(p · q)
p · (p + q)
p+p·q
=
=
=
=
=
=
=
=
=
=
=
=
0
1
p
0
1
p
p·q+p·r
(p + q) · (p + r) !!Aua!!
¬p · ¬q
¬p + ¬q
p
p
Vorsicht:
• Tests sehen in unserer Notation zwar aus wie Aussagevariablen.
• Tatsachlich stehen sie aber oft f
ur Pradikate, in der Regel sogar welche mit freien (Programm-)Variablen,
wie etwa die Zusicherung v == (u+1)^ 2 fur esqrts in Abschnitt 2.5.
• Die zugeh
origen Halbringelemente reprasentieren damit nicht einzelne Wahrheitswerte, sondern Pradikate,
d.h. Funktionen, die Belegungen der Variablen auf Wahrheitswerte abbilden.
• In anderem Zusammenhang (wie etwa im Halbring PAT(A) k
onnen sie aber auch fur Mengen (z.B. von
Knoten) stehen.
4.4
Einschränkung und Fallunterscheidung
Nach diesen Vorbereitungen wollen wir die Rolle der in Lemma 4.1 besprochenen Einschrankung inhaltlich
genauer verstehen.
Komposition mit Tests entspricht der Restriktion auf bestimmte Anfangs- oder Endmengen von Zustanden
bzw. Knoten.
• Seien T ein Programmst
uck und B ein Boolescher Ausdruck.
• Das Programm assert B ; T pr
uft zunachst, ob der Ausdruck B im gegenwartigen Zustand wahr ist.
• Wenn ja, wird T ausgef
uhrt und der Ergebniszustand ist der von T.
• andernfalls ist der Endzustand undeniert.
• Die Komposition beschrankt also T auf den Teil, f
ur dessen Anfangszustande B gilt, der Rest wird ausge-
blendet\.
• Das zusammengesetzte Programm stellt somit sicher, dass die Vorbedingung B eingehalten wird.
"
• Das symmetrische Programm T ; assert B lauft anders ab, hat aber einen ahnlichen Eekt.
• Hier wird zwar T zunachst auf jeden Fall ausgef
uhrt.
• Anschlieend wird aber gepr
uft, ob im resultierenden Endzustand der Ausdruck B wahr ist.
• Wenn ja, ist dieser Zustand der Endzustand,
• andernfalls ist der Endzustand undeniert.
Algebraische Semantik
c B. Moller 2007
4 ZUSICHERUNGEN UND TESTS
27
• Die Komposition beschrankt also T auf den Teil, f
ur dessen Endzustande B gilt, der Rest wird ausgeblen-
"
det\.
• Das zusammengesetzte Programm stellt somit sicher, dass die Nachbedingung B eingehalten wird.
Wir wollen zum Vergleich wieder sehen, was Einschrankung im Halbring PAT(A) bedeutet. Fur Test P ⊆ A
und beliebige Pfadmenge W ⊆ A+ gilt
Po
nW
f
f
f
f
g
[ Denition von o
n]
{s o
n t | s ∈ P, t ∈ W und s, t verklebbar}
= [ s hat nur einen Knoten, Verklebbarkeit ]
{s o
n t | s ∈ P, t ∈ W und erster Knoten von t gleich einzigem Knoten von s}
= [ Denition Verklebung ]
{t | s ∈ P, t ∈ W und erster Knoten von t gleich einzigem Knoten von s}
= [ Mengenlehre ]
{t | t ∈ W und t beginnt mit einem Knoten in P}
=
g
g
g
Auch hier wird also wieder die Vorbedingung\ P sichergestellt.
"
Symmetrisch ist W o
n P die Menge aller Pfade in W , die mit einem Knoten in P enden, so dass hier P als
Nachbedingung\ sichergestellt wird.
"
Man kann naturlich auch kombinierte Einschrankungen denieren:
• p · a · q beschreibt den Anteil von a, der nur Zustande/Knoten in p mit solchen in q verbindet.
• Das werden wir z.B. zur algebraischen Beschreibung der Hoare-Kalk
uls benutzen.
Negierte Tests kann man zum Ausblenden von Teilen verwenden:

• ¬p · a streicht alle Uberg
ange/Kanten, die in p beginnen,

• a · ¬q streicht alle Uberg
ange/Kanten, die in q enden.
Damit lasst sich auch eine abstrakte Form der Fallunterscheidung denieren:
if p then a else b =df p · a + ¬p · b

Aus dieser Denition erhalt man eine ganze Reihe nutzlicher Rechenregeln (Beweis als Ubung):
a
if true then a else b
if false then a else b
if p then (if p then a else b) else c
if p then a else (if p then b else c)
if p then a else b
if p then (if q then a else b)
else (if q then c else d)
(if p then a else b) · c
Algebraische Semantik
=
=
=
=
=
=
=
=
if p then a else a
a
b
if p then a else c
if p then a else c
if p then p · a else ¬p · b
if q then (if p then a else c)
else (if p then b else d)
if p then a · c else b · c
c B. Moller 2007
Zugehörige Unterlagen
Herunterladen