Typen - Fachbereich Mathematik und Informatik

Werbung
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
Herunterladen