20110327 systems of_typed_lambda_calculi_moskvin_lecture07

34
Системы типизации лямбда-исчисления Лекция 7. Полиморфные системы типов Денис Москвин 27.03.2011 CS Club при ПОМИ РАН 1

Upload: computer-science-club

Post on 11-Jul-2015

299 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 20110327 systems of_typed_lambda_calculi_moskvin_lecture07

Системы типизации лямбда-исчисления

Лекция 7. Полиморфные системы типов

Денис Москвин

27.03.2011

CS Club при ПОМИ РАН

1

Page 2: 20110327 systems of_typed_lambda_calculi_moskvin_lecture07

Предварительные замечания (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

Предварительные замечания (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

Типы для λ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

Контексты для λ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

Правило введения ∀ в λ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

Выводимость типа из контекста

Расширим понятие выводимости из контекста на типы.

Тип выводи́м из контекста, нотация

Γ ` σ :∗если все свободные переменные σ принадлежат Γ .

Например,

α :∗,β :∗ ` (α→β)→β :∗α :∗ ` ∀β. (α→β)→β :∗

` ∀αβ. (α→β)→β :∗

β :∗ ` (∀α.α→β)→β :∗Последнее верно только для λ2(T), но не для λ2(Tw).

7

Page 8: 20110327 systems of_typed_lambda_calculi_moskvin_lecture07

Правило удаления ∀ в λ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

Формальности λ2: правила для контекстов

Контекст называют допустимым, обозначение

Γ `

если он построен по следующим правилам:

(начальное) 〈 〉 `

(расширение1)Γ `

Γ ,α :∗ `α 6∈ dom(Γ)

(расширение2)Γ ` σ :∗Γ , x :σ `

x 6∈ dom(Γ)

9

Page 10: 20110327 systems of_typed_lambda_calculi_moskvin_lecture07

Формальности λ2: образование типов

(начальное)α :∗ ∈ ΓΓ ` α : ∗

(образование →)Γ ` σ :∗ Γ ` τ :∗Γ ` σ→τ : ∗

(образование ∀) Γ ,α :∗ ` σ :∗Γ ` ∀α.σ : ∗

Эти правила описывают λ2(T), для λ2(Tw) напишите самосто-ятельно (совет: введите ∗w и ∗→).

10

Page 11: 20110327 systems of_typed_lambda_calculi_moskvin_lecture07

Формальности λ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

Типизируем самоприменение 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

Типизируем самоприменение 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

Проблемы разрешимости для λ2 по Карри

Задача проверки типа (ЗПТ) `M :σ?;Задача синтеза типа (ЗСТ) `M : ?;Задача обитаемости типа (ЗОТ) ` ? :σ.

Для λ2(Tw) ЗПТ и ЗСТ эквивалентны и разрешимы: алго-ритм PT легко расширяется на схемы типов.ЗОТ тоже разрешима.

Для сильной системы λ2(T) ЗПТ и ЗСТ эквивалентны и нераз-решимы. (Joe Wells, 1993)ЗОТ тоже неразрешима.

Практический вопрос: насколько можно расширить слабуюсистему, чтобы сохранить возможность синтеза типа?

14

Page 15: 20110327 systems of_typed_lambda_calculi_moskvin_lecture07

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

Ранжирование типов

Определим множество типов 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

Разрешимость для λ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

λ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

Правило введения ∀ в λ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

λ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

Правило удаления ∀ в λ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

Формальности λ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

Формальности λ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

Типизируем самоприменение 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

Типизируем самоприменение 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

Связь между системами λ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

Проблемы разрешимости для λ2 а ля Чёрч

ЗПТ `M :σ? и ЗСТ `M : ?.Для λ2 а ля Чёрч — разрешимы, в отличие от λ2 а ля Карри.

ЗОТ ` ? :σ.Неразрешима, поскольку соответствует доказуемости в PROP2,для которой факт неразрешимости известен.

27

Page 28: 20110327 systems of_typed_lambda_calculi_moskvin_lecture07

Свойства λ2

Лемма об инверсии (генерации) должна быть расширенаI Γ ` (Λα.M) :ρ ⇒ ∃σ [Γ ,α :∗ `M :σ ∧ ρ ≡ ∀α.σ].

Лемма о типизируемости подтерма сохраняется.

В леммы о контекстах добавляются свободные типовые пе-ременные.

Леммы подстановки типа и терма сохраняются.

28

Page 29: 20110327 systems of_typed_lambda_calculi_moskvin_lecture07

Свойства λ2 (2)

I Единственность типа (для λ2 в стиле Чёрча):Пусть Γ `M :σ и Γ `M :τ. Тогда σ ≡ τ.

I Редукция субъектаПусть M�β N. Тогда Γ `M :σ ⇒ Γ ` N :σ.

I Сильная нормализуемостьПусть Γ `M :σ. Тогда любая последовательность β-редукцийприводит к нормальной форме за конечное число шагов.

29

Page 30: 20110327 systems of_typed_lambda_calculi_moskvin_lecture07

Интерпретация ∀

Доказательство 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

Параметричность

Интерпретация [[∀α.σ]] :=⋂x∈U

[[σ]]α:=x соответствует той идее,

что терм типа ∀α.σ параметричен по α.

Такой терм действует «не заглядывая в тип». Полиморфныйтерм ведёт себя единообразно (по типу).

Например, замкнутый терм с типом > ≡ ∀α.α→ α единстве-нен:

I ≡ Λα. λxα. x

Замкнутых термов с типом ⊥ ≡ ∀α.α не существует.

31

Page 32: 20110327 systems of_typed_lambda_calculi_moskvin_lecture07

Домашнее задание

Постройте для λ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

Литература (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

Литература (2)

LCWT гл. 4, 5Henk Barendregt, Lambda calculi with types,Handbook of logic in computer science (vol. 2), Oxford UniversityPress, 1993

34