Разработка системы "EASYCONTROLLER". Системы программирования промышленных логических контроллеров
Системы типизации лямбда-исчисления, весна 2011: Чистые...
Transcript of Системы типизации лямбда-исчисления, весна 2011: Чистые...
![Page 1: Системы типизации лямбда-исчисления, весна 2011: Чистые системы типов](https://reader033.fdocument.pub/reader033/viewer/2022051708/58a053e21a28ab5c1c8b4a71/html5/thumbnails/1.jpg)
Системы типизации лямбда-исчисления
Лекция 11. Чистые системы типов
Денис Москвин
22.05.2011
CS Club при ПОМИ РАН
1
![Page 2: Системы типизации лямбда-исчисления, весна 2011: Чистые системы типов](https://reader033.fdocument.pub/reader033/viewer/2022051708/58a053e21a28ab5c1c8b4a71/html5/thumbnails/2.jpg)
Чистые системы типов (PTS): введение (1)
Чистые системы типов (Pure Type Systems) задают абстракт-ную инфраструктуру, позволяющую унифицированно описы-вать конкретные системы типов:
• интерпретация «высказывания-как-типы» приобретает про-стую форму
• легко сравнивать свойства разных систем
• многие свойства доказываются для целых групп систем
Берарди [1989] и Терлов [1989]2
![Page 3: Системы типизации лямбда-исчисления, весна 2011: Чистые системы типов](https://reader033.fdocument.pub/reader033/viewer/2022051708/58a053e21a28ab5c1c8b4a71/html5/thumbnails/3.jpg)
Чистые системы типов (PTS): введение (2)
Обобщения систем λ-куба, формирующие системы PTS:
• количество сортов становится произвольным(на кубе их два ∗ и �);
• набор аксиом тоже может быть расширен(на кубе аксиома одна ∗ :�);
• сорт Π-типа может отличаться от сорта возвращаемогозначения
3
![Page 4: Системы типизации лямбда-исчисления, весна 2011: Чистые системы типов](https://reader033.fdocument.pub/reader033/viewer/2022051708/58a053e21a28ab5c1c8b4a71/html5/thumbnails/4.jpg)
Определение PTS (1)
Множество (пред)выражений
Λ := V | C | ΛΛ | λV :Λ.Λ | ΠV :Λ.Λ
где V — множество переменных, а C — констант.
Высказывания M :A, объявления x :A, (пред)контексты Γ —как на λ-кубе.
4
![Page 5: Системы типизации лямбда-исчисления, весна 2011: Чистые системы типов](https://reader033.fdocument.pub/reader033/viewer/2022051708/58a053e21a28ab5c1c8b4a71/html5/thumbnails/5.jpg)
Определение PTS (2)
Спецификация конкретной PTS задаётся тройкой S = (S,A,R)
• S — подмножество C, его элементы называют сортами
• A — множество аксиом вида c :s, причём c ∈ C и s ∈ S
• R — множество правил вида (s1, s2, s3), причём s1, s2, s3 ∈ S
V — объединение непересекающихся подмножеств
V = ∪s∈SVs, Vs1 ∩ Vs2 = ∅, Vs = {sx, sy, sz, . . .}
«Греко-латинская» система: ∗x, ∗y, ∗z, �α,�β,�γ.5
![Page 6: Системы типизации лямбда-исчисления, весна 2011: Чистые системы типов](https://reader033.fdocument.pub/reader033/viewer/2022051708/58a053e21a28ab5c1c8b4a71/html5/thumbnails/6.jpg)
Аксиомы и правила для Γ `λSM : A (1)
Нотация присваивания типов Γ `λSM : A задаётся так
Аксиомы` c : s
, если (c :s) ∈ A
Начальное правилоΓ ` A :s
Γ , x :A ` x :A, если x ≡ sx 6∈ Γ
Правило ослабленияΓ `M :A Γ ` B :sΓ , x :B `M :A
, если x ≡ sx 6∈ Γ
Здесь s ∈ S, c ∈ C, x ∈ V и A,B,M ∈ Λ.
(продолжение далее...)6
![Page 7: Системы типизации лямбда-исчисления, весна 2011: Чистые системы типов](https://reader033.fdocument.pub/reader033/viewer/2022051708/58a053e21a28ab5c1c8b4a71/html5/thumbnails/7.jpg)
Аксиомы и правила для Γ `λSM : A (2)
Правило произведенияΓ ` A :s1 Γ , x :A ` B :s2
Γ ` (Πx :A.B) : s3, (s1, s2, s3) ∈ R
Правило примененияΓ `M : (Πx :A.B) Γ ` N :A
Γ `MN :B[x := N]
Правило абстракцииΓ , x :A `M :B Γ ` (Πx :A.B) :s
Γ ` (λx :A.M) : (Πx :A.B)
Здесь s, s1, s2, s3 ∈ S, x ∈ V и A,B,M,N ∈ Λ.
(продолжение далее...)7
![Page 8: Системы типизации лямбда-исчисления, весна 2011: Чистые системы типов](https://reader033.fdocument.pub/reader033/viewer/2022051708/58a053e21a28ab5c1c8b4a71/html5/thumbnails/8.jpg)
Аксиомы и правила для Γ `λSM : A (3)
Правило преобразованияΓ ` A :B Γ ` B ′ :s B =β B
′
Γ ` A :B ′
Здесь s ∈ S и A,B,B ′ ∈ Λ.
Посылка B =β B′ может быть неразрешима; её можно заме-
нить на
B→β B′ ∨ B ′ →β B
8
![Page 9: Системы типизации лямбда-исчисления, весна 2011: Чистые системы типов](https://reader033.fdocument.pub/reader033/viewer/2022051708/58a053e21a28ab5c1c8b4a71/html5/thumbnails/9.jpg)
Примеры PTS (1)
Принято обозначение (s1, s2) ≡ (s1, s2, s2).
λ→ S ∗,�A ∗ :�R (∗, ∗)
λ2
S ∗,�A ∗ :�R (∗, ∗), (�, ∗)
λω
S ∗,�A ∗ :�R (∗, ∗), (�, ∗), (�,�)
λP
S ∗,�A ∗ :�R (∗, ∗), (∗,�)
9
![Page 10: Системы типизации лямбда-исчисления, весна 2011: Чистые системы типов](https://reader033.fdocument.pub/reader033/viewer/2022051708/58a053e21a28ab5c1c8b4a71/html5/thumbnails/10.jpg)
Примеры PTS (2)
λC = λPωS ∗,�A ∗ :�R (∗, ∗), (∗,�), (�, ∗), (�,�)
λC ′S ∗t, ∗p,�A ∗t :�, ∗p :�R S2
λC∞ S ∗, {�i}i∈NA ∗ :�0, �i :�i+1R (∗, ∗), (∗,�), (�, ∗), (�i,�j,�max(i,j))
10
![Page 11: Системы типизации лямбда-исчисления, весна 2011: Чистые системы типов](https://reader033.fdocument.pub/reader033/viewer/2022051708/58a053e21a28ab5c1c8b4a71/html5/thumbnails/11.jpg)
Примеры PTS (3)
λ∗S ∗A ∗ :∗R (∗, ∗)
λU
S ∗,�,∆A ∗ :�,� :∆R (∗, ∗), (�, ∗), (�,�), (∆, ∗), (∆,�)
Две последние системы «неконсистентны» в том смысле,что в них все типы являются обитаемыми (парадокс Жира-ра).
11
![Page 12: Системы типизации лямбда-исчисления, весна 2011: Чистые системы типов](https://reader033.fdocument.pub/reader033/viewer/2022051708/58a053e21a28ab5c1c8b4a71/html5/thumbnails/12.jpg)
Свойства PTS (1)
Пусть Γ — предконтекст, а A — предвыражение.
I Γ называется (допустимым) контекстом, если∃A,B ∈ Λ Γ ` A : B.
I A ∈ Λ называется (допустимым) выражением, если∃Γ ,B ∈ Λ
[Γ ` A : B ∨ Γ ` B : A
].
12
![Page 13: Системы типизации лямбда-исчисления, весна 2011: Чистые системы типов](https://reader033.fdocument.pub/reader033/viewer/2022051708/58a053e21a28ab5c1c8b4a71/html5/thumbnails/13.jpg)
Свойства PTS (2)
Пусть Γ — предконтекст, а A — предвыражение.
I A называется Γ-термом, если∃B ∈ Λ
[Γ ` A : B ∨ Γ ` B : A
].
I A называется Γ-типом (сорта s), если∃s ∈ S Γ ` A : s.
I A называется Γ-элементом (типа B сорта s), если∃B ∈ Λ ∃s ∈ S Γ ` A : B : s.
13
![Page 14: Системы типизации лямбда-исчисления, весна 2011: Чистые системы типов](https://reader033.fdocument.pub/reader033/viewer/2022051708/58a053e21a28ab5c1c8b4a71/html5/thumbnails/14.jpg)
Свойства PTS (3)
Лемма подстановки для PTSПусть
Γ , x :A,∆ `M : B
и
Γ ` N : A
тогда
Γ ,∆[x := N] `M[x := N] : B[x := N]
Лемма thinning для PTSПусть Γ и ∆ — допустимые контексты, причём Γ ⊆ ∆, тогда
Γ `M : A ⇒ ∆ `M : A
14
![Page 15: Системы типизации лямбда-исчисления, весна 2011: Чистые системы типов](https://reader033.fdocument.pub/reader033/viewer/2022051708/58a053e21a28ab5c1c8b4a71/html5/thumbnails/15.jpg)
Свойства PTS: Лемма генерации (1)
Для Γ ` P : Q по известной структуре выражения P
Λ := C | V | ΛΛ | λV :Λ.Λ | ΠV :Λ.Λ
представляет свойства Γ и Q.
Лемма генерации для PTS
Γ ` c : Q ⇒ ∃s ∈ S[Q =β s ∧ (c :s) ∈ A
]Γ ` x : Q ⇒ ∃s ∈ S ∃B =β Q[
Γ ` B : s ∧ (x :B) ∈ Γ ∧ x ≡ sx]
(продолжение далее...)15
![Page 16: Системы типизации лямбда-исчисления, весна 2011: Чистые системы типов](https://reader033.fdocument.pub/reader033/viewer/2022051708/58a053e21a28ab5c1c8b4a71/html5/thumbnails/16.jpg)
Свойства PTS: Лемма генерации (2)
Лемма генерации для PTS (продолжение)
Γ ` (Πx :A.B) : Q ⇒ ∃(s1, s2, s3) ∈ R[Γ ` A :s1 ∧ Γ , x :A ` B :s2 ∧ Q =β s3
]Γ ` (λx :A.M) : Q ⇒ ∃s ∈ S ∃B[
Γ ` (Πx :A.B) : s ∧ Γ , x :A `M :B ∧ Q =β Πx :A.B]
Γ ` (MN) : Q ⇒ ∃A,B[Γ `M : (Πx :A.B) : s ∧ Γ ` N :A ∧ Q =β B[x := N]
]16
![Page 17: Системы типизации лямбда-исчисления, весна 2011: Чистые системы типов](https://reader033.fdocument.pub/reader033/viewer/2022051708/58a053e21a28ab5c1c8b4a71/html5/thumbnails/17.jpg)
Следствия леммы генерации (1)
I
Γ `M : A ⇒ ∃s ∈ S[A ≡ s ∨ Γ ` A : s
]I
Γ `M : (Πx :B1.B2) ⇒ ∃s1, s2 ∈ S[Γ ` B1 : s1 ∧ Γ , x :B1 ` B2 :s2
]
I Если A является Γ-термом, то A — это сорт, или Γ-тип илиΓ-элемент.
I Если A допустим и B — его подтерм, то B допустим.17
![Page 18: Системы типизации лямбда-исчисления, весна 2011: Чистые системы типов](https://reader033.fdocument.pub/reader033/viewer/2022051708/58a053e21a28ab5c1c8b4a71/html5/thumbnails/18.jpg)
Следствия леммы генерации (2)
Классы сортов, Γ-типов и Γ-элементов могут пересекаться.
Например,
α :∗ ` (λx :α. x) : (α→α) : ∗α :∗ ` (α→α) : ∗ : �
Выражение α→α выступает в роли и Γ-типа или Γ-элемента.
Есть здесь ещё смешение ролей?
18
![Page 19: Системы типизации лямбда-исчисления, весна 2011: Чистые системы типов](https://reader033.fdocument.pub/reader033/viewer/2022051708/58a053e21a28ab5c1c8b4a71/html5/thumbnails/19.jpg)
Свойства PTS: редукция субъекта
Теорема о редукции субъекта для PTS
Γ `M : A ∧ M�βM′ ⇒ ∆ `M ′ : A
Следствия
I [Γ `M : B ∧ B�β B
′] ⇒ Γ `M : B ′
(в правиле преобразования ещё требуется B ′ : s!)
I Если A является Γ-термом и A�β A ′, то A ′ тоже являетсяΓ-термом.
19
![Page 20: Системы типизации лямбда-исчисления, весна 2011: Чистые системы типов](https://reader033.fdocument.pub/reader033/viewer/2022051708/58a053e21a28ab5c1c8b4a71/html5/thumbnails/20.jpg)
Свойства PTS: Лемма конденсации
Лемма конденсации для PTS (Condensing, Strengthening)
Γ , x :A, ∆ ` M : B ∧ x 6∈ FV(∆) ∪ FV(M) ∪ FV(B) ⇒ Γ ,∆ ` M : B
20
![Page 21: Системы типизации лямбда-исчисления, весна 2011: Чистые системы типов](https://reader033.fdocument.pub/reader033/viewer/2022051708/58a053e21a28ab5c1c8b4a71/html5/thumbnails/21.jpg)
Свойства PTS: Теорема единственности типа
Определение. PTS называется функциональной или еди-носортной (singly sorted), если
1. (c :s1), (c :s2) ∈ A ⇒ s1 ≡ s2;
2. (s1, s2, s3), (s1, s2, s4) ∈ R ⇒ s3 ≡ s4.
Все рассматриваемые нами ранее системы функциональны.
Теорема Для функциональной PTS
Γ `M : A ∧ Γ `M : A ′ ⇒ A ≡β A ′
21
![Page 22: Системы типизации лямбда-исчисления, весна 2011: Чистые системы типов](https://reader033.fdocument.pub/reader033/viewer/2022051708/58a053e21a28ab5c1c8b4a71/html5/thumbnails/22.jpg)
Степень терма на λ-кубе
Имеется полезная классификация предтермов, полезная дляанализа допустимых термов в системах λ-куба. Задаётся отоб-ражение ] : Λ→ {0, 1, 2, 3}:
](�) = 3
](∗) = 2
](�x) = 1
](∗x) = 0
](λx :A.B) = ](Πx :A.B) = ]B
](MN) = ]M
Для M ∈ Λ значение ](M) называют степенью M.
Утверждение. Для всех систем λ-куба
Γ `M : A ⇒ ](M) + 1 = ](A)
22
![Page 23: Системы типизации лямбда-исчисления, весна 2011: Чистые системы типов](https://reader033.fdocument.pub/reader033/viewer/2022051708/58a053e21a28ab5c1c8b4a71/html5/thumbnails/23.jpg)
Свойства PTS: нормализуемость.
Определение. PTS называется сильно нормализуемой,если все её допустимые термы сильно нормализуемы, то есть
Γ `M : A ⇒ SN(M) ∧ SN(A)
Утверждение. Все системы λ-куба сильно нормализуемы.
Теорема. Разрешимость TCP и TSP для нормализуе-мой PTS. Если PTS с конечным числом сортов сильно илислабо нормализуема, то TCP и TSP разрешимы.
23
![Page 24: Системы типизации лямбда-исчисления, весна 2011: Чистые системы типов](https://reader033.fdocument.pub/reader033/viewer/2022051708/58a053e21a28ab5c1c8b4a71/html5/thumbnails/24.jpg)
Населённость ⊥
Утверждение. Пусть λS — это PTS, расширяющая λ2. Тогда
`λSM : ⊥ ⇒ M не имеет NF
То есть ⊥ = Πα :∗.α может быть населён только термами, неимеющими нормальной формы. Отсюда следует, что еслисистема нормализуема, то ⊥ не населён.
24
![Page 25: Системы типизации лямбда-исчисления, весна 2011: Чистые системы типов](https://reader033.fdocument.pub/reader033/viewer/2022051708/58a053e21a28ab5c1c8b4a71/html5/thumbnails/25.jpg)
Проверка типов для λP
Одновременно задаются два алгоритма:
OK : PreContext→Bool
TY : PreContext→PreTerm→Term
OK Γ проверяет допустимость контекста ΓTY Γ M возвращает тип M в контексте Γ(и ⊥, если M — нетипизируемое предвыражение)
Теорема. Алгоритм TY корректен и полон:
∀Γ ,M TY Γ M = A ⇒ Γ `M : A∀Γ ,M,A Γ `M : A ⇒ TY Γ M =βη A
(полнота осмысленна, если имеется единственность типа)(из полноты следует, что алгоритм завершается на допусти-мых термах; хотим большего)
25
![Page 26: Системы типизации лямбда-исчисления, весна 2011: Чистые системы типов](https://reader033.fdocument.pub/reader033/viewer/2022051708/58a053e21a28ab5c1c8b4a71/html5/thumbnails/26.jpg)
Проверка типов для λP: алгоритм
OK 〈〉 = TRUE
OK (Γ , x :A) = if TY Γ A ∈ {∗,�} then OK Γ else FALSE
TY Γ x = if OK Γ ∧ x :A ∈ Γ then A else ⊥TY Γ ∗ = if OK Γ then � else ⊥TY Γ (MN) = if TY Γ M = C 6= ⊥ ∧ TY Γ N = D 6= ⊥
then if C�β Πx :A.B ∧ A =β Dthen B[x := N] else ⊥
else ⊥TY Γ (λx :A.M) = if TY (Γ , x :A) M = B 6= ⊥
then if TY Γ (Πx :A.B) ∈ {∗,�}then Πx :A.B else ⊥
else ⊥TY Γ (Πx :A.B) = if TY Γ A = ∗ ∧ TY (Γ , x :A) B = s
then s else ⊥26
![Page 27: Системы типизации лямбда-исчисления, весна 2011: Чистые системы типов](https://reader033.fdocument.pub/reader033/viewer/2022051708/58a053e21a28ab5c1c8b4a71/html5/thumbnails/27.jpg)
Проверка типов для λP: завершимость (1)
Рекурсивный вызов без уменьшения меры:
TY Γ (λx :A.M) = if TY (Γ , x :A) M = B 6= ⊥then if TY Γ (Πx :A.B) ∈ {∗,�}
then Πx :A.B else ⊥else ⊥
Но в λP можно заменить
TY Γ (Πx :A.B) ∈ {∗,�}
на
TY Γ A = ∗
(проверьте это!)
27
![Page 28: Системы типизации лямбда-исчисления, весна 2011: Чистые системы типов](https://reader033.fdocument.pub/reader033/viewer/2022051708/58a053e21a28ab5c1c8b4a71/html5/thumbnails/28.jpg)
Проверка типов для λP: завершимость (2)
β-редукция и β-эквивалентность неразрешимы для предтермов!
TY Γ (MN) = if TY Γ M = C 6= ⊥ ∧ TY Γ N = D 6= ⊥then if C�β Πx :A.B ∧ A =β D
then B[x := N] else ⊥else ⊥
К счастью, они вызываются над гарантированно допусти-мыми термами, и известно, что λP является SN и CR.
Теорема. Aлгоритмы TY Γ M и OK Γ завершаются для любогопредтерма M и предконтекста Γ .
28
![Page 29: Системы типизации лямбда-исчисления, весна 2011: Чистые системы типов](https://reader033.fdocument.pub/reader033/viewer/2022051708/58a053e21a28ab5c1c8b4a71/html5/thumbnails/29.jpg)
Экстенсиональность и интенсиональность
Правило преобразования интенсионально и разрешимо:
Γ ` A :B Γ ` B ′ :s B =β B′
Γ ` A :B ′
Можно ввести в теорию экстенсиональность, добавив пра-вила
Γ `M,N : A→B Γ ` p : (Πx :A.Mx = Nx)
Γ ` (M = N) : A→B
Γ ` P :A Γ ` (A = B) :s
Γ ` P :B
TCP станет неразрешимым, поскольку сведётся к TIP.29
![Page 30: Системы типизации лямбда-исчисления, весна 2011: Чистые системы типов](https://reader033.fdocument.pub/reader033/viewer/2022051708/58a053e21a28ab5c1c8b4a71/html5/thumbnails/30.jpg)
Литература (1)
ITT2007Herman Geuvers, Introduction to Type TheoryTypes Summer School, August 2007, Bertinoro, Italy
http://typessummerschool07.cs.unibo.it/courses/geuvers-4.pdf
LCWT гл. 5.2, 5.3, 5.5Henk Barendregt, Lambda calculi with types,Handbook of logic in computer science (vol. 2), Oxford UniversityPress, 1993
30
![Page 31: Системы типизации лямбда-исчисления, весна 2011: Чистые системы типов](https://reader033.fdocument.pub/reader033/viewer/2022051708/58a053e21a28ab5c1c8b4a71/html5/thumbnails/31.jpg)
Литература (2)
ATTAPL гл. 2Benjamin C. Pierce, editor.Advanced Topics in Types and Programming Languages, MIT,2005
ITT гл. 6Herman Geuvers, Introduction to Type TheoryAlfa Lernet Summer school 2008, Uruguay
http://www.cs.ru.nl/H.Geuvers/Uruguay2008SummerSchool.html
31