20.01.2015 Aufrufe

Kapitel 11 - Grundlagen der Programmiersprachen - DdI

Kapitel 11 - Grundlagen der Programmiersprachen - DdI

Kapitel 11 - Grundlagen der Programmiersprachen - DdI

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.

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

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!