• Nie Znaleziono Wyników

Rachunek lambda, lato 2019-20

N/A
N/A
Protected

Academic year: 2021

Share "Rachunek lambda, lato 2019-20"

Copied!
66
0
0

Pełen tekst

(1)

Rachunek lambda, lato 2019-20

Wykład 14

5 czerwca 2020

1

(2)

Silna normalizacja

Twierdzenie (Jean-Yves Girard, 1972)

System F ma własność SN.

Wniosek

Zdaniowa logika intuicjonistyczna drugiego rzędu jest niesprzeczna.

(3)

Silna normalizacja

Twierdzenie (Jean-Yves Girard, 1972)

System F ma własność SN.

Wniosek

Zdaniowa logika intuicjonistyczna drugiego rzędu jest niesprzeczna.

2

(4)

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.

(5)

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

(6)

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.

(7)

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

(8)

Interpretacja Girarda

Wartościowanie ξ : TV → G wyznacza interpretację typu:

[[p]]ξ = ξ(p);

[[σ → τ ]]ξ = {M | ∀N(N ∈ [[σ]]ξ ⇒ MN ∈ [[τ ]]ξ)};

[[∀p.σ]]ξ = T

X ∈G[[σ]]ξ(p7→X ).

Fakt: Zawsze[[τ ]]ξ ∈ G.

(9)

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

(10)

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.

(11)

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

(12)

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.

(13)

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

(14)

The typability problem

Examples: The following terms are strongly normalizable, but untypable in systemF:

I (λzy . y (zI)(zK))(λx . xx );

I 22K.

(15)

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

(16)

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.

(17)

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

(18)

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.

(19)

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

(20)

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.

(21)

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

(22)

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 ω → ω.

(23)

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

(24)

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 ω → ω.

(25)

Data types

Zbiór pusty: x ∈ ∅ ⇔ ∀P(x ∈ P).

Typ pusty (fałsz): ⊥ = ∀p p Ex falso quodlibet:

If Γ ` M : ⊥then Γ ` Mτ : τ.

15

(26)

Data types

Zbiór pusty: x ∈ ∅ ⇔ ∀P(x ∈ P).

Typ pusty (fałsz): ⊥ = ∀p p Ex falso quodlibet:

If Γ ` M : ⊥then Γ ` Mτ : τ.

(27)

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

(28)

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).

(29)

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

(30)

Iloczyn/koniunkcja

x ∈ A ∩ B ⇔ ∀P(∀z(z ∈ A → z ∈ B → z ∈ P) → x ∈ P).

A ∧ B = ∀p((A → B → p) → p).

(31)

Iloczyn/koniunkcja

x ∈ A ∩ B ⇔ ∀P(∀z(z ∈ A → z ∈ B → z ∈ P) → x ∈ P).

A ∧ B = ∀p((A → B → p) → p).

17

(32)

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:

1(P), π2(P)i = Λpλy .y (π1(P))(π2(P)) 6 P

(33)

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:

1(P), π2(P)i = Λpλy .y (π1(P))(π2(P)) 6 P

18

(34)

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:

1(P), π2(P)i = Λpλy .y (π1(P))(π2(P)) 6 P

(35)

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:

1(P), π2(P)i = Λpλy .y (π1(P))(π2(P)) 6 P

18

(36)

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

(37)

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

(38)

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].

(39)

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

(40)

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].

(41)

Jak zdefiniować kwantyfikator szczegółowy

x ∈[

P

SP ⇔ ∀Q(∀P(SP ⊆ Q) → x ∈ Q)

∃p σ = ∀q(∀p(σ → q) → q).

22

(42)

Jak zdefiniować kwantyfikator szczegółowy

x ∈[

P

SP ⇔ ∀Q(∀P(SP ⊆ Q) → x ∈ Q)

∃p σ = ∀q(∀p(σ → q) → q).

(43)

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

(44)

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].

(45)

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

(46)

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].

(47)

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

(48)

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].

(49)

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

(50)

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].

(51)

Higher-order polymorphism

24

(52)

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.

(53)

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

(54)

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.

(55)

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

(56)

Type assignment F

ω

VAR Γ ` x : σ when Γ(x ) = σ

APP Γ ` M : σ → τ Γ ` N : σ

Γ ` (M N) : τ

ABS Γ(x : σ) ` M : τ

Γ ` (λx M) : σ → τ

INST Γ ` M : ∀α σ

Γ ` M : σ[α := τ ]

CONV Γ ` M : σ

Γ ` M : τ (σ =β τ ) Γ ` M : σ

(57)

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

(58)

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).

(59)

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

(60)

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)

(61)

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

(62)

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ω

(63)

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

(64)

Properties of F

ω

I Every typable term is strongly normalizing.

I Type-checking and typability problems are undecidable.

I The inhabitation problem is undecidable.

(65)

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

(66)

Cytaty

Powiązane dokumenty

o aproksymacji istnieje nietrywialny aproksymant, czyli jest czołowa postać normalna.... o aproksymacji istnieje nietrywialny aproksymant, czyli jest czołowa

Takie typy czasem się

For every number n of a type derivation for a lambda-term M there exists m such that every number of a finite reduction sequence of M is less

For every number n of a type derivation for a lambda-term M there exists m such that every number of a finite reduction sequence of M is less than m... Strong Normalization.. For

Uwaga: Klasyczny rachunek zdań jest.. Statman): Inhabitation in simple types is decidable and P SPACE -complete.?. Wniosek: To samo dotyczy minimalnego

(Potem zredukujemy J do typu bool → word.).. Typy proste: semantyka.. Schubert’97):.. Nierozstrzygalność drugiego rzędu nawet wtedy, gdy niewiadome nie są

I Validity/provability in second-order classical propositional logic (known as the QBF problem) is P SPACE -complete.. I Provability in second-order intuitionistic propositional

I Przedmiotem dziaªania mo»e by¢ cokolwiek, zatem.. funkcja nie ma a priori