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 ...
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.