20110327 systems of_typed_lambda_calculi_moskvin_lecture07
TRANSCRIPT
![Page 1: 20110327 systems of_typed_lambda_calculi_moskvin_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022051516/55a0a5a71a28ab50778b4703/html5/thumbnails/1.jpg)
Системы типизации лямбда-исчисления
Лекция 7. Полиморфные системы типов
Денис Москвин
27.03.2011
CS Club при ПОМИ РАН
1
![Page 2: 20110327 systems of_typed_lambda_calculi_moskvin_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022051516/55a0a5a71a28ab50778b4703/html5/thumbnails/2.jpg)
Предварительные замечания (1)
В λ→ невозможно повторное использование:
λxα. x : α→α
λxβ. x : β→β
λxγ→δ. x : (γ→δ)→γ→δ
— три разные функции.
Даже в версии Карри, типизируя терм
(λy.y)(λx. x)
имеем x :σ, y :σ→σ, λx. x : σ→σ, λy.y : (σ→σ)→σ→σ.
Делая одну экспансию, получим нетипизируемое
(λf. f f)(λx. x)
2
![Page 3: 20110327 systems of_typed_lambda_calculi_moskvin_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022051516/55a0a5a71a28ab50778b4703/html5/thumbnails/3.jpg)
Предварительные замечания (2)
Идея: добавить нотацию полиморфизма
(λx. x) : ∀α.α→α
(λxy. x) : ∀α.∀β.α→β→α
Вместо типовой переменной под квантором всеобщности мож-но подставить любой тип:
(α→α)[α := γ] ⇒ (λx. x) :γ→γ
(α→α)[α := γ→γ] ⇒ (λx. x) : (γ→γ)→γ→γ
(α→α)[α := γ→δ→γ] ⇒ (λx. x) : (γ→δ→γ)→γ→δ→γ
Это даёт нам λ2 — лямбда-исчисление второго порядка.System F (Жан-Ив Жирар, 1972)Полиморфное лямбда-исчисление (Джон Рейнольдс, 1974)
3
![Page 4: 20110327 systems of_typed_lambda_calculi_moskvin_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022051516/55a0a5a71a28ab50778b4703/html5/thumbnails/4.jpg)
Типы для λ2
V = {α,β, . . .} — множество типовых переменных.Сильный полиморфизм (System F)
T := V | T→T | ∀V.T
Слабый полиморфизм (в стиле ML)
T→ ::= V | T→→T→Tw ::= ∀V.Tw | T→
Квантор ∀ можно ставить только на верхнем уровне:
∀α1. ∀α2. · · · ∀αn.σ ≡ ∀α1α2 . . . αn.σ
где σ тип из λ→ (монотип).Но нельзя так ∀α.α→(∀β.α→β)→α.
4
![Page 5: 20110327 systems of_typed_lambda_calculi_moskvin_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022051516/55a0a5a71a28ab50778b4703/html5/thumbnails/5.jpg)
Контексты для λ2
Типовые переменные теперь тоже делятся на связанные (кван-тором ∀) и свободные.Свободные должны быть описаны в контексте.
Нотация объявления типовой переменной: α :∗(что эквивалентно α ∈ V).Контекст теперь — упорядоченное множество объявлений
Γ = 〈α :∗, x :α→α〉 (но не наоборот!)
α :∗,β :∗, f :α→β ` f :α→β
α :∗,β :∗, f :α→β, x :α ` f x :β
α :∗,β :∗, x :α ` λf. f x : (α→β)→β
α :∗, x :α ` λf. f x :∀β. (α→β)→β
Для последнего утверждения требуется правило.5
![Page 6: 20110327 systems of_typed_lambda_calculi_moskvin_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022051516/55a0a5a71a28ab50778b4703/html5/thumbnails/6.jpg)
Правило введения ∀ в λ2 в стиле Карри(универсальная абстракция)
Γ ,α :∗ `M :σ
Γ `M :∀α.σ
Переменная α на последнем месте в контексте.То есть она не присутствует в Γ .
α :∗,β :∗, x :α ` λf. f x : (α→β)→β
По β абстрагировать можно, а по α — нельзя!
α :∗, x :α,β :∗ ` λf. f x : (α→β)→β
α :∗, x :α ` λf. f x :∀β. (α→β)→β
6
![Page 7: 20110327 systems of_typed_lambda_calculi_moskvin_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022051516/55a0a5a71a28ab50778b4703/html5/thumbnails/7.jpg)
Выводимость типа из контекста
Расширим понятие выводимости из контекста на типы.
Тип выводи́м из контекста, нотация
Γ ` σ :∗если все свободные переменные σ принадлежат Γ .
Например,
α :∗,β :∗ ` (α→β)→β :∗α :∗ ` ∀β. (α→β)→β :∗
` ∀αβ. (α→β)→β :∗
β :∗ ` (∀α.α→β)→β :∗Последнее верно только для λ2(T), но не для λ2(Tw).
7
![Page 8: 20110327 systems of_typed_lambda_calculi_moskvin_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022051516/55a0a5a71a28ab50778b4703/html5/thumbnails/8.jpg)
Правило удаления ∀ в λ2 в стиле Карри
Γ `M :∀α.σ Γ ` τ :∗Γ `M :σ[α := τ]
τ ∈ T→ для λ2(Tw) и τ ∈ T для λ2(T).
Пример.
β :∗,γ :∗ ` λxy. x :∀α.α→β→α
β :∗,γ :∗ ` λxy. x : (β→γ)→β→β→γ
β :∗,γ :∗ ` λxy. x : (∀δ. δ→γ)→β→(∀δ. δ→γ)
Последнее только для λ2(T).В λ2(Tw) в подстановке может участвовать лишь монотип.
8
![Page 9: 20110327 systems of_typed_lambda_calculi_moskvin_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022051516/55a0a5a71a28ab50778b4703/html5/thumbnails/9.jpg)
Формальности λ2: правила для контекстов
Контекст называют допустимым, обозначение
Γ `
если он построен по следующим правилам:
(начальное) 〈 〉 `
(расширение1)Γ `
Γ ,α :∗ `α 6∈ dom(Γ)
(расширение2)Γ ` σ :∗Γ , x :σ `
x 6∈ dom(Γ)
9
![Page 10: 20110327 systems of_typed_lambda_calculi_moskvin_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022051516/55a0a5a71a28ab50778b4703/html5/thumbnails/10.jpg)
Формальности λ2: образование типов
(начальное)α :∗ ∈ ΓΓ ` α : ∗
(образование →)Γ ` σ :∗ Γ ` τ :∗Γ ` σ→τ : ∗
(образование ∀) Γ ,α :∗ ` σ :∗Γ ` ∀α.σ : ∗
Эти правила описывают λ2(T), для λ2(Tw) напишите самосто-ятельно (совет: введите ∗w и ∗→).
10
![Page 11: 20110327 systems of_typed_lambda_calculi_moskvin_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022051516/55a0a5a71a28ab50778b4703/html5/thumbnails/11.jpg)
Формальности λ2 а ля Карри: правила типизации
(начальное)x :σ ∈ ΓΓ ` x :σ
(удаление →)Γ `M :σ→τ Γ ` N :σ
Γ `MN : τ
(введение →)Γ , x :σ `M :τ
Γ ` λx.M : σ→τ
σ ∈ T→ для λ2(Tw)σ ∈ T для λ2(T)
(удаление ∀) Γ `M : ∀α.σ Γ ` τ :∗Γ `M : σ[α := τ]
τ ∈ T→ для λ2(Tw)τ ∈ T для λ2(T)
(введение ∀) Γ ,α :∗ `M :σ
Γ `M : ∀α.σДля λ2(Tw) подстановка типа и абстракция монотипны.
11
![Page 12: 20110327 systems of_typed_lambda_calculi_moskvin_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022051516/55a0a5a71a28ab50778b4703/html5/thumbnails/12.jpg)
Типизируем самоприменение f f
Пусть Γ ≡ f :∀α.α→α,β :∗ (он допустим — д.з.), тогда
Γ ` f :∀α.α→α Γ ` β→β :∗
Γ ` f : (β→β)→β→β(уд∀)
Γ ` f :∀α.α→α Γ ` β :∗
Γ ` f :β→β(уд∀)
f :∀α.α→α,β :∗ ` (f f) :β→β
f :∀α.α→α ` (f f) :∀β.β→β
` λf. (f f) : (∀α.α→α)→(∀β.β→β)(вв→)
(вв∀)
(уд→)
Последнее верно только для λ2(T), но не для λ2(Tw).
Распространено обозначение > ≡ ∀α.α→α, тогдаI в λ2(Tw) имеем f :> ` (f f) :>;I в λ2(T) имеем ` λf. (f f) :>→>.
12
![Page 13: 20110327 systems of_typed_lambda_calculi_moskvin_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022051516/55a0a5a71a28ab50778b4703/html5/thumbnails/13.jpg)
Типизируем самоприменение f f по-другому
Пусть Γ ≡ f :∀α.α,β :∗ (он допустим — д.з.), тогда
Γ ` f :∀α.α Γ ` β→β :∗
Γ ` f :β→β(уд∀)
Γ ` f :∀α.α Γ ` β :∗
Γ ` f :β(уд∀)
f :∀α.α,β :∗ ` (f f) :β
f :∀α.α ` (f f) :∀β.β
` λf. (f f) : (∀α.α)→(∀β.β)(вв→)
(вв∀)
(уд→)
Последнее опять только для λ2(T), но не для λ2(Tw).
Распространено обозначение ⊥ ≡ ∀α.α, тогдаI в λ2(Tw) имеем f :⊥ ` (f f) :⊥;I в λ2(T) имеем ` λf. (f f) :⊥→⊥.
13
![Page 14: 20110327 systems of_typed_lambda_calculi_moskvin_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022051516/55a0a5a71a28ab50778b4703/html5/thumbnails/14.jpg)
Проблемы разрешимости для λ2 по Карри
Задача проверки типа (ЗПТ) `M :σ?;Задача синтеза типа (ЗСТ) `M : ?;Задача обитаемости типа (ЗОТ) ` ? :σ.
Для λ2(Tw) ЗПТ и ЗСТ эквивалентны и разрешимы: алго-ритм PT легко расширяется на схемы типов.ЗОТ тоже разрешима.
Для сильной системы λ2(T) ЗПТ и ЗСТ эквивалентны и нераз-решимы. (Joe Wells, 1993)ЗОТ тоже неразрешима.
Практический вопрос: насколько можно расширить слабуюсистему, чтобы сохранить возможность синтеза типа?
14
![Page 15: 20110327 systems of_typed_lambda_calculi_moskvin_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022051516/55a0a5a71a28ab50778b4703/html5/thumbnails/15.jpg)
Let-полиморфизм
Можно расширить λ2(Tw) правилом:
(правило let)Γ `M :σ Γ , x :σ ` N :τ
Γ ` (let x =M in N) :τ
τ ∈ T→σ ∈ Tw
Фактически это способ делать полиморфные (по σ) редексы:
(λx.N)M
Но голые полиморфные (по σ) абстракции (λx.N) : σ→ τ по-прежнему недопустимы!Теперь можно типизировать let f = λx. x in f f. (д.з.)ЗСТ по-прежнему разрешима: алгоритм PT требует лишьнебольшой модификации.
15
![Page 16: 20110327 systems of_typed_lambda_calculi_moskvin_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022051516/55a0a5a71a28ab50778b4703/html5/thumbnails/16.jpg)
Ранжирование типов
Определим множество типов T(k) ранга k индуктивно:
T(0) ::= V | T(0)→T(0) (≡ T→)
T(k+ 1) ::= T(k) | T(k)→T(k+ 1) | ∀V.T(k+ 1)
Например, типы первого ранга
∀α.α→α
∀α.α→(∀β.α→β)
Тип второго ранга (∀α.α→α)→(∀β.β)Тип третьего ранга ((∀α.α→α)→β)→γ
16
![Page 17: 20110327 systems of_typed_lambda_calculi_moskvin_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022051516/55a0a5a71a28ab50778b4703/html5/thumbnails/17.jpg)
Разрешимость для λ2(T(k)) в стиле Карри
Система λ2(T(1)) это фактически λ2(Tw); ЗСТ для неё разре-шима.
Для cистемы λ2(T(2)) ЗСТ разрешима, алгоритм описан в1999 году (Kfoury and Wells, 1999).
Для систем более высокого ранга ЗСТ неразрешима.
Однако при наличии некоторых «подсказок» (указаний ти-пов в определенных видах термов) синтез типа оказываетсявозможным.
17
![Page 18: 20110327 systems of_typed_lambda_calculi_moskvin_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022051516/55a0a5a71a28ab50778b4703/html5/thumbnails/18.jpg)
λ2 в стиле Чёрча: абстракция
В системах Чёрча терм содержит информацию о типах.
α :∗,β :∗, x :α,y :β ` x :α
α :∗,β :∗, x :α ` (λy:β. x) : β→α
α :∗,β :∗ ` (λx:α. λy:β. x) : α→β→α
Хотим универсально абстрагироваться по β. Как это отра-зить в терме?
α :∗ ` (λβ :∗. λx :α. λy :β. x) : ∀β.α→β→α
` (λα :∗. λβ :∗. λx :α. λy :β. x) : ∀α.∀β.α→β→α
Часто вместо λα :∗ пишут Λα :∗ или просто Λα.
α :∗ ` (Λβ. λxα yβ. x) : ∀β.α→β→α
` (Λαβ. λxα yβ. x) : ∀αβ.α→β→α
18
![Page 19: 20110327 systems of_typed_lambda_calculi_moskvin_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022051516/55a0a5a71a28ab50778b4703/html5/thumbnails/19.jpg)
Правило введения ∀ в λ2 в стиле Чёрча(универсальная абстракция)
Γ ,α :∗ `M : σ
Γ ` Λα.M : ∀α.σили Γ ,α :∗ `M : σ
Γ ` λα :∗.M : ∀α.σ
Красным выделено отличие от λ2 в стиле Карри.На прошлом слайде мы показали, что в λ2 в стиле Чёрча
K ≡ Λαβ. λxα yβ. x, `K : ∀αβ.α→β→α
Аналогично для I
α :∗ ` λxα. x : α→α
` Λα. λxα. x : ∀α.α→α
I ≡ Λα. λxα. x, ` I : ∀α.α→α
19
![Page 20: 20110327 systems of_typed_lambda_calculi_moskvin_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022051516/55a0a5a71a28ab50778b4703/html5/thumbnails/20.jpg)
λ2 в стиле Чёрча: применение терма к типу
Удаление ∀ тоже должно отражаться на терме.
γ :∗ ` (Λα.Λβ. λxα. λyβ. x) : ∀α. ∀β.α→β→α
γ :∗ ` (Λα.Λβ. λxα[α:=γ]. λyβ. x)γ : ∀β.α→β→α[α := γ]
На уровне типов это делается через подстановку типа, а науровне термов — через универсальное применение.
Универсальное применение порождает новый способ редук-ции (Λα.M)σ→βM[α := σ]
γ :∗ ` (Λβ. λxγ. λyβ. x) : ∀β.γ→β→γ
γ :∗, δ :∗ ` (Λβ. λxγ. λyβ. x) (δ→δ) : γ→β→γ[β := δ→δ]
γ :∗, δ :∗ ` (λxγ. λyδ→δ. x) : γ→(δ→δ)→γ
20
![Page 21: 20110327 systems of_typed_lambda_calculi_moskvin_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022051516/55a0a5a71a28ab50778b4703/html5/thumbnails/21.jpg)
Правило удаления ∀ в λ2 в стиле Чёрча(универсальная аппликация)
Γ `M : ∀α.σ Γ ` τ : ∗Γ `Mτ : σ[α := τ]
Красным выделено отличие от λ2 в стиле Карри.На прошлом слайде мы показали, что в λ2 в стиле Чёрча
`K : ∀αβ.α→β→α γ :∗, δ :∗ `Kγ (δ→δ) : γ→(δ→δ)→γ
Аналогично для I ≡ Λα. λxα. x имели ` I : ∀α.α→α и
γ :∗ ` Iγ : γ→γ
Iγ ≡ (Λα. λxα. x)γ →β λxγ. x
21
![Page 22: 20110327 systems of_typed_lambda_calculi_moskvin_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022051516/55a0a5a71a28ab50778b4703/html5/thumbnails/22.jpg)
Формальности λ2 а ля Чёрч: предтермы и редукция
Предтермы:
ΛT = V | ΛTΛT | ΛTT | λVT.ΛT | ΛV.ΛT
Редукция:
(λxσ.M)N →β M[x := N],
(Λα.M)σ →β M[α := σ]
Во втором виде редукций подстановка происходит в типы.«Базовая» структура терма не меняется.
22
![Page 23: 20110327 systems of_typed_lambda_calculi_moskvin_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022051516/55a0a5a71a28ab50778b4703/html5/thumbnails/23.jpg)
Формальности λ2 а ля Чёрч: правила типизации
(начальное)x : σ ∈ ΓΓ ` x : σ
(удаление →)Γ `M : σ→τ Γ ` N : σ
Γ `MN : τ
(введение →)Γ , x :σ `M : τ
Γ ` λxσ.M : σ→τ
(удаление ∀) Γ `M : ∀α.σ Γ ` τ : ∗Γ `Mτ : σ[α := τ]
(введение ∀) Γ ,α : ∗ `M : σ
Γ ` Λα.M : ∀α.σКрасным выделено отличие от λ2 в стиле Карри.
23
![Page 24: 20110327 systems of_typed_lambda_calculi_moskvin_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022051516/55a0a5a71a28ab50778b4703/html5/thumbnails/24.jpg)
Типизируем самоприменение f f в λ2 а ля Чёрч
Напомним, что > ≡ ∀α.α→α, тогда для Γ ≡ f :>,β :∗
Γ ` f :> Γ ` β→β :∗
Γ ` f (β→β) : (β→β)→β→β(уд∀)
Γ ` f :> Γ ` β :∗
Γ ` f β : β→β(уд∀)
f :>,β :∗ ` f (β→β) (f β) : β→β
f :> ` Λβ. f (β→β) (f β) : ∀β.β→β
` λf>.Λβ. f (β→β) (f β) : >→> (вв→)
(вв∀)
(уд→)
24
![Page 25: 20110327 systems of_typed_lambda_calculi_moskvin_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022051516/55a0a5a71a28ab50778b4703/html5/thumbnails/25.jpg)
Типизируем самоприменение f f в λ2 а ля Чёрчпо-другому
Совсем по-другому (> ≡ ∀α.α→α):
f :> ` f :> ` > :∗
f :> ` f> : >→> (уд∀) f :> ` f :>
f :> ` f> f : >
` λf>. f> f : >→>(вв→)
(уд→)
Красным выделено импредикативное применение:
f : ∀α.α→α
f (∀α.α→α) : (∀α.α→α)→(∀α.α→α)
25
![Page 26: 20110327 systems of_typed_lambda_calculi_moskvin_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022051516/55a0a5a71a28ab50778b4703/html5/thumbnails/26.jpg)
Связь между системами λ2 Карри и Чёрча
Можно задать стирающее отображение | · | : ΛT → Λ:
|x| ≡ x
|MN| ≡ |M| |N|
|Mσ| ≡ |M|
|λxσ.M| ≡ λx. |M|
|Λα.M| ≡ |M|
Все термы из версии Чёрча λ2 «проектируются» в термы вверсии Карри:I M ∈ ΛT ∧ Γ `чM :σ ⇒ Γ `к |M| :σ
Термы из версии Карри λ2 могут быть «подняты» в термыиз версии Чёрча:I M ∈ Λ ∧ Γ `кM :σ ⇒ ∃N ∈ ΛT [Γ `ч N :σ ∧ |N| ≡M]
26
![Page 27: 20110327 systems of_typed_lambda_calculi_moskvin_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022051516/55a0a5a71a28ab50778b4703/html5/thumbnails/27.jpg)
Проблемы разрешимости для λ2 а ля Чёрч
ЗПТ `M :σ? и ЗСТ `M : ?.Для λ2 а ля Чёрч — разрешимы, в отличие от λ2 а ля Карри.
ЗОТ ` ? :σ.Неразрешима, поскольку соответствует доказуемости в PROP2,для которой факт неразрешимости известен.
27
![Page 28: 20110327 systems of_typed_lambda_calculi_moskvin_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022051516/55a0a5a71a28ab50778b4703/html5/thumbnails/28.jpg)
Свойства λ2
Лемма об инверсии (генерации) должна быть расширенаI Γ ` (Λα.M) :ρ ⇒ ∃σ [Γ ,α :∗ `M :σ ∧ ρ ≡ ∀α.σ].
Лемма о типизируемости подтерма сохраняется.
В леммы о контекстах добавляются свободные типовые пе-ременные.
Леммы подстановки типа и терма сохраняются.
28
![Page 29: 20110327 systems of_typed_lambda_calculi_moskvin_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022051516/55a0a5a71a28ab50778b4703/html5/thumbnails/29.jpg)
Свойства λ2 (2)
I Единственность типа (для λ2 в стиле Чёрча):Пусть Γ `M :σ и Γ `M :τ. Тогда σ ≡ τ.
I Редукция субъектаПусть M�β N. Тогда Γ `M :σ ⇒ Γ ` N :σ.
I Сильная нормализуемостьПусть Γ `M :σ. Тогда любая последовательность β-редукцийприводит к нормальной форме за конечное число шагов.
29
![Page 30: 20110327 systems of_typed_lambda_calculi_moskvin_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022051516/55a0a5a71a28ab50778b4703/html5/thumbnails/30.jpg)
Интерпретация ∀
Доказательство SN для λ→ базировалось на интерпретации
[[α]] := SN
[[σ→τ]] := {M | ∀N ∈ [[σ]] (MN) ∈ [[τ]]}
Как задать [[∀α.σ]]?
[[∀α.σ]] :=∏x∈U
[[σ]]α:=x??
I∏x∈U
— слишком большое; идея Жирара:
[[∀α.σ]] :=⋂x∈U
[[σ]]α:=x
I U — класс насыщенных множеств (SAT).[LCWT 4.3, ITT 5.6]
30
![Page 31: 20110327 systems of_typed_lambda_calculi_moskvin_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022051516/55a0a5a71a28ab50778b4703/html5/thumbnails/31.jpg)
Параметричность
Интерпретация [[∀α.σ]] :=⋂x∈U
[[σ]]α:=x соответствует той идее,
что терм типа ∀α.σ параметричен по α.
Такой терм действует «не заглядывая в тип». Полиморфныйтерм ведёт себя единообразно (по типу).
Например, замкнутый терм с типом > ≡ ∀α.α→ α единстве-нен:
I ≡ Λα. λxα. x
Замкнутых термов с типом ⊥ ≡ ∀α.α не существует.
31
![Page 32: 20110327 systems of_typed_lambda_calculi_moskvin_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022051516/55a0a5a71a28ab50778b4703/html5/thumbnails/32.jpg)
Домашнее задание
Постройте для λ2(T) в стиле Карри дерево вывода дляI `K : (∀α.α)→σ→τ
Типизируйте λ2(Tw) (с правилом let) в стиле Карри и по-стройте дерево выводаI let f = λx. x in f f
Найдите тип в λ2(T) (в стиле Карри и Чёрча)I λx. x x xI λx. (x x) (x x)
«Поднимите», атрибутировав типами, терм в стиле Карри всистему Чёрча (двумя способами, импредикативным и нет),сохранив типизациюI λf. f f : ⊥→⊥
32
![Page 33: 20110327 systems of_typed_lambda_calculi_moskvin_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022051516/55a0a5a71a28ab50778b4703/html5/thumbnails/33.jpg)
Литература (1)
TAPL гл. 23Benjamin C. Pierce, Types and Programming Languages, MITPress, 2002
http://www.cis.upenn.edu/~bcpierce/tapl
ITT гл. 5Herman Geuvers, Introduction to Type TheoryAlfa Lernet Summer school 2008, Uruguay
http://www.cs.ru.nl/H.Geuvers/Uruguay2008SummerSchool.html
33
![Page 34: 20110327 systems of_typed_lambda_calculi_moskvin_lecture07](https://reader033.vdocuments.pub/reader033/viewer/2022051516/55a0a5a71a28ab50778b4703/html5/thumbnails/34.jpg)
Литература (2)
LCWT гл. 4, 5Henk Barendregt, Lambda calculi with types,Handbook of logic in computer science (vol. 2), Oxford UniversityPress, 1993
34