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