• Keine Ergebnisse gefunden

Aufgabe 1. Bestimmen Sie f¨ ur die folgenden Haskell-Programme jeweils die Semantik. Welche Funktionen m¨ ussen bereits in der Umgebung eingetragen sein? Welche Data-Deklarationen muss es im Programm geben?

N/A
N/A
Protected

Academic year: 2021

Aktie "Aufgabe 1. Bestimmen Sie f¨ ur die folgenden Haskell-Programme jeweils die Semantik. Welche Funktionen m¨ ussen bereits in der Umgebung eingetragen sein? Welche Data-Deklarationen muss es im Programm geben?"

Copied!
4
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Universit¨ at Siegen

Lehrstuhl Theoretische Informatik Carl Philipp Reh

Funktionales Programmieren SS 2020

Ubungsblatt 11 ¨

Aufgabe 1. Bestimmen Sie f¨ ur die folgenden Haskell-Programme jeweils die Semantik. Welche Funktionen m¨ ussen bereits in der Umgebung eingetragen sein? Welche Data-Deklarationen muss es im Programm geben?

(a)

let a = \ x -> x == 42 in a 3

L¨ osung. Zun¨ achst fordern wir, dass wir die ¨ ubliche Definition von Bool haben. Dann fordern wir, dass in jeder Umgebung η gilt, dass

η((==)) : Dom → Dom → Dom,

η((==))(x)(y) =

 

 

True falls x = y und x, y ∈ Z , False falls x 6= y und x, y ∈ Z ,

⊥ sonst.

Als Semantik ergibt sich dann

J let a = \x −> x == 42 in a 3 K η = J a 3 K η 4 [a/µf] , wobei f : Dom → Dom definiert ist als

f (d) = J \x −> x == 42 K η 4 [a/d] .

Man beachte, dass a hier keine Rolle spielt, weil die Definition nicht rekursiv ist. Deshalb gilt

µf = J \x −> x == 42 K η = f 0 , wobei f 0 : Dom → Dom die Funktion ist mit

f 0 (d) = J x == 42 K η 4 [x/d]

= J (==) K η 4 [x/d] ( J x K η 4 [x/d] )( J 42 K η 4 [x/d] )

=

 

 

True falls d = 42,

False falls d 6= 42 und d ∈ Z ,

⊥ sonst.

Damit erhalten wir J a 3 K η 4 [a/µf] = f 0 (3) = False.

1

(2)

(b)

let s = \ x -> case x <= 0 of { True -> 0

; F a l s e -> x + s ( x - 1) } in s 10

L¨ osung. Wir ben¨ otigen wieder die ¨ ubliche Definition von Bool . Dann fordern wir, dass in jeder Umgebung η gilt, dass

η((<=)) : Dom → Dom → Dom,

η((<=))(x)(y) =

 

 

True falls x ≤ y und x, y ∈ Z , False falls x > y und x, y ∈ Z ,

⊥ sonst.

Außerdem soll f¨ ur η((−)) gelten, dass

η((−)) : Dom → Dom → Dom, η((−))(x)(y) =

( x − y falls x, y ∈ Z ,

⊥ sonst.

In der Vorlesung haben wir bereits gefordert, dass η((+)) die Addition ist. Als Semantik ergibt sich dann

J let s = \x −> case x <= 0 of {True −> 0

; False −> x + s (x − 1)} K η

= J s 10 K η 4 [s/µf] , wobei f : Dom → Dom definiert ist als

f(d) = J \x −> case x <= 0 of {True −> 0

; False −> x + s (x − 1)} K η 4 [s/d] . Es gilt f (d) = f d 0 , wobei f d 0 : Dom → Dom definiert ist als

f d 0 (d 0 ) = J case x <= 0 of {True −> 0

; False −> x + s (x − 1)} K η 4 [s/d,x/d

0

] .

2

(3)

Zun¨ achst stellen wir fest, dass f¨ ur d, d 0 ∈ Dom gilt, dass

J x <= 0 K η 4 [s/d,x/d

0

] =

 

 

True falls d 0 ≤ 0, False falls d 0 > 0,

⊥ sonst.

Dann l¨ asst sich f d 0 umformen zu

f d 0 (d 0 ) =

 

 

J 0 K η 4 [s/d,x/d

0

] falls d 0 ≤ 0, J x + s (x − 1) K η 4 [s/d,x/d

0

] falls d 0 > 0,

⊥ sonst.

F¨ ur den zweiten Fall erhalten wir f¨ ur d, d 0 ∈ Dom, dass

J x + s (x − 1) K η 4 [s/d,x/d

0

] = J (((+) x) (s (((−) x) 1))) K η 4 [s/d,x/d

0

]

=

( d 0 + d(d 0 − 1) falls d, d 0 6= ⊥,

⊥ sonst.

Damit ergibt sich, dass

f d 0 (d 0 ) =

 

 

0 falls d 0 ≤ 0,

d 0 + d(d 0 − 1) falls d 0 > 0 und d 6= ⊥,

⊥ sonst.

Wir m¨ ussen nun bestimmen, was µf ist. Dazu verwenden wir den Fix- punktsatz, also m¨ ussen wir tλi.f i (⊥) bestimmen. Sei d 0 : Dom → Dom mit d 0 (x) = ⊥ und sei f¨ ur i ∈ N die Funktion d i+1 : Dom → Dom defi- niert als

d i+1 (x) =

 

 

0 falls x ≤ 0, P x

j=1 j falls 0 < x ≤ i,

⊥ sonst.

Dann erhalten wir f 0 (⊥) = d 0 und f(d i ) = d i+1 f¨ ur alle i ∈ N , weil

f d 0

i

(d 0 ) =

 

 

0 falls d 0 ≤ 0,

d 0 + d i (d 0 − 1) falls d 0 > 0,

⊥ sonst,

=

 

 

0 falls d 0 ≤ 0, P d

0

j=1 j falls 0 < d 0 ≤ i,

⊥ sonst.

3

(4)

Mit Induktion folgt also, dass f i (⊥) = d i f¨ ur alle i ∈ N . Wir erhalten dann f¨ ur den kleinsten Fixpunkt, dass

(µf )(d 0 ) = (tλi.f i (⊥))(d 0 ) =

 

 

0 falls d 0 ≤ 0, P d

0

j=1 j falls d 0 > 0,

⊥ sonst.

Insgesamt erhalten wir J s 10 K η 4 [s/µf] = P 10

i=1 = 55.

Aufgabe 2. Wir haben bisher if e 1 then e 2 else e 3 verwendet, was in der Basissyntax aber nicht erlaubt ist.

(a) Definieren Sie eine geeignete Semantik f¨ ur if e 1 then e 2 else e 3 . L¨ osung.

J if e 1 then e 2 else e 3 K η =

 

 

J e 2 K η falls J e 1 K η = True, J e 3 K η falls J e 1 K η = False,

⊥ sonst.

(b) Geben Sie eine ¨ Ubersetzung von if e 1 then e 2 else e 3 in die Basissyntax an.

L¨ osung. case e 1 of {True −> e 2 ; False −> e 3 }.

(c) Bestimmen Sie die Semantik von Ihrer ¨ Ubersetzung. Stimmt diese mit Ihrer Semantik f¨ ur if e 1 then e 2 else e 3 uberein? ¨

L¨ osung.

J case e 1 of {True −> e 2 ; False −> e 3 } K η =

 

 

J e 2 K η falls J e 1 K η = True, J e 3 K η falls J e 1 K η = False,

⊥ sonst.

Die Semantiken stimmen also ¨ uberein.

4

Referenzen

ÄHNLICHE DOKUMENTE

 wenn mehr als ein UP aufgerufen wird, müssen Registerinhalte sowie Parameter und Rücksprungadresse gerettet werden. Typische Schritte

UBUNGSAUFGABEN ¨ Mathematik f¨ ur Wirtschaftsingenieure und -informatiker. SERIE 23

Bergische Universi¨ at Wuppertal, Fachbereich C (Mathematik) Prof..

Wir m¨ ussen jetzt nur noch zeigen, dass dies auch die kleinste obere Schranke ist, dass also kein Γ &lt; α −1 obere Schranke von

H¨ ohere Mathematik II f¨ ur die Fachrichtungen Elektroingenieurwesen und Physik inklusive Komplexe Analysis und

Karlsruher Institut f¨ ur Technologie Institut f¨ ur Theoretische Festk¨ orperphysik Ubungen zur Klassischen Theoretischen Physik I WS 2016/17

Karlsruher Institut f¨ ur Technologie Institut f¨ ur Theoretische Festk¨ orperphysik Ubungen zur Klassischen Theoretischen Physik I WS 2016/17

Pr¨ asenzaufgaben zur Analysis II Blatt I vom 16. April 2010.