Berechenbarkeit, Beweisbarkeit Typen Inhalt 1. 2. Getypter Lambda-Kalkül n n n n λ-Kalkül als Universalsprache Notwendigkeit von Typen Typsystem Getypter λ-Kalkül Typ-Theorie n n n n Urteile Beweisterme Normalisierung Curry-Howard-Isomorphismus © H. Peter Gumm, Philipps-Universität Marburg λ−Terme genügen n PL1 redet über Elemente, Relationen, Operationen ¨ n Quantifiziert nur über Elemente PL2 redet über Elemente, Relationen, Operationen ¨ Quantifiziert über Teilmengen n … n Higher Order Logik ¨ P(P(P(P(X)))) P(P(P(X))) P(P(X)) P(X) X Universum der Mengen Quantifiziert über Mengen von Mengen von … © H. Peter Gumm, Philipps-Universität Marburg λ−Kalkül n Im λ-Kalkül ist es einfach mit ¨ Funktionen n ¨ Funktionen von Funktionen n ¨ Id := λx.x, True λx.λy. x Compose = λ f. λ g. λ x. f (g x) Funktionen von Funktionen von .. umzugehen. Siehe Haskell, ML, CaML, … n Kann man Mengen auch als λ-Terme repräsentieren ? ¨ Beispiel : { x j x2-1=0 } © H. Peter Gumm, Philipps-Universität Marburg λ−Terme als Repräsentationssprache n λ-Terme können repräsentieren ¨ Wahrheitswerte n ¨ If p then q else r := λp.λq.λr. p q r Zahlen n ¨ False := λx.λy.x Logische Operatoren n ¨ True := λx.λy.x 0 = λ x.x, 1 = λf.λx. f x, 2 = λf.λx.f (f x) Programme n Fact = Fix (λf. λx. If Null 1 (x ¤ (f Sub x))) n Was ist mit Mengen ? Mit 2-Relation? n Mit Quantoren über Elementen und Mengen ? © H. Peter Gumm, Philipps-Universität Marburg Quantoren als λ-Terme n λ-Terme können Quantoren repräsentieren Beobachtung n Definition ¨ 8x. ϕ(x) , ( λx. ϕ(x) = λx.> ) 8 := λf. Eq f (λx.> ) Wir rechnen nach: 8 (λx. φ(x) ) , Eq (λx. φ(x)) (λx.>) , 8x. ϕ(x) n Existenzquantor analog: 9 := λ f. :Eq f (λx.?) ¨ Nachrechnen: 9 (λ x. ϕ(x)) , :Eq (λ x. ϕ(x)) (λ x. ?) , 9 x. ϕ(x) ≠ ? , 9 x. ϕ(x) © H. Peter Gumm, Philipps-Universität Marburg Mengen als λ-Terme ¨ Welcher λ-Term könnte M={ x j x2-1 = 0} repräsentieren ? ¨ Klar – die charakteristische Funktion n n n χM = λx. (x2-1=0) a 2 { x j x2-1=0 } , (λx. x2-1=0) a = True Allgemeiner ¨ Wir identifizieren Menge M mit ihrer charakteristischen Funktion n Die 2-Relation wird auf Applikation zurückgeführt M x = > gdw. x2 M ¨ ¨ { x j ϕ(x) } a , ( λx. ϕ(x)) a = True , ϕ(a) Zwei äquvivalente Sichtweisen Menge als Behälter $ Menge als Testprozedur. (ob ein Element drin ist) © H. Peter Gumm, Philipps-Universität Marburg Gleichheit n M=N , 8 x. x2 M $ x2 N , 8 x. χM x = χN x ¨ , χM = χN ¨ ¨ n Extensionale Gleichheit: ¨ n Zwei Dinge sind gleich, wenn sie auf alle Objekte die gleiche Wirkung haben Im Falle von Mengen: ¨ ¨ Zwei Mengen sind gleich wenn sie die gleichen Elemente enthalten 8 x. M x $ N x © H. Peter Gumm, Philipps-Universität Marburg Mengen sind λ-Terme sind Mengen n Endliche Mengen ¨ n Durch Aussonderung definierte Mengen ¨ n A µ B , 8 (λx. A x ! B x) Potenzmengen ¨ n { x j ϕ(x) } l λx. ϕ(x) Teilmengenrelation ¨ n { 2, 3, 7 } l λx. Or (Or (Eq x 3) (Eq x 3)) (Eq x 3) P(X) l λU. U µ X Die Menge N der natürlichen Zahlen ¨ N 0 Æ ( 8 x. N x ! N (succ x)) Æ (8P. P 0 Æ ( 8 x. P x ! P (succ x) ) ! N µ P © H. Peter Gumm, Philipps-Universität Marburg Russel wendet Cantor‘s Trick an n Unser Kalkül ist sehr mächtig ¨ n So mächtig, dass er inkonsistent ist Betrachte den Term R = λx. :(x x) n R repräsentiert die Menge aller Mengen, die sich nicht selber als Element enthalten {xjx∉x} lR n Wir rechnen ¨ ¨ R R = (λx. : (x x)) R = : (R R) : (R R) = : (λx. : (x x)) R = :: R R = R R © H. Peter Gumm, Philipps-Universität Marburg Russel, Whitehead: Stufentheorie n 1. Stufe: Urelemente U n 2. Stufe: Mengen von Urelementen n n … n. Stufe: Mengen von Elementen kleinerer Stufen Mengen sind nur solche „Zusammenfassungen“, die auf einer Stufe entstehen Konstruktive Vorstellung von Mengen n R = { x j x ∉ x} ist keine Menge n Russelsche Antinomie greift nicht mehr © H. Peter Gumm, Philipps-Universität Marburg Zermelo-Fraenkel n n Verzicht auf Stufen Aber ¨ n { x j φ(x) } nicht erlaubt Adolf Abraham Fraenkel 1891-1965. Studierte auch in Marburg Ernst Zermelo 1871-1953 Stattdessen ¨ Aussonderungsaxiom: n ¨ Falls S eine Menge ist, dann ist auch { x 2 S j φ(x) } eine Menge Fundierungsaxiom n Keine unendliche 2-Ketten: x1 3 x2 3 x3 3 x4 3 x5 3 x6 … muss abbrechen. © H. Peter Gumm, Philipps-Universität Marburg Konstruktoren in ZF n ; ist Menge ¨ n 8 x. x∉ ; M,N Mengen ! {M,N} Menge ¨ x2 {M,N} $ x=M Ç x=N n Es existiert eine unendliche Menge ω n M Menge ! P(M) Menge ¨ n x2 P(M)$ xµ M M Menge ! U M Menge ¨ x2 U M $ 9 Y. x 2 Y 2 M © H. Peter Gumm, Philipps-Universität Marburg Von Neumann implementiert N in ZF n n n n n n n n 0 := ; 1 := { 0 } 2 := { 0, 1 } 3 := { 0, 1, 2} … n+1 := { 0, 1, …, n } succ n := n [ { n } Es gilt: k<n$k2n ¨ n John von Neumann 1903-1957 • Mengenlehre • Spieltheorie • Manhattan Projekt • Von Neumann-Rechner Insbesondere: 0 2 1 2 2 2 3 2 … Unendlichkeitsaxiom kann man schreiben: ¨ ¨ ¨ 9 ω. ; 2 ω Æ 8 x. x2 ω ) x [ {x} 2 ω Beachte ω = { 0, 1, … } hat keine Stufe im Sinne von Russel-Whitehead Fundierungsaxiom aber erfüllt © H. Peter Gumm, Philipps-Universität Marburg Paarbildung, Produkte, Summen n <x,y> := { x, {x,y}} n x lässt sich zurückgewinnen: ¨ n y lässt sich zurückgewinnen: ¨ n n n Einziges Element e mit e 2 <x,y> Æ 9 S. e 2 S 2 <x,y> Einziges Element e mit e ∉ <x,y> Æ 9 S. e 2 S 2 <x,y> M, N, Mengen Produkte: M £ N := { <x,y> j x 2 M Æ y 2 N } π1 : M£N ! M, <x,y> a x π2: M£N ! N, <x,y> a y M£N π1 π2 M N inr inl M+N Summen: M + N := { <x,0> j x 2 M } [ { <y,1> j y 2 N } inl : M ! M + N m a <m, 0> inr : M ! M+N n a <n, 1> © H. Peter Gumm, Philipps-Universität Marburg Getypter λ-Kalkül n Motivation: ¨ ¨ ¨ n Probleme wie λx.:(x x) vermeiden x müsste gleichzeitig Element von M und Funktion M! N sein. x2A und x 2 [A! B] Idee vermeide Terme, die nicht als Abbildung interpretierbar sind © H. Peter Gumm, Philipps-Universität Marburg Typsystem n Typvariblen oder Basistypen ¨ n Funktionstypen ¨ n V für Typvariblen o, ι, … für Basistypen Sind A, B Typen, dann ist A) B ein Typ Getypte Lambda-Terme ¨ TypVariablen Funktionstypen x : τ bedeute x Variable vom Typ τ Für Lambda-Terme t: n ¨ ::= V | T)T Vorrat von Variablen Vτ für jeden Typ τ n ¨ T t : τ bedeute t hat Typ τ Typregeln x:σ E : σ)τ, F : σ ( E F) : τ E:τ λx. E : σ) τ © H. Peter Gumm, Philipps-Universität Marburg Typbarkeit n Einigen Lambda-Termen lässt sich ein Typ zuordnen n Beispiele: ¨ ¨ ¨ ¨ I = λx.x : σ) σ K = λx.λy.x : σ)(τ)σ) S = λx.λy.λz. (x y)(x z) : (σ) (τ ) γ )) ) (σ)τ ) ) (σ ) γ ) N = λx.λy. y x: σ) ((σ) τ) ) τ ) x:σ λx.x : σ) σ x:σ y:τ x:σ λy.x : τ) σ λx.λy.x : σ ) (τ)σ) x:σ y : σ)τ (y x) : τ λy. y x : (σ )τ))τ λx.λy. y x : σ ) ((σ )τ))τ) © H. Peter Gumm, Philipps-Universität Marburg Hindley-Milner Typinferenz n Es ist entscheidbar, ob ein λ-Term typisierbar ist n Wenn ja, lässt sich sein Typ algorithmisch bestimmen n Algorithmus von Hindley und Milner wird eingesetzt ¨ ¨ n in funktionalen Sprachen (ML, Haskell) in objektorientierten Sprachen (Scala) Vorteil: ¨ ¨ Roger Hindley Benutzer braucht Typ nicht anzugeben, Compiler n n Robin Milner findet ihn automatisch, Oder meldet Fehler Scala ist eine modernisierte und erheblich verbesserte Variante von Java Siehe http://www.scala.org © H. Peter Gumm, Philipps-Universität Marburg Bewohnte Typen n Ein Typ τ heißt bewohnt (inhabited), falls es einen geschlossenen Lambda-Term vom Typ τ gibt n Beispiele: ¨ ¨ ¨ n Dagegen ist ¨ ¨ n σ)σ ist bewohnt,denn λ x.x : σ) σ σ)(τ)σ) ist bewohnt, denn λx.λy.x:σ)τ)σ σ)(τ)τ) ist bewohnt, durch λx.λy.y (τ)τ))σ nicht bewohnt Es gibt keinen geschlossenen λ-Term mit diesem Typ Wieso nicht ? © H. Peter Gumm, Philipps-Universität Marburg Getypte Terme sind Beweise n Interpretiert man ¨ ¨ ¨ ¨ Basistypen als Aussagevariablen ) als ! Dann ist jeder Typ eine Aussage Jede Typisierungsregel eine Beweisregel Typregeln E : σ)τ, F : σ ( E F) : τ x:σ M E:τ λx. E : σ) τ Beweisregeln E:σ!τ, F:σ ( E F) : τ !-elim x:σ M E:τ λx. E : σ) τ !-intro Folglich: n Jede Typisierung eines Terms liefert einen Beweis n Dabei ist der Term ein Beweis im Sinne von BHK n Jeder bewohnte Typ entspricht einer intuitionistisch wahren Aussage © H. Peter Gumm, Philipps-Universität Marburg Curry-Howard Isomorphismus n Typen = Aussagen n λ-Terme = Beweise n t hat Typ σ , t ist ein Beweis für σ n n τ ist bewohnt , Aussage τ ist intuitionistisch beweisbar Beispiel: K = λx. λy. x hat Typ σ) (τ) σ) Also ist σ) (τ) σ) bewohnt Die Aussage φ!(ψ!φ) ist wahr Nach der BHK-Interpretation benötigen wir eine Funktion, die einem Beweis von φ einen Beweis von ψ!φ zu ordnet ¨ λx. λy. x leistet genau das gewünschte ¨ ¨ ¨ ¨ © H. Peter Gumm, Philipps-Universität Marburg Lambda-Terme aus int. Beweisen n Wir beginnen mit minimaler Logik. ¨ n Beweisregeln ¨ n nur ! Wir fügen jeder Beweisregel einen Beweisterm bei Es folgt ¨ Jeder intuitionistische Beweis liefert einen Beweisterm im Sinne der BHKInterpretation ¨ Ein Typ ist genau dann intuitionistisch gültig, wenn er bewohnt ist x:A f: A! B, a : A ( f a) : B ! -elim Sei f eine Funktion, die zu einem Beweis von A einen Beweis von B liefert. Sei a ein Beweis von A. Dann ist f(a) ein Beweis für B M q:B λx.q : A! B ! -intro Wenn unter der Annahme, dass x ein Beweis für A ist, q ein Beweis für B ist, dann ist λx.q ein Beweis für A! B © H. Peter Gumm, Philipps-Universität Marburg Wo wohnen S, K und I n Wir erinnern uns ¨ ¨ ¨ n S x y z = (x y) (x z) Kxy=x Ix=x Welche Typen bewohnen S und K n Jede berechenbare Funktion lässt sich aus S und K bauen ¨ n I ist nicht einmal notwendig , denn I = S K K Was sind die zugehörigen Aussagen ? ¨ K : σ ) (τ ) σ ) (K) φ!ψ!φ ¨ S : (σ ) τ ) γ) ) (σ ) τ) ) σ ) γ (S) (φ ! ψ ! χ) ! (φ ! ψ) ! φ ! χ ¨ I:σ)σ (I) φ!φ S und K entsprechen genau den Axiomen des intuitionistischen Hilbertkalküls. Auch dort konnten wir (I) aus (K) und (S) herleiten. © H. Peter Gumm, Philipps-Universität Marburg Was ist mit Æ, Ç, >,? n Syntaxerweiterung des λ-Kalküls E ::= | | | | n V λ V. E E E <E,E> π1 E | π2 E jede Variable ist ein λ-Term Abstraktion Applikation (Anwendung) Paarbildung Komponentenzugriff Reduktionsregeln (β–Regeln ) β π1<s,t> s π2<s,t> t l © H. Peter Gumm, Philipps-Universität Marburg Tupeltypen n Wir erweitern das Typsystem T n neue Typregeln: E :σ , F : τ <E,F> : σ£τ n ::= V | T)T | T£T E : σ£τ π1E : σ TypVariablen Funktionstypen Produkttypen E : σ£τ π1E : σ Beispiel: ¨ λ p. <π2 p, π1 p> : σ£τ ! τ£σ © H. Peter Gumm, Philipps-Universität Marburg Produkt und Konjunktion n n BHK: Ein Beweis einer Konjunktion AÆ B ist ein Paar p=<a,b> wobei a ein Beweis von A ist und b ein Beweis von B Typregeln Beweisregeln E:σ, F:τ <E,F> : σ£τ E:σ, F:τ <E,F> : σ Æ τ Æ -intro E : σ£τ π1E : σ E:σÆτ π1E : σ Æ –elim1 E : σ£τ π1E : σ E : σ£τ π1E : σ Æ –elim2 < , > ist der Konstruktor für den Beweisterm für die Konjunktion ¨ Beispiel n λ p. <π2 p, π1 p> : σ£τ ! τ£σ ist Beweisterm für φÆψ ! ψÆφ © H. Peter Gumm, Philipps-Universität Marburg Summentypen n Wir erweitern das Typsystem T n TypVariablen Funktionstypen Produkttypen Summentypen neue Typregeln: E :σ inl E : σ + τ n ::= V | T)T | T£T | T+T E:τ inr E : σ + τ E:σ+τ, F:σ) γ,G:σ) γ cases E F G : γ Beispiel: ¨ λ p. <π2 p, π1 p> : σ£τ ! τ£σ © H. Peter Gumm, Philipps-Universität Marburg Summen n Syntaxerweiterung des λ-Kalküls E ::= | | | | | | n V λ V. E E E <E,E> π1 E | π2 E if E E E inl E | inr E jede Variable ist ein λ-Term Abstraktion Applikation (Anwendung) Paarbildung Komponentenzugriff Fallunterscheidung Einbettungen Reduktionsregeln (β–Regeln) if (inl e) q r β qe if (inr e) q r β re © H. Peter Gumm, Philipps-Universität Marburg Summe und Disjunktion n BHK: Ein Beweis einer Disjunktion A+B ist ein Paar p=<a,0> wobei a ein Beweis von A ist oder ein Paar p=<b,1> wobei b ein Beweis von B ist Typregeln E:σ inl E : σ + τ E:σ inl E : σ Ç τ Ç-intro1 E:τ inr E : σ + τ E:τ inr E : σ Ç τ Ç–intro2 E:σ+τ, F:σ) γ,G:σ) γ if E F G : γ n Beweisregeln E : σ Ç τ, F : σ ! γ , G: σ ! γ if E F G : γ „if“ ist Konstruktor für +den Beweisterm für die Konjunktion ¨ Beispiel n λ p. if p inr inl : σ + τ ! τ + σ ist Beweisterm für φÇψ ! ψÇφ © H. Peter Gumm, Philipps-Universität Marburg Zusammenfassung n Jeder getypte Lambda-Term repräsentiert einen intuitionistischen Beweis für eine aussagenlogische Aussage n Jeder intuitionistische Beweis stellt liefert einen Beweisterm n Beweisterme sind Lambda-Terme, also berechenbare Funktionen ¨ Beispiel: Ein intuitionistischer Beweis, dass ein Array sortiert werden kann, liefert einen Sortieralgorithmus n n ¨ Proofs as Programs Proofextraction Welchen ? Hängt vom Beweis ab. n Curry-Howard-Isomorphismus lässt sich auf Quantoren erweitern n Führt zu sogenannten „Dependent types“ n Beispiel: ¨ Type Int(n) = { z : Int j z < n } © H. Peter Gumm, Philipps-Universität Marburg