Kapitel 11 - Grundlagen der Programmiersprachen - DdI
Kapitel 11 - Grundlagen der Programmiersprachen - DdI
Kapitel 11 - Grundlagen der Programmiersprachen - DdI
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
<strong>11</strong>-23<br />
=<br />
E[f(x-1)]u, sonst.<br />
Hierbei ist<br />
(**) E[f(x-1)]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-1]u]υ(u(f)))=<br />
E[f(x-1)]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-1]u]{c=1})=<br />
E[ if x=0 then c else f(x-1)]{x=α-1, c=1, f=(x, if x=0 then c else f(x-<br />
1),{c=1})}.<br />
Nun betrachte man die Zeilen (*) und (**), die zu folgen<strong>der</strong> Gleichung führen:<br />
(***) =<br />
E[ if x=0 then c else f(x-1)]u=<br />
1, falls u(x)=0,<br />
E[ if x=0 then c else f(x-1)] {x=α-1, c=1, f=(x, if x=0 then c else f(x-1),{c=1})}, sonst.<br />
Setzt man nun zur Abkürzung<br />
F:= E[ if x=0 then c else f(x-1)],<br />
G:= D[ val x=x-1],<br />
u:= {x=α, c=1, f=(x, if x=0 then c else f(x-1),{c=1})} (wie oben),<br />
so erhält man aus (***) folgende Funktionalgleichung<br />
1, falls u(x)=0,<br />
F(u)=<br />
F(G(u)), sonst.<br />
Gesucht ist in dieser Gleichung die Funktion F, welche die Semantik des Programmstücks<br />
if x=0 then c else f(x-1)<br />
beschreibt; G und u sind bekannt. Die semantische Analyse des Programms P' hat<br />
also nicht – wie in Beispiel 1 – zu einer expliziten Angabe <strong>der</strong> berechneten Funktion<br />
von P' geführt. Vielmehr haben wir nun eine Funktionsgleichung vorliegen, die erst<br />
aufzulösen ist.<br />
Da es sich bei <strong>der</strong> obigen Gleichung für F um eine implizite Gleichung handelt, kann<br />
man sich fragen, ob es überhaupt Funktionen F gibt, die diese Gleichung erfüllen.<br />
Dies ist gleichbedeutend mit <strong>der</strong> Frage, ob man dem analysierten Programm in dem<br />
entwickelten Kalkül <strong>der</strong> semantischen Funktionen tatsächlich eine Bedeutung zuordnen<br />
kann.