Rachunek lambda, lato 2019-20
Wykład 14
5 czerwca 2020
1
Silna normalizacja
Twierdzenie (Jean-Yves Girard, 1972)
System F ma własność SN.
Wniosek
Zdaniowa logika intuicjonistyczna drugiego rzędu jest niesprzeczna.
Silna normalizacja
Twierdzenie (Jean-Yves Girard, 1972)
System F ma własność SN.
Wniosek
Zdaniowa logika intuicjonistyczna drugiego rzędu jest niesprzeczna.
2
Silna normalizacja dla typów prostych
Termy stabilne (obliczalne):
I [[p]] := SN;
I [[τ → σ]] := {M | ∀N(N ∈ [[τ ]] ⇒ MN ∈ [[σ]])};
Naiwne uogólnienie:
I [[∀p τ ]] =T{[[τ [p := σ]]] | σ — dowolny typ}.
To nie jest dobrze ufundowana definicja.
Silna normalizacja dla typów prostych
Termy stabilne (obliczalne):
I [[p]] := SN;
I [[τ → σ]] := {M | ∀N(N ∈ [[τ ]] ⇒ MN ∈ [[σ]])};
Naiwne uogólnienie:
I [[∀p τ ]] =T{[[τ [p := σ]]] | σ — dowolny typ}.
To nie jest dobrze ufundowana definicja.
3
Silna normalizacja dla typów prostych
Termy stabilne (obliczalne):
I [[p]] := SN;
I [[τ → σ]] := {M | ∀N(N ∈ [[τ ]] ⇒ MN ∈ [[σ]])};
Naiwne uogólnienie:
I [[∀p τ ]] =T{[[τ [p := σ]]] | σ — dowolny typ}.
To nie jest dobrze ufundowana definicja.
Girarda metoda kandydatów
Zbiór nasycony (Candidat de reductibilité)
to taki zbiór termów (Curry’ego), który ma trzy własności:
1) X ⊆ SN.
2) Jeśli N1, . . . , Nk ∈ SN, to xN1. . . Nk ∈ X . 3) Jeśli M[x := N0]N1. . . Nk ∈ X, oraz N0 ∈ SN,
to (λx .M)N0N1. . . Nk ∈ X.
G – rodzina wszystkich kandydatów (uwaga: SN ∈ G).
4
Interpretacja Girarda
Wartościowanie ξ : TV → G wyznacza interpretację typu:
[[p]]ξ = ξ(p);
[[σ → τ ]]ξ = {M | ∀N(N ∈ [[σ]]ξ ⇒ MN ∈ [[τ ]]ξ)};
[[∀p.σ]]ξ = T
X ∈G[[σ]]ξ(p7→X ).
Fakt: Zawsze[[τ ]]ξ ∈ G.
Silna normalizacja (Curry)
Główny lemat: Niech Γ ` M : τ, FV(M) = {x1, . . . , xk}.
JeśliNi ∈ [[Γ(xi)]]ξ, dla i = 1, . . . , k,
to M[x1 := N1, . . . , xk := Nk] ∈ [[τ ]]ξ.
Dowód twierdzenia:
JeśliΓ ` M : τ, to M ∈ [[τ ]]ξ, bo x ∈ [[Γ(x )]]ξ. Teza wynika więc stąd, że[[τ ]]ξ ⊆ SN.
6
Silna normalizacja (Curry)
Główny lemat: Niech Γ ` M : τ, FV(M) = {x1, . . . , xk}.
JeśliNi ∈ [[Γ(xi)]]ξ, dla i = 1, . . . , k,
to M[x1 := N1, . . . , xk := Nk] ∈ [[τ ]]ξ.
Dowód twierdzenia:
JeśliΓ ` M : τ, to M ∈ [[τ ]]ξ, bo x ∈ [[Γ(x )]]ξ. Teza wynika więc stąd, że[[τ ]]ξ ⊆ SN.
Silna normalizacja (Church)
Jeśli
M = M0 → M1 → M2 → · · · to
|M| = |M0| |M1| |M2| · · ·
gdzie oznacza→ lub =.
Liczba wystąpień→ jest skończona, bo mamy SN (Curry).
Liczba wystąpień= też, bo redukcje typowe usuwają Λ.
7
Zła wiadomość
Dowód Girarda nie jest wyrażalny nawet w języku arytmetyki drugiego rzędu.
Jeszcze gorsza wiadomość:
Własność SN dla systemu F jest NIEZALEŻNA od arytmetyki drugiego rzędu.
Zła wiadomość
Dowód Girarda nie jest wyrażalny nawet w języku arytmetyki drugiego rzędu.
Jeszcze gorsza wiadomość:
Własność SN dla systemu F jest NIEZALEŻNA od arytmetyki drugiego rzędu.
8
The typability problem
Examples: The following terms are strongly normalizable, but untypable in systemF:
I (λzy . y (zI)(zK))(λx . xx );
I 22K.
Nierozstrzygalność (1)
Twierdzenie (J.B. Wells, 1993)
Problem typowalności:
Dany term M, czy istnieją takie Γ i τ , że Γ ` M : τ ? i problem sprawdzenia typu:
Dane są Γ, M i τ . Czy Γ ` M : τ ? są dla systemu F nierozstrzygalne.
10
Nierozstrzygalność (2)
Twierdzenie (
Löb, 1976, Gabbay, 1974, Sobolew, 1977) Problem inhabitacji:Dany typ τ , czy istnieje term zamknięty M typu τ ? jest dla systemu F nierozstrzygalny.
Uwaga: To tyle, co nierozstrzygalność intuicjonistycznej logiki zdaniowej drugiego rzędu.
Dowód: Redukcja logiki 1. rzędu: Formuła ϕjest twierdzeniem logiki 1. rzędu wtedy i tylko wtedy, gdy
jej translacjaϕjest niepustym typem systemu F.
Nierozstrzygalność (2)
Twierdzenie (
Löb, 1976, Gabbay, 1974, Sobolew, 1977) Problem inhabitacji:Dany typ τ , czy istnieje term zamknięty M typu τ ? jest dla systemu F nierozstrzygalny.
Uwaga: To tyle, co nierozstrzygalność intuicjonistycznej logiki zdaniowej drugiego rzędu.
Dowód: Redukcja logiki 1. rzędu: Formuła ϕjest twierdzeniem logiki 1. rzędu wtedy i tylko wtedy, gdy
jej translacjaϕjest niepustym typem systemu F.
11
Nierozstrzygalność (2)
Twierdzenie (
Löb, 1976, Gabbay, 1974, Sobolew, 1977) Problem inhabitacji:Dany typ τ , czy istnieje term zamknięty M typu τ ? jest dla systemu F nierozstrzygalny.
Uwaga: To tyle, co nierozstrzygalność intuicjonistycznej logiki zdaniowej drugiego rzędu.
Dowód: Redukcja logiki 1. rzędu:
Formuła ϕjest twierdzeniem logiki 1. rzędu wtedy i tylko wtedy, gdy
jej translacjaϕjest niepustym typem systemu F.
Definability of integer functions
Numerals n = Λpλfp→pλxp. f (f (· · · f (x ))) are of type ω = ∀p((p → p) → (p → p)).
A functionf : Nk → N is definable in system F iff there is a termF : ω → · · · → ω → ω such that
F n1. . . nk =β m iff f (n1, . . . , nk) = m.
12
Definability of integer functions
Numerals n = Λpλfp→pλxp. f (f (· · · f (x ))) are of type ω = ∀p((p → p) → (p → p)).
A functionf : Nk → N is definable in system F iff there is a termF : ω → · · · → ω → ω such that
F n1. . . nk =β m iff f (n1, . . . , nk) = m.
Examples of representable functions:
I Add = λmn.Λp.λfx.mpf (npfx);
I Mult = λmn.Λp.λfx.mp(npf )x;
I Exp = λmn.Λp.λfx.m(p → p)(np)fx.
13
Siła wyrazu polimorfizmu
Twierdzenie (Girard):
Funkcja jest definiowalna w systemie F wtedy i tylko wtedy, gdy jest dowodliwie rekurencyjna w arytmetyce drugiego rzędu.
Idea dowodu(w uproszczeniu):
(⇒) Silną normalizację dla termów F n1. . . nk : ω można udowodnić w arytmetyce drugiego rzędu.
(⇐) Dowód formuły∀n∃m P(n, m) „wyciera się” do termu typu ω → ω.
Siła wyrazu polimorfizmu
Twierdzenie (Girard):
Funkcja jest definiowalna w systemie F wtedy i tylko wtedy, gdy jest dowodliwie rekurencyjna w arytmetyce drugiego rzędu.
Idea dowodu(w uproszczeniu):
(⇒) Silną normalizację dla termów F n1. . . nk : ω można udowodnić w arytmetyce drugiego rzędu.
(⇐) Dowód formuły∀n∃m P(n, m) „wyciera się” do termu typu ω → ω.
14
Siła wyrazu polimorfizmu
Twierdzenie (Girard):
Funkcja jest definiowalna w systemie F wtedy i tylko wtedy, gdy jest dowodliwie rekurencyjna w arytmetyce drugiego rzędu.
Idea dowodu(w uproszczeniu):
(⇒) Silną normalizację dla termów F n1. . . nk : ω można udowodnić w arytmetyce drugiego rzędu.
(⇐) Dowód formuły∀n∃m P(n, m) „wyciera się”
do termu typu ω → ω.
Data types
Zbiór pusty: x ∈ ∅ ⇔ ∀P(x ∈ P).
Typ pusty (fałsz): ⊥ = ∀p p Ex falso quodlibet:
If Γ ` M : ⊥then Γ ` Mτ : τ.
15
Data types
Zbiór pusty: x ∈ ∅ ⇔ ∀P(x ∈ P).
Typ pusty (fałsz): ⊥ = ∀p p Ex falso quodlibet:
If Γ ` M : ⊥then Γ ` Mτ : τ.
Suma/alternatywa
x ∈ A ∪ B ⇔ ∀P(A ⊆ P → B ⊆ P → x ∈ P),
A(x )∨B(x ) ⇔ ∀P(∀y (A(y )→P(y )) → ∀y (B(y )→P(y ))→P(x )).
A ∨ B = ∀p((A → p) → (B → p) → p).
16
Suma/alternatywa
x ∈ A ∪ B ⇔ ∀P(A ⊆ P → B ⊆ P → x ∈ P),
A(x )∨B(x ) ⇔ ∀P(∀y (A(y )→P(y )) → ∀y (B(y )→P(y ))→P(x )).
A ∨ B = ∀p((A → p) → (B → p) → p).
Suma/alternatywa
x ∈ A ∪ B ⇔ ∀P(A ⊆ P → B ⊆ P → x ∈ P),
A(x )∨B(x ) ⇔ ∀P(∀y (A(y )→P(y )) → ∀y (B(y )→P(y ))→P(x )).
A ∨ B = ∀p((A → p) → (B → p) → p).
16
Iloczyn/koniunkcja
x ∈ A ∩ B ⇔ ∀P(∀z(z ∈ A → z ∈ B → z ∈ P) → x ∈ P).
A ∧ B = ∀p((A → B → p) → p).
Iloczyn/koniunkcja
x ∈ A ∩ B ⇔ ∀P(∀z(z ∈ A → z ∈ B → z ∈ P) → x ∈ P).
A ∧ B = ∀p((A → B → p) → p).
17
Iloczyn. . . kartezjański
σ ∧ τ = ∀p((σ → τ → p) → p)
Pairs and projections:
I Term hMσ, Nτi = Λpλyσ→τ →p.yMN has type σ ∧ τ.
I Term π1(Pσ∧τ) = Pσ(λxσλyτ.x ); has type σ.
I Term π2(Pσ∧τ) = Pτ (λxσλyτ.y ). has type τ.
Beta-reduction works: π1(hM, Ni) M, because
(Λpλyσ→τ →p.yMN)σ(λxσλyτ.x ) (λxσλyτ.x )MN M. Eta-reduction does not work:
hπ1(P), π2(P)i = Λpλy .y (π1(P))(π2(P)) 6 P
Iloczyn. . . kartezjański
σ ∧ τ = ∀p((σ → τ → p) → p) Pairs and projections:
I Term hMσ, Nτi = Λpλyσ→τ →p.yMN has type σ ∧ τ.
I Term π1(Pσ∧τ) = Pσ(λxσλyτ.x ); has type σ.
I Term π2(Pσ∧τ) = Pτ (λxσλyτ.y ). has type τ.
Beta-reduction works: π1(hM, Ni) M, because
(Λpλyσ→τ →p.yMN)σ(λxσλyτ.x ) (λxσλyτ.x )MN M. Eta-reduction does not work:
hπ1(P), π2(P)i = Λpλy .y (π1(P))(π2(P)) 6 P
18
Iloczyn. . . kartezjański
σ ∧ τ = ∀p((σ → τ → p) → p) Pairs and projections:
I Term hMσ, Nτi = Λpλyσ→τ →p.yMN has type σ ∧ τ.
I Term π1(Pσ∧τ) = Pσ(λxσλyτ.x ); has type σ.
I Term π2(Pσ∧τ) = Pτ (λxσλyτ.y ). has type τ.
Beta-reduction works: π1(hM, Ni) M, because
(Λpλyσ→τ →p.yMN)σ(λxσλyτ.x ) (λxσλyτ.x )MN M. Eta-reduction does not work:
hπ1(P), π2(P)i = Λpλy .y (π1(P))(π2(P)) 6 P
Iloczyn. . . kartezjański
σ ∧ τ = ∀p((σ → τ → p) → p) Pairs and projections:
I Term hMσ, Nτi = Λpλyσ→τ →p.yMN has type σ ∧ τ.
I Term π1(Pσ∧τ) = Pσ(λxσλyτ.x ); has type σ.
I Term π2(Pσ∧τ) = Pτ (λxσλyτ.y ). has type τ.
Beta-reduction works: π1(hM, Ni) M, because
(Λpλyσ→τ →p.yMN)σ(λxσλyτ.x ) (λxσλyτ.x )MN M.
Eta-reduction does not work:
hπ1(P), π2(P)i = Λpλy .y (π1(P))(π2(P)) 6 P
18
Iloczyn. . . kartezjański
σ ∧ τ = ∀p((σ → τ → p) → p) Pairs and projections:
I Term hMσ, Nτi = Λpλyσ→τ →p.yMN has type σ ∧ τ.
I Term π1(Pσ∧τ) = Pσ(λxσλyτ.x ); has type σ.
I Term π2(Pσ∧τ) = Pτ (λxσλyτ.y ). has type τ.
Beta-reduction works: π1(hM, Ni) M, because
(Λpλyσ→τ →p.yMN)σ(λxσλyτ.x ) (λxσλyτ.x )MN M. Eta-reduction does not work:
hπ (P), π (P)i = Λpλy .y (π (P))(π (P)) 6 P
Coproduct
σ ∨ τ = ∀p((σ → p) → (τ → p) → p)
Embeddings and cases:
I Term inlσ∨τLσ = Λpλuσ→pλvτ →p.uL has type σ ∨ τ.
I Term inrσ∨τRτ = Λpλuσ→pλvτ →p.vR has type σ ∨ τ.
I Andcase M of [x]Pϑ, [y ]Qϑ= Mϑ(λxσP)(λyτQ) : ϑ.
Beta-reduction:
case inl(L) of [x]P, [y ]Q = (inl(L))ϑ(λxσP)(λyτQ) = (Λpλuv .uL)ϑ(λxσP)(λyτQ) (λxσP)L P[x := L].
19
Coproduct
σ ∨ τ = ∀p((σ → p) → (τ → p) → p)
Embeddings and cases:
I Term inlσ∨τLσ = Λpλuσ→pλvτ →p.uL has type σ ∨ τ.
I Term inrσ∨τRτ = Λpλuσ→pλvτ →p.vR has type σ ∨ τ.
I Andcase M of [x]Pϑ, [y ]Qϑ= Mϑ(λxσP)(λyτQ) : ϑ.
Beta-reduction:
case inl(L) of [x]P, [y ]Q = (inl(L))ϑ(λxσP)(λyτQ) = (Λpλuv .uL)ϑ(λxσP)(λyτQ) (λxσP)L P[x := L].
Abstract (encapsulated) type
Idea: Type∃p σ(p) is of shape σ(τ ), where τ is unspecified (abstract) and not accesible to the user.
Example: An abstract pds object is of type
∃p (p × p × (p → p) × (p → ω) × (ω × p → p))
20
Existential types
Type assignment:
(pack) Γ ` M : σ[p := τ ] Γ ` pack M, τ to ∃p. σ : ∃p. σ
(unpack) Γ ` M : ∃p. σ Γ(x : σ) ` N : ρ
Γ ` let M be x , p in N : ρ (p 6∈ FV (Γ, ρ))
Beta reduction:
let (pack M, τ to ∃p. σ) be x, p in N −→β N[p := τ ][x := M].
Jak zdefiniować kwantyfikator szczegółowy
x ∈[
P
SP ⇔ ∀Q(∀P(SP ⊆ Q) → x ∈ Q)
∃p σ = ∀q(∀p(σ → q) → q).
22
Jak zdefiniować kwantyfikator szczegółowy
x ∈[
P
SP ⇔ ∀Q(∀P(SP ⊆ Q) → x ∈ Q)
∃p σ = ∀q(∀p(σ → q) → q).
Implementing existential quantifier
Definitions:
I ∃p σ = ∀q(∀p(σ → q) → q).
I pack Mσ[p:=τ ], τ to ∃p. σ = Λqλz∀p(σ→q).zτ M;
I let M∃p. σ be x, p in Nρ = Mρ(Λpλxσ.N). Correctness:
let (pack M, τ to ∃p. σ) be x, p in Nρ
= (Λqλz∀p(σ→q). zτ M)ρ(Λpλxσ.N)
→ (λz∀p(σ→ρ). zτ M)(Λpλxσ.N)
→ (Λpλxσ.N)τ M
N[p := τ ][x := M].
23
Implementing existential quantifier
Definitions:
I ∃p σ = ∀q(∀p(σ → q) → q).
I pack Mσ[p:=τ ], τ to ∃p. σ = Λqλz∀p(σ→q).zτ M;
I let M∃p. σ be x, p in Nρ = Mρ(Λpλxσ.N). Correctness:
let (pack M, τ to ∃p. σ) be x, p in Nρ
= (Λqλz∀p(σ→q). zτ M)ρ(Λpλxσ.N)
→ (λz∀p(σ→ρ). zτ M)(Λpλxσ.N)
→ (Λpλxσ.N)τ M
N[p := τ ][x := M].
Implementing existential quantifier
Definitions:
I ∃p σ = ∀q(∀p(σ → q) → q).
I pack Mσ[p:=τ ], τ to ∃p. σ = Λqλz∀p(σ→q).zτ M;
I let M∃p. σ be x, p in Nρ = Mρ(Λpλxσ.N).
Correctness:
let (pack M, τ to ∃p. σ) be x, p in Nρ
= (Λqλz∀p(σ→q). zτ M)ρ(Λpλxσ.N)
→ (λz∀p(σ→ρ). zτ M)(Λpλxσ.N)
→ (Λpλxσ.N)τ M
N[p := τ ][x := M].
23
Implementing existential quantifier
Definitions:
I ∃p σ = ∀q(∀p(σ → q) → q).
I pack Mσ[p:=τ ], τ to ∃p. σ = Λqλz∀p(σ→q).zτ M;
I let M∃p. σ be x, p in Nρ = Mρ(Λpλxσ.N).
Correctness:
let (pack M, τ to ∃p. σ) be x, p in Nρ
= (Λqλz∀p(σ→q). zτ M)ρ(Λpλxσ.N)
→ (λz∀p(σ→ρ). zτ M)(Λpλxσ.N)
→ (Λpλxσ.N)τ M
N[p := τ ][x := M].
Implementing existential quantifier
Definitions:
I ∃p σ = ∀q(∀p(σ → q) → q).
I pack Mσ[p:=τ ], τ to ∃p. σ = Λqλz∀p(σ→q).zτ M;
I let M∃p. σ be x, p in Nρ = Mρ(Λpλxσ.N).
Correctness:
let (pack M, τ to ∃p. σ) be x, p in Nρ
= (Λqλz∀p(σ→q). zτ M)ρ(Λpλxσ.N)
→ (λz∀p(σ→ρ). zτ M)(Λpλxσ.N)
→ (Λpλxσ.N)τ M
N[p := τ ][x := M].
23
Implementing existential quantifier
Definitions:
I ∃p σ = ∀q(∀p(σ → q) → q).
I pack Mσ[p:=τ ], τ to ∃p. σ = Λqλz∀p(σ→q).zτ M;
I let M∃p. σ be x, p in Nρ = Mρ(Λpλxσ.N).
Correctness:
let (pack M, τ to ∃p. σ) be x, p in Nρ
= (Λqλz∀p(σ→q). zτ M)ρ(Λpλxσ.N)
→ (λz∀p(σ→ρ). zτ M)(Λpλxσ.N)
→ (Λpλxσ.N)τ M
N[p := τ ][x := M].
Implementing existential quantifier
Definitions:
I ∃p σ = ∀q(∀p(σ → q) → q).
I pack Mσ[p:=τ ], τ to ∃p. σ = Λqλz∀p(σ→q).zτ M;
I let M∃p. σ be x, p in Nρ = Mρ(Λpλxσ.N).
Correctness:
let (pack M, τ to ∃p. σ) be x, p in Nρ
= (Λqλz∀p(σ→q). zτ M)ρ(Λpλxσ.N)
→ (λz∀p(σ→ρ). zτ M)(Λpλxσ.N)
→ (Λpλxσ.N)τ M
N[p := τ ][x := M].
23
Implementing existential quantifier
Definitions:
I ∃p σ = ∀q(∀p(σ → q) → q).
I pack Mσ[p:=τ ], τ to ∃p. σ = Λqλz∀p(σ→q).zτ M;
I let M∃p. σ be x, p in Nρ = Mρ(Λpλxσ.N).
Correctness:
let (pack M, τ to ∃p. σ) be x, p in Nρ
= (Λqλz∀p(σ→q). zτ M)ρ(Λpλxσ.N)
→ (λz∀p(σ→ρ). zτ M)(Λpλxσ.N)
→ (Λpλxσ.N)τ M
N[p := τ ][x := M].
Higher-order polymorphism
24
Type constructors
Example: Why is (λzy . y (zI)(zK))(λx . xx ) untypable in F?
Because types we can assign toI and Kdiffer too much:
I : ∀p. p → p K :∀p. p → (q → p).
There is no common pattern for these two types,. . .
unless we write it this way:
I, K : ∀p. p → α(p).
Here,α is a type constructor (or type family): if p : Type then α(p) : Type.
We say that the kind of α is Type ⇒ Type.
Type constructors
Example: Why is (λzy . y (zI)(zK))(λx . xx ) untypable in F?
Because types we can assign toI and Kdiffer too much:
I : ∀p. p → p K :∀p. p → (q → p).
There is no common pattern for these two types,. . . unless we write it this way:
I, K : ∀p. p → α(p).
Here,α is a type constructor (or type family): if p : Type then α(p) : Type.
We say that the kind of α is Type ⇒ Type.
25
Type constructors
Example: Why is (λzy . y (zI)(zK))(λx . xx ) untypable in F?
Because types we can assign toI and Kdiffer too much:
I : ∀p. p → p K :∀p. p → (q → p).
There is no common pattern for these two types,. . . unless we write it this way:
I, K : ∀p. p → α(p).
Here,α is a type constructor (or type family):
if p : Type then α(p) : Type.
We say that the kind of α is Type ⇒ Type.
System F
ωKinds:
I The constant ∗is a kind;
I If ∇1 and ∇2 are kinds then∇1 ⇒ ∇2 is a kind.
Constructors:
I Constructor variables of any kind;
I Applications ϕ∇1⇒∇2ψ∇1 : ∇2;
I Abstractionsλα∇1φ∇2 : ∇1 ⇒ ∇2;
I Function types τ∗ → σ∗ : ∗;
I Polymorphic types ∀α∇τ∗ : ∗.
Constructor reduction: (λα σ)τ −→β σ[α := τ ].
26
Type assignment F
ωVAR Γ ` x : σ when Γ(x ) = σ
APP Γ ` M : σ → τ Γ ` N : σ
Γ ` (M N) : τ
ABS Γ(x : σ) ` M : τ
Γ ` (λx M) : σ → τ
INST Γ ` M : ∀α σ
Γ ` M : σ[α := τ ]
CONV Γ ` M : σ
Γ ` M : τ (σ =β τ ) Γ ` M : σ
Przykład
Typowanie dla termu (λzy . y (zI)(zK))(λx . xx ):
Jeślix ma typ ∀p. p → α(p), to ma zarówno typ p → α(p), jak i typ (p → α(p)) → α(p → α(p)).
Zatem λx . xx : ∀α [(∀p. p → α(p)) → α(p → α(p))]. To jest typ zmiennejz, który „pasuje” do obu argumentów
I : ∀p. p → p K :∀p. p → (q → p).
28
Przykład
Typowanie dla termu (λzy . y (zI)(zK))(λx . xx ):
Jeślix ma typ ∀p. p → α(p), to ma zarówno typ p → α(p), jak i typ (p → α(p)) → α(p → α(p)).
Zatem λx . xx : ∀α [(∀p. p → α(p)) → α(p → α(p))]. To jest typ zmiennejz, który „pasuje” do obu argumentów
I : ∀p. p → p K :∀p. p → (q → p).
Przykład
Typowanie dla termu (λzy . y (zI)(zK))(λx . xx ):
Jeślix ma typ ∀p. p → α(p), to ma zarówno typ p → α(p), jak i typ (p → α(p)) → α(p → α(p)).
Zatem λx . xx : ∀α [(∀p. p → α(p)) → α(p → α(p))].
To jest typ zmiennejz, który „pasuje” do obu argumentów I : ∀p. p → p K :∀p. p → (q → p).
28
Example
Letα : ∗ ⇒ ∗, ϕ : (∗ ⇒ ∗) ⇒ (∗ ⇒ ∗). Then:
K : ∀p (p → q → p)
2 : ∀α (∀p (p → α(p)) → ∀p (p → α(α(p)))) 2 : [∀α (∀p (p → α(p)) → ∀p (p → (α(α(p))))] →
[∀α (∀p (p → α(p)) → ∀p (p → (α(α(α(α(p)))))))]
Therefore 22K : ∀p (p → q → q → q → q → p)
2 : ∀ϕ([∀α (∀p (p → α(p)) → ∀p (p → ϕ(α)(p)] → [∀α (∀p (p → α(p)) → ∀p (p → (ϕ(ϕ(α))(p))))] Therefore222K : ∀p (p → q → q → · · · → q → q → p)
Example
Letα : ∗ ⇒ ∗, ϕ : (∗ ⇒ ∗) ⇒ (∗ ⇒ ∗). Then:
K : ∀p (p → q → p)
2 : ∀α (∀p (p → α(p)) → ∀p (p → α(α(p)))) 2 : [∀α (∀p (p → α(p)) → ∀p (p → (α(α(p))))] →
[∀α (∀p (p → α(p)) → ∀p (p → (α(α(α(α(p)))))))]
Therefore 22K : ∀p (p → q → q → q → q → p) 2 : ∀ϕ([∀α (∀p (p → α(p)) → ∀p (p → ϕ(α)(p)] →
[∀α (∀p (p → α(p)) → ∀p (p → (ϕ(ϕ(α))(p))))]
Therefore222K : ∀p (p → q → q → · · · → q → q → p)
29
Example
Let1 = λfu. fu and 10 = λvg . gv. The term (λx . z(x 1)(x 10))(λy . yyy ) is strongly normalizable, but untypable in Fω
Properties of F
ωI Every typable term is strongly normalizing.
I Type-checking and typability problems are undecidable.
I The inhabitation problem is undecidable.
31
Properties of F
ωI Every typable term is strongly normalizing.
I Type-checking and typability problems are undecidable.
I The inhabitation problem is undecidable.
Properties of F
ωI Every typable term is strongly normalizing.
I Type-checking and typability problems are undecidable.
I The inhabitation problem is undecidable.
31