Vorlesung Theoretische Informatik II

Werbung
Dank
Vorlesung
Diese Vorlesungsmaterialien basieren zum Teil auf den Folien zu den
Vorlesungen von
Theoretische Informatik II
Katrin Erk (gehalten an der Universität Koblenz-Landau)
Bernhard Beckert
Jürgen Dix (gehalten an der TU Clausthal)
Institut für Informatik
Christoph Kreitz (gehalten an der Universität Potsdam)
Ihnen gilt mein herzlicher Dank.
– Bernhard Beckert, Oktober 2007
Wintersemester 2007/2008
B. Beckert – Theoretischen Informatik II:
WS 2007/08
1 / 185
Darstellung von Aussagenlogik im λ-Kalkül
B. Beckert – Theoretischen Informatik II:
WS 2007/08
2 / 185
Darstellung von Aussagenlogik im λ-Kalkül
Mit true, false, if-then-else alles darstellbar
Wahrheitswerte
¬x ≡ if x then false else true
true =def
λx .λy . x
x ∧ y ≡ if x then y else false
false =def
λx .λy . y
x ∨ y ≡ if x then true else y
Damit
if-then-else
if C then U else V =def
¬x ≡ x false true
???C U V
x ∧ y ≡ x y false
x ∨ y ≡ x true y
B. Beckert – Theoretischen Informatik II:
WS 2007/08
179 / 185
B. Beckert – Theoretischen Informatik II:
WS 2007/08
180 / 185
Darstellung Paaren im λ-Kalkül
Darstellung natürlicher Zahlen im λ-Kalkül
Paare
Natürliche Zahlen
mkpair (x , y ) =def
λb . b x y
fst (p) =def
p true
0 =def
λf .λx . x
snd (p) =def
p false
1 =def
λf .λx . f x
2 =def
λf .λx . f (f x )
3 =def
..
.
λf .λx . f ( f (f x ))
n =def
λf .λx . f (. . . (f x ) . . .)
| {z }
Ähnlich für
n mal
Tupel
Listen
etc.
B. Beckert – Theoretischen Informatik II:
WS 2007/08
181 / 185
Darstellung natürlicher Zahlen im λ-Kalkül
B. Beckert – Theoretischen Informatik II:
WS 2007/08
182 / 185
WS 2007/08
184 / 185
Rekursion im λ-Kalkül
Der Y-Operator
Operationen auf natürlichen Zahlen
succ (n) =def
λg .λy . n g (g y )
+(n, m) =def
n succ m
∗(n, m) =def
iszero(n) =def
Y =def
λF . (λy . F (y y )) (λx . F (xx ))
Y ist Fixpunkt-Operator
n (m succ ) 0
n (λb.false) true
f (Y f ) = Y f
für alle f
B. Beckert – Theoretischen Informatik II:
WS 2007/08
183 / 185
B. Beckert – Theoretischen Informatik II:
Rekursion im λ-Kalkül
Beispiel
fak n =def
(Y F ) n
mit
F =def
λf .λn. if iszero(n) then 1 else n ∗ (f (n − 1))
Allgemein
Der Y-Operator erlaubt es, beliebige µ-rekursive Funktionen im λ-Kalkül zu
definieren.
B. Beckert – Theoretischen Informatik II:
WS 2007/08
185 / 185
Herunterladen