Documente Academic
Documente Profesional
Documente Cultură
FLP2023 C05
FLP2023 C05
C05
Denisa Diaconescu
Traian S, erbănut, ă
1
Lambda calcul cu tipuri simple
Probleme cu lambda calculul fără tipuri
2
Tipuri simple
4
Termeni s, i tipuri
5
Termeni s, i tipuri
5
Termeni s, i tipuri
Aplicare. Pentru M N este clar că vrem să s, tim tipurile lui M s, i N.
Intuitiv, M N înseamnă că ("funct, ia") M este aplicată ("intrării") N.
Atunci M trebuie să aibă un tip funct, ie, adică M : σ → τ, iar N
trebuie să fie "adecvat" pentru această funct, ie, adică N : σ.
Dacă M : σ → τ s, i N : σ, atunci M N : τ.
5
Termeni s, i tipuri
Aplicare. Pentru M N este clar că vrem să s, tim tipurile lui M s, i N.
Intuitiv, M N înseamnă că ("funct, ia") M este aplicată ("intrării") N.
Atunci M trebuie să aibă un tip funct, ie, adică M : σ → τ, iar N
trebuie să fie "adecvat" pentru această funct, ie, adică N : σ.
Dacă M : σ → τ s, i N : σ, atunci M N : τ.
Variabilă. x : σ.
Aplicare. Dacă M : σ → τ s, i N : σ, atunci M N : τ.
Abstractizare. Dacă x : σ s, i M : τ, atunci λx . M : σ → τ.
6
Termeni s, i tipuri
Variabilă. x : σ.
Aplicare. Dacă M : σ → τ s, i N : σ, atunci M N : τ.
Abstractizare. Dacă x : σ s, i M : τ, atunci λx . M : σ → τ.
Exemple.
• Dacă x : σ, atunci funct, ia identitate are tipul λx . x : σ → σ.
6
Termeni s, i tipuri
Variabilă. x : σ.
Aplicare. Dacă M : σ → τ s, i N : σ, atunci M N : τ.
Abstractizare. Dacă x : σ s, i M : τ, atunci λx . M : σ → τ.
Exemple.
• Dacă x : σ, atunci funct, ia identitate are tipul λx . x : σ → σ.
• Conform convent, iilor de la aplicare, y x poate avea un tip doar
dacă y are un tip săgeată de forma σ → τ s, i tipul lui x se
potrives, te cu tipul domeniu σ. În acest caz, tipul lui y x : τ.
6
Termeni s, i tipuri
Variabilă. x : σ.
Aplicare. Dacă M : σ → τ s, i N : σ, atunci M N : τ.
Abstractizare. Dacă x : σ s, i M : τ, atunci λx . M : σ → τ.
Exemple.
• Dacă x : σ, atunci funct, ia identitate are tipul λx . x : σ → σ.
• Conform convent, iilor de la aplicare, y x poate avea un tip doar
dacă y are un tip săgeată de forma σ → τ s, i tipul lui x se
potrives, te cu tipul domeniu σ. În acest caz, tipul lui y x : τ.
• Termenul x x nu poate avea nici un tip (nu este typeable).
Pe de o parte, x ar trebui să aibă tipul σ → τ (pentru prima
aparit, ie), pe de altă ar trebui să aibă tipul σ (pentru a doua
aparit, ie). Cum am stabilit că orice variabilă are un unic tip,
6
obt, inem σ → τ ≡ σ, ceea ce este imposibil.
Discut, ie despre asocitativitate
7
Discut, ie despre asocitativitate
7
Church-typing vs. Curry-typing
9
Church-typing vs. Curry-typing
9
Church-typing vs. Curry-typing
Putem să "ghicim" tipurile variabilelor astfel încât M să aibă tip?
10
Church-typing vs. Curry-typing
Putem să "ghicim" tipurile variabilelor astfel încât M să aibă tip?
10
Church-typing vs. Curry-typing
λzu. z : A → B y x :A M:B
11
Church-typing vs. Curry-typing
• x : β, y : β → α, z : α, u : δ, M : δ → α
13
Church-typing vs. Curry-typing
• x : β, y : β → α, z : α, u : δ, M : δ → α
• x : α → α, y : (α → α) → β, z : β, u : γ, M : γ → β
(solut, ia discutată la Church-typing)
13
Church-typing vs. Curry-typing
• x : β, y : β → α, z : α, u : δ, M : δ → α
• x : α → α, y : (α → α) → β, z : β, u : γ, M : γ → β
(solut, ia discutată la Church-typing)
• x : α, y : α → α → β, z : α → β, u : α → α,
M : (α → α) → α → β
13
Church-typing vs. Curry-typing
14
Church-typing
15
Church-typing
15
Church-typing
15
Sistem de deduct, ie pentru Church λ→
16
Sistem de deduct, ie pentru Church λ→
Vom da nis, te reguli care să ne permită să stabilim dacă o judecată
Γ ⊢ M : σ poate fi dedusă, adică dacă M are tipul σ în contextul Γ.
17
Sistem de deduct, ie pentru calculul Church λ→
dacă x : σ ∈ Γ (var )
Γ ⊢ x :σ
Γ ⊢ M : σ → τ Γ ⊢ N : σ (app )
Γ ⊢ MN:τ
Γ, x : σ ⊢ M : τ
(abs )
Γ ⊢ (λx : σ. M ) : σ → τ
18
Sistem de deduct, ie pentru calculul Church λ→
Γ ⊢ M:σ → τ Γ ⊢ N:σ Γ, x : σ ⊢ M : τ
(var ) (app ) (abs )
Γ ⊢ x:σ Γ ⊢ M N:τ Γ ⊢ (λx : σ. M ) : σ → τ
dacă x : σ ∈ Γ
∅ ⊢ (λy : α → β. λz : α. yz ) : (α → β) → α → β
19
Sistem de deduct, ie pentru calculul Church λ→
Γ ⊢ M:σ → τ Γ ⊢ N:σ Γ, x : σ ⊢ M : τ
(var ) (app ) (abs )
Γ ⊢ x:σ Γ ⊢ M N:τ Γ ⊢ (λx : σ. M ) : σ → τ
dacă x : σ ∈ Γ
∅ ⊢ (λy : α → β. λz : α. yz ) : (α → β) → α → β
(var ) (var )
y : α → β, z : α ⊢ y : α → β y : α → β, z : α ⊢ z : α
(app )
y : α → β, z : α ⊢ (yz ) : β
(abs )
y : α → β ⊢ (λz : α. yz ) : α → β
(abs )
∅ ⊢ (λy : α → β. λz : α. yz ) : (α → β) → α → β
19
Diferite stiluri pentru a scrie deduct, ii
1. y : α → β, z : α ⊢ y : α → β (var)
2. y : α → β, z : α ⊢ z : α (var)
3. y : α → β, z : α ⊢ (yz ) : β (app) cu 1 s, i 2
4. y : α → β ⊢ (λz : α. yz ) : α → β (abs) cu 3
5. ∅ ⊢ (λy : α → β. λz : α. yz ) : (α → β) → α → β (abs) cu 4
20
Diferite stiluri pentru a scrie deduct, ii
(λy : α → β. λz : α. yz ) : (α → β) → α → β
21
Diferite stiluri pentru a scrie deduct, ii
y :α → β (context )
(λz : α. yz ) : α → β
(λy : α → β. λz : α. yz ) : (α → β) → α → β (abs )
21
Diferite stiluri pentru a scrie deduct, ii
y :α → β (context )
z:α (context )
(yz ) : β
(λz : α. yz ) : α → β (abs )
(λy : α → β. λz : α. yz ) : (α → β) → α → β (abs )
21
Diferite stiluri pentru a scrie deduct, ii
1. y :α → β (context )
2. z:α (context )
3. (yz ) : β (app ) cu 1 s, i 2
4. (λz : α. yz ) : α → β (abs ) cu 3
5. (λy : α → β. λz : α. yz ) : (α → β) → α → β (abs ) cu 4
21
Sistem de deduct, ie pentru Church λ→
22
Quiz time!
https://tinyurl.com/2p9xf67e
23
Pe săptămâna viitoare!
24