20.01.2015 Aufrufe

Skript (Fassung vom 4.4.2011) - Lehr- und Forschungsgebiet ...

Skript (Fassung vom 4.4.2011) - Lehr- und Forschungsgebiet ...

Skript (Fassung vom 4.4.2011) - Lehr- und Forschungsgebiet ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

den Gleichungen E, d.h., E ̸|= plus(x,succ(y)) ≡ succ(plus(x,y)). Der Gr<strong>und</strong> ist, dass es<br />

Modelle von E gibt, in denen diese Gleichung nicht gilt. Ein Beispiel ist die Algebra B =<br />

(IN∪{✷,⋄},α ′ ) mit α ′ O = 0 <strong>und</strong><br />

α ′ succ(n) =<br />

{<br />

n+1, falls n ∈ IN<br />

⋄, falls n ∈ {✷,⋄}<br />

α ′ plus (n,m) = ⎧⎪ ⎨<br />

⎪ ⎩<br />

n+m, falls n,m ∈ IN<br />

n, falls n ∈ {✷,⋄}<br />

m, falls n = 0 <strong>und</strong> m ∈ {✷,⋄}<br />

⋄, falls n > 0 <strong>und</strong> m ∈ {✷,⋄}<br />

Es gilt B ̸|= plus(x,succ(y)) ≡ succ(plus(x,y)). Um dies zu sehen, sei I die Interpretation,<br />

die aus B <strong>und</strong> der Variablenbelegung β mit β(x) = ✷ <strong>und</strong> β(y) = 0 entsteht. Dann gilt<br />

I(plus(x,succ(y))) = α plus ′ (✷,α′ succ (0)) = ✷ <strong>und</strong> I(succ(plus(x,y))) = α′ succ (α′ plus (✷,0)) =<br />

α succ ′ (✷) = ⋄.<br />

Würde man die Gleichungen (6.1) <strong>und</strong> (6.2) von links nach rechts orientieren <strong>und</strong> das<br />

entstehende TES als funktionales Programm ansehen, so hätte man damit ein Programm<br />

zur Berechnung der Additionnatürlicher Zahlen. DieUntersuchung, obdieses Programmeine<br />

bestimmte (Teil-)Spezifikation wie plus(x,succ(y)) ≡ succ(plus(x,y)) erfüllt, ist die Frage<br />

der Programmverifikation. Natürlich liefern die Terme plus(x,succ(y)) <strong>und</strong> succ(plus(x,y))<br />

bei jeder Instantiierung der Variablen x <strong>und</strong> y mit natürlichen Zahlen (d.h., mit Termen wie<br />

O, succ(O), succ 2 (O), etc.) dasselbe Ergebnis. Mit anderen Worten, plus(x,succ(y))σ <strong>und</strong><br />

succ(plus(x,y))σ reduzieren zu derselben Normalform, sofern σ die Variablen mit Termen<br />

wie oben belegt. Daher würde man diese Aussage über das plus-Programm als “korrekt”<br />

bezeichnen.<br />

Man erkennt also, dass bei der Programmverifikation typischerweise nicht die Gültigkeit<br />

einer Gleichung in allen Modellen des Programms (bzw. seiner definierenden Gleichungen)<br />

gemeint ist. Stattdessen betrachtet man nur solche Modelle, bei denen alle Elemente des<br />

Trägers auch durch Gr<strong>und</strong>terme repräsentiert werden können. Falls eine Aussage in allen<br />

solchen Modellen gilt, dann bezeichnet man sie als induktiv gültig.<br />

Definition 6.3.2 (Induktive Gültigkeit) Sei E ein Gleichungssystem über Σ <strong>und</strong> V,<br />

seien s,t ∈ T(Σ,V). Die Gleichung s ≡ t ist induktiv gültig in E (E |= I s ≡ t) gdw.<br />

E |= sσ ≡ tσ für alle Substitutionen σ gilt, bei denen σ(x) ∈ T(Σ) für alle x ∈ V(s)∪V(t)<br />

gilt (d.h., für alle Substitutionen, die die Variablen von s <strong>und</strong> t mit Gr<strong>und</strong>termen belegen).<br />

Offensichtlich ist jede aus E folgerbare (d.h. gültige) Gleichung auch induktiv gültig<br />

(d.h., aus E |= s ≡ t folgt E |= I s ≡ t), aber die Rückrichtung gilt nicht. In Bsp. 6.3.1<br />

wurde gezeigt, dass die Gleichung plus(x,succ(y)) ≡ succ(plus(x,y)) nicht gültig in E =<br />

{(6.1),(6.2)} ist. Wir werden nun nachweisen, dass sie aber induktiv gültig ist. Hierzu<br />

muss man zeigen, dass die Gr<strong>und</strong>gleichung plus(t 1 ,succ(t 2 )) ≡ succ(plus(t 1 ,t 2 )) für alle<br />

Gr<strong>und</strong>terme t 1 <strong>und</strong> t 2 aus E folgt.

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!