Kapitel 11 - Grundlagen der Programmiersprachen - DdI
Kapitel 11 - Grundlagen der Programmiersprachen - DdI
Kapitel 11 - Grundlagen der Programmiersprachen - DdI
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
<strong>11</strong>-22<br />
B[P](α)=E[(y*(z+x))]((D[ val x=1; val y=3]∅)+{z=α}).<br />
Hierbei ist<br />
D[ val x=1; val y=3]=D[ val y=3] ° D[ val x=1].<br />
Im einzelnen:<br />
D[ val x=1]∅=∅+{x=E[1]∅}={x=1},<br />
D[ val y=3]{x=1}={x=1}+{y=3}={x=1,y=3}.<br />
Folglich gilt:<br />
B[P](α)=E[(y*(z+x))] {x=1,y=3,z=α}.<br />
Setzen wir u={x=1,y=3,z=α}, so folgt:<br />
E[(y*(z+x))]u=(E[y]u*E[(z+x)]u)=(E[y]u*(E[z]u+E[x]u))<br />
=(u(y)*(u(z)+u(x)))=(3*(α+1)).<br />
Damit ist bewiesen, daß die Semantik des Programms P, dargestellt durch die<br />
berechnete Funktion, lautet:<br />
B[P](α)=3*(α+1).<br />
2) Wir bestimmen die Semantik von P':<br />
val c=1;<br />
fun f x = if x=0 then c else f(x-1);<br />
(read(x);f(x)).<br />
Für einen beliebigen Eingabewert α:int gilt:<br />
B[P'](α)=E[f(x)]((D[ val c=1; fun f x= if x=0 then c else f(x-1)]∅)+{x=α}).<br />
Hierbei ist<br />
D[ val c=1; fun f x= if x=0 then c else f(x-1)]=<br />
D[ fun f(x)= if x=0 then c else f(x-1)] ° D[ val c=1].<br />
Im einzelnen:<br />
D[ val c=1]∅=∅+{c=E[1]∅}={c=1},<br />
D[ fun f x= if x=0 then c else f(x-1)]{c=1}=<br />
{c=1}+{f=(x, if x=0 then c else f(x-1),{c=1})}=<br />
{c=1,f=(x, if x=0 then c else f(x-1),{c=1})}.<br />
Folglich gilt:<br />
B[P'](α)=E[f(x)] {x=α, c=1, f=(x, if x=0 then c else f(x-1),{c=1})}.<br />
Setzen wir u={x=α, c=1, f=(x, if x=0 then c else f(x-1),{c=1})}, so folgt<br />
E[f(x)]u=E[ if x=0 then c else f(x-1)]<br />
(D[ fun f x= if x=0 then c else f(x-1); val x=E[x]u]υ(u(f)))=<br />
E[ if x=0 then c else f(x-1)]<br />
(D[ fun f x= if x=0 then c else f(x-1); val x=E[x]u]{c=1})=<br />
(*) E[ if x=0 then c else f(x-1)]{x=α, c=1, f=(x, if x=0 then c else f(x-1),{c=1})}=<br />
E[c]u=u(c)=1, falls E[x=0]u=wahr, d.h., falls u(x)=0,