SlideShare uma empresa Scribd logo
1 de 24
Baixar para ler offline
Системы типизации лямбда-исчисления

Лекция 12. Рекурсивные типы и типы-пересечения

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




                  22.05.2011

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




                                           1
Рекурсивные типы: предварительные замечания

Хотим в λ→ определить списки, деревья и пр.
Идея: предзаданный контекст
 Γ0 ≡ I :   , PAIR : σ → τ → σ × τ, INJL : σ → σ + τ, INJR : τ → σ + τ
Тогда конструкторы списка
                  NIL ≡ INJL I
                  NIL :     + ???   (= List)
              CONS e l ≡ INJR (PAIR e l)
              CONS e l : ??? + σ × List   (= List)
Имеем рекурсивное уравнение на типы:
                      List ≈   + σ × List
                      List ≡ µα. + σ × α
                                                                  2
Рекурсивные типы: система λµ

Задаётся отношение эквивалентности между типами ≈

Если M : σ и σ ≈ τ, то M : τ, и наоборот.

Например, рекурсивный тип σ0 ≈ σ0 → σ0
                x : σ0   x : σ0 → σ0
                x : σ0   x x : σ0
                         λx : σ0. x x : σ0 → σ0
                         λx : σ0. x x : σ0
                         (λx : σ0. x x) (λx : σ0. x x) : σ0
(подходит для типизации любого терма M ∈ Λ)

Оператор µ для конструирования: σ0 ≡ µα. α → α
                                                              3
Cистема λµ: формальности



              Термы:      Λ ::= V | Λ Λ | λV. Λ
               Типы:      T ::= V | T → T | µV. T
Для σ ∈ T определяют дерево типа T (σ):
                              T (α) = α
                         T (σ → τ) =            →

                                       T (σ)         T (τ)
                           T (µα. α) = ⊥
          T (µα. µβ1. . . . µβn. α) = ⊥
                           T (µα. σ) = T (σ[α := µα. σ])

         Эквивалентность:           σ ≈ τ ⇔ T (σ) = T (τ)

                                                             4
Cистема λµ: присваивание типов




                      (x : σ) ∈ Γ
(начальное правило)
                       Γ x:σ
                      Γ   M:σ→τ       Γ   N:σ
(удаление →)
                            Γ (M N) : τ

                       Γ, x:σ M:τ
(введение →)
                      Γ (λx. M) : σ → τ

                      Γ   M:σ    σ≈τ
(≈-правило)
                           Γ M:τ



                                                5
Cистема λµ: пример



Для τ ≡ µα. α → γ имеем по правилу T (µα. σ) = T (σ[α := µα. σ])
дерево

         T (τ) =           →       =                 →

                   T (τ)       γ                 →       γ

                                             →       γ

                                       ...       γ
Эквивалентность τ ≈ τ → γ следует по определению из равен-
ства деревьев.


                                                             6
Cистема λµ: свойства подстановки


Утверждение. Для любых σ выполняется:

                         µα. σ ≈ σ[α := µα. σ]
Док-во: Для σ = µβ1. . . . µβn. α следует из

                      T (µα. σ) = T (σ[α := µα. σ])
Если же σ ≡ µβ1. . . . µβn. α, то так и так ⊥.

Примеры:

        µα. α → γ ≈ (µα. α → γ) → γ ≈ ((µα. α → γ) → γ) → γ ≈ . . .
        µα. α → α ≈ (µα. α → α) → (µα. α → α) ≈ . . .

                                                                  7
Cистема λµ: пример с ⊥




Для σ ≡ (µα. α → γ) → µδ. µβ. β имеем дерево

         T (σ) =           →       =                 →

                   T (τ)       ⊥                 →       ⊥

                                             →       γ

                                       ...       γ
Здесь τ ≡ µα. α → γ и использовалось правило T (µα. α) = ⊥.



                                                             8
Cистема λµ: типизируем Y-комбинатор


Рассмотрим произвольный σ.
Пусть τ ≡ µα. α → σ, тогда τ ≈ τ → σ и

              Y ≡ λf. (λx. f (x x))(λx. f (x x)) : (σ → σ) → σ

       x:τ                x:τ→σ
       x:τ                xx : σ
       f : σ → σ, x : τ   f (x x) : σ
       f : σ→σ            λx. f (x x) : τ → σ
       f : σ→σ            λx. f (x x) : τ
       f : σ→σ            (λx. f (x x))(λx. f (x x)) : σ
                          λf. (λx. f (x x))(λx. f (x x)) : (σ → σ) → σ


Докажите, что в λµ верно Ω ≡ (λx. x x)(λx. x x) : σ
                                                                         9
Cистема λµ: редукция субъекта и SN




Теорема о редукции субъекта
Пусть M β N. Тогда

                Γ   λµ M : σ ⇒ Γ   λµ N : σ


Поскольку в системе типизируемы все термы SN не имеет
места.




                                                10
Cистема λµ: проблемы разрешимости




ЗПТ M : σ?
Разрешима. (Следует из разрешимости T (σ) = T (τ))

ЗСТ M : ?
Тривиально разрешима: каждый терм имеет тип.

ЗОТ ? : σ
Тривиально разрешима: все типы населены.



                                                     11
Типы-пересечения



Идея: разрешить терму иметь два типа σ и τ одновременно:

                              x:σ∩τ


Это порождает специальный (ad hoc) полиморфизм, в
отличие от параметрического полиморфизма λ2.

На множестве типов задают предпорядок:
Если M : σ и σ τ, то M : τ.

Например, x : σ ∩ τ и σ ∩ τ   σ, откуда x : σ.

                                                   12
Система λ∩: формальности



            Типы:     T ::=     | V | T→T | T ∩ T
Определение отношения         является подтипом
             (refl)   σ σ
           (trans)    σ τ, τ ρ ⇒ σ ρ
             (incl)   σ∩τ σ             σ∩τ τ
              (glb)   σ τ, σ τ ⇒ σ τ ∩ τ
                ( )   σ
             ( →)            →
              (→ ∩)   (σ → τ) ∩ (σ → τ ) σ → τ ∩ τ
                (→)   σ    σ, τ τ ⇒ σ → τ σ → τ
Можно ввести эквивалентность: σ ∼ τ ⇔ σ      τ∧τ     σ
                                                         13
Система λ∩: свойства




Поскольку        →    и σ    , то

                             ∼   →
то есть   выше       иерархия не поднимается.

Покажите, что

                 (σ → τ) ∩ (σ → τ)   σ ∩ σ →τ




                                                14
Cистема λ∩: присваивание типов


             ...                      ...

                                 Γ M:σ ∩ τ
             (удаление ∩)
                             Γ   M:σ Γ M:τ
                             Γ   M:σ Γ M:τ
             (введение ∩)
                                 Γ M:σ ∩ τ

             (введение   )
                                  Γ   M:
                             Γ   M:σ    σ   τ
             ( -правило)
                                  Γ M:τ


Начальное правило, введение и удаление → опущены.
                                                    15
Cистема λ∩: примеры


Для самоприменения λx. x x имеем
            x : (σ → τ) ∩ σ   x:σ→τ
            x : (σ → τ) ∩ σ   x:σ
            x : (σ → τ) ∩ σ   xx : τ
                              λx. x x : (σ → τ) ∩ σ → τ


Очевидно, что
                              Ω:


Утверждение. Терм M не имеет заголовочной NF тогда и
только тогда, когда является единственным типом для M.

                                                          16
Cистема λ∩: конверсия субъекта



Теорема о редукции субъекта
Пусть M β N. Тогда

               Γ   λ∩ M : σ ⇒ Γ   λ∩ N : σ


Более того для λ∩, верна и
Теорема о конверсии субъекта
Пусть M=βN. Тогда

               Γ   λ∩ M : σ ⇒ Γ   λ∩ N : σ



                                             17
Cистема λ∩: экспансия субъекта


Пусть P ≡ . . . x . . . x . . . x . . . и

                    P[x := Q] : τ           ...Q...Q...Q... : τ
Каждое вхождение Q может требовать своего типа σ1, σ2, σ3
Но мы можем приписать λx. P тип σ1 ∩ σ2 ∩ σ3 → τ
То есть β-экспансия (λx. P) Q тоже будет иметь тип τ.

Если же вхождений x в P нет,
то мы можем приписать λx. P тип → τ
(пустое пересечение); но по-прежнему

                                       (λx. P) Q : τ

                                                                  18
Cистема λ∩: экспансия субъекта (пример)

Хотя S K        β K∗ , но       λ→ S K : (σ → τ) → σ → σ, а K∗ : τ → σ → σ


В λ∩ ситуацию можно исправить:                       λ∩ S K : τ → σ → σ


 Потеря         типа в λ→ в редукции λg z. (λy. z) (g z) →β λg z. z

Сравним вывод в λ→ и λ∩:
[y : τ]1 [z : σ]2     [z : σ]2 [g : σ → τ]3       [y : ]1 [z : σ]2 [g : τ]3
                  1                                                         1
λy. z : τ → σ                 gz : τ                  λy. z : → σ             gz :
              (λy. z) (g z) : σ                            (λy. z) (g z) : σ
                                            2                                       2
        λz. (λy. z) (g z) : σ → σ                      λz. (λy. z) (g z) : σ → σ
                                              3                                       3
λg z. (λy. z) (g z) : (σ → τ) → σ → σ               λg z. (λy. z) (g z) : τ → σ → σ

                                                                                 19
Cистема λ∩: SN




Поскольку в системе λ∩ типизируемы все термы SN не имеет
места.

Однако для системы λ∩− (λ∩ без типовой константы   ) верна
Теорема [van Bakel, Krivine]

M может быть типизирован в λ∩− ⇔ M сильно нормализуем




                                                     20
Cистема λ∩: проблемы разрешимости

ЗПТ M : σ?
Неразрешима. λ∩ I : α → α, несложно показать, что   λ∩ K :
α → α. То есть множество

                   {M |   λ∩ M : α → α }
нетривиально и замкнуто относительно =β. Тогда оно нере-
курсивно (теорема Скотта).

ЗСТ M : ?
Тривиально разрешима: каждый терм имеет тип ( ).
(Для λ∩− неразрешима, из-за эквивалентности SN)

ЗОТ ? : σ
Неразрешима. Доказали в конце 1990-х.
                                                    21
Домашнее задание




Постройте дерево типа для
   τ ≡ µα. α → α
   τ ≡ µα. α → α → α
   τ ≡ µα. α → γ → α
   τ ≡ µα. α → (µβ. β → γ)

Докажите, что для Ω ≡ (λx. x x)(λx. x x) и произвольного σ вы-
полняется λµ Ω : σ



                                                         22
Литература (1)



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

TAPL гл. 20,21
Benjamin C. Pierce, Types and Programming Languages, MIT
Press, 2002

http://www.cis.upenn.edu/~bcpierce/tapl


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




ATTAPL гл. 2
Benjamin C. Pierce, editor.
Advanced Topics in Types and Programming Languages, MIT,
2005




                                                   24

Mais conteúdo relacionado

Mais procurados

Исследование производной
Исследование производнойИсследование производной
Исследование производнойagafonovalv
 
Дмитрий Кашицын, Вывод типов в динамических и не очень языках II
Дмитрий Кашицын, Вывод типов в динамических и не очень языках IIДмитрий Кашицын, Вывод типов в динамических и не очень языках II
Дмитрий Кашицын, Вывод типов в динамических и не очень языках IIPlatonov Sergey
 
20110306 systems of_typed_lambda_calculi_moskvin_lecture03
20110306 systems of_typed_lambda_calculi_moskvin_lecture0320110306 systems of_typed_lambda_calculi_moskvin_lecture03
20110306 systems of_typed_lambda_calculi_moskvin_lecture03Computer Science Club
 
20110224 systems of_typed_lambda_calculi_moskvin_lecture01
20110224 systems of_typed_lambda_calculi_moskvin_lecture0120110224 systems of_typed_lambda_calculi_moskvin_lecture01
20110224 systems of_typed_lambda_calculi_moskvin_lecture01Computer Science Club
 
интерполяционный многочлен лагранжа
интерполяционный многочлен лагранжаинтерполяционный многочлен лагранжа
интерполяционный многочлен лагранжаVladimir Kukharenko
 
К.В. Воронцов "Регрессивный анализ и метод главных компонент"
К.В. Воронцов "Регрессивный анализ и метод главных компонент"К.В. Воронцов "Регрессивный анализ и метод главных компонент"
К.В. Воронцов "Регрессивный анализ и метод главных компонент"Yandex
 
Proizvodnaya funkcii
Proizvodnaya funkciiProizvodnaya funkcii
Proizvodnaya funkciiDimon4
 
Математическое дополнение
Математическое дополнениеМатематическое дополнение
Математическое дополнениеBigVilly
 
Predel funk
Predel funkPredel funk
Predel funkAlex_Tam
 
Многочлены наилучших среднеквадратичных приближений
Многочлены наилучших среднеквадратичных приближенийМногочлены наилучших среднеквадратичных приближений
Многочлены наилучших среднеквадратичных приближенийTheoretical mechanics department
 

Mais procurados (20)

Исследование производной
Исследование производнойИсследование производной
Исследование производной
 
Pr i-7
Pr i-7Pr i-7
Pr i-7
 
Дмитрий Кашицын, Вывод типов в динамических и не очень языках II
Дмитрий Кашицын, Вывод типов в динамических и не очень языках IIДмитрий Кашицын, Вывод типов в динамических и не очень языках II
Дмитрий Кашицын, Вывод типов в динамических и не очень языках II
 
Pr i-3
Pr i-3Pr i-3
Pr i-3
 
Pr i-6
Pr i-6Pr i-6
Pr i-6
 
Pr i-3
Pr i-3Pr i-3
Pr i-3
 
Pr i-7
Pr i-7Pr i-7
Pr i-7
 
20110306 systems of_typed_lambda_calculi_moskvin_lecture03
20110306 systems of_typed_lambda_calculi_moskvin_lecture0320110306 systems of_typed_lambda_calculi_moskvin_lecture03
20110306 systems of_typed_lambda_calculi_moskvin_lecture03
 
Integral1
Integral1Integral1
Integral1
 
20110224 systems of_typed_lambda_calculi_moskvin_lecture01
20110224 systems of_typed_lambda_calculi_moskvin_lecture0120110224 systems of_typed_lambda_calculi_moskvin_lecture01
20110224 systems of_typed_lambda_calculi_moskvin_lecture01
 
интерполяционный многочлен лагранжа
интерполяционный многочлен лагранжаинтерполяционный многочлен лагранжа
интерполяционный многочлен лагранжа
 
К.В. Воронцов "Регрессивный анализ и метод главных компонент"
К.В. Воронцов "Регрессивный анализ и метод главных компонент"К.В. Воронцов "Регрессивный анализ и метод главных компонент"
К.В. Воронцов "Регрессивный анализ и метод главных компонент"
 
Pr i-8
Pr i-8Pr i-8
Pr i-8
 
Proizvodnaya funkcii
Proizvodnaya funkciiProizvodnaya funkcii
Proizvodnaya funkcii
 
fiz-mat
fiz-matfiz-mat
fiz-mat
 
Метод конечных разностей
Метод конечных разностейМетод конечных разностей
Метод конечных разностей
 
Математическое дополнение
Математическое дополнениеМатематическое дополнение
Математическое дополнение
 
10474
1047410474
10474
 
Predel funk
Predel funkPredel funk
Predel funk
 
Многочлены наилучших среднеквадратичных приближений
Многочлены наилучших среднеквадратичных приближенийМногочлены наилучших среднеквадратичных приближений
Многочлены наилучших среднеквадратичных приближений
 

Destaque

Pregunta esencial
Pregunta esencial Pregunta esencial
Pregunta esencial dieguitoflow
 
Apresentação qualificação gabrielmassote_v2
Apresentação qualificação gabrielmassote_v2Apresentação qualificação gabrielmassote_v2
Apresentação qualificação gabrielmassote_v2Gabriel Massote
 
Сергей Прохоров - Нижний Новгород руководитель проектов "Электронное правител...
Сергей Прохоров - Нижний Новгород руководитель проектов "Электронное правител...Сергей Прохоров - Нижний Новгород руководитель проектов "Электронное правител...
Сергей Прохоров - Нижний Новгород руководитель проектов "Электронное правител...Бизнес-инкубатор
 
Perifericos
PerifericosPerifericos
PerifericosUSCO
 
The Spectre of the Spectra
The Spectre of the SpectraThe Spectre of the Spectra
The Spectre of the SpectraDavid Gleich
 
Boeing 314b-camerafan
Boeing 314b-camerafanBoeing 314b-camerafan
Boeing 314b-camerafanGeorge Martin
 

Destaque (7)

Pregunta esencial
Pregunta esencial Pregunta esencial
Pregunta esencial
 
Apresentação qualificação gabrielmassote_v2
Apresentação qualificação gabrielmassote_v2Apresentação qualificação gabrielmassote_v2
Apresentação qualificação gabrielmassote_v2
 
Сергей Прохоров - Нижний Новгород руководитель проектов "Электронное правител...
Сергей Прохоров - Нижний Новгород руководитель проектов "Электронное правител...Сергей Прохоров - Нижний Новгород руководитель проектов "Электронное правител...
Сергей Прохоров - Нижний Новгород руководитель проектов "Электронное правител...
 
Perifericos
PerifericosPerifericos
Perifericos
 
The Spectre of the Spectra
The Spectre of the SpectraThe Spectre of the Spectra
The Spectre of the Spectra
 
Herramientas web 2.0
Herramientas web 2.0Herramientas web 2.0
Herramientas web 2.0
 
Boeing 314b-camerafan
Boeing 314b-camerafanBoeing 314b-camerafan
Boeing 314b-camerafan
 

Semelhante a 20110522 systems of typed lambda_calculi_moskvin_lecture12

20110327 systems of_typed_lambda_calculi_moskvin_lecture07
20110327 systems of_typed_lambda_calculi_moskvin_lecture0720110327 systems of_typed_lambda_calculi_moskvin_lecture07
20110327 systems of_typed_lambda_calculi_moskvin_lecture07Computer Science Club
 
Лекция №16. Поиск подстрок. Предмет "Структуры и алгоритмы обработки данных"
Лекция №16. Поиск подстрок. Предмет "Структуры и алгоритмы обработки данных"Лекция №16. Поиск подстрок. Предмет "Структуры и алгоритмы обработки данных"
Лекция №16. Поиск подстрок. Предмет "Структуры и алгоритмы обработки данных"Nikolay Grebenshikov
 
20110522 systems of typed lambda_calculi_moskvin_lecture11
20110522 systems of typed lambda_calculi_moskvin_lecture1120110522 systems of typed lambda_calculi_moskvin_lecture11
20110522 systems of typed lambda_calculi_moskvin_lecture11Computer Science Club
 
20110224 systems of_typed_lambda_calculi_moskvin_lecture02
20110224 systems of_typed_lambda_calculi_moskvin_lecture0220110224 systems of_typed_lambda_calculi_moskvin_lecture02
20110224 systems of_typed_lambda_calculi_moskvin_lecture02Computer Science Club
 
13.1. курс лекций афу
13.1. курс лекций афу13.1. курс лекций афу
13.1. курс лекций афуGKarina707
 
20120309 formal semantics shilov_lecture06
20120309 formal semantics shilov_lecture0620120309 formal semantics shilov_lecture06
20120309 formal semantics shilov_lecture06Computer Science Club
 
Гиперграфы. Покрытия. Жадный алгоритм.
Гиперграфы. Покрытия. Жадный алгоритм.Гиперграфы. Покрытия. Жадный алгоритм.
Гиперграфы. Покрытия. Жадный алгоритм.Alex Dainiak
 
20110515 systems of typed lambda_calculi_moskvin_lecture10
20110515 systems of typed lambda_calculi_moskvin_lecture1020110515 systems of typed lambda_calculi_moskvin_lecture10
20110515 systems of typed lambda_calculi_moskvin_lecture10Computer Science Club
 
пугач му по матлогике 2015
пугач му по матлогике 2015пугач му по матлогике 2015
пугач му по матлогике 2015LIPugach
 
Определенные интегралы
Определенные интегралыОпределенные интегралы
Определенные интегралыdaryaartuh
 
Определенные интеграллы
Определенные интеграллыОпределенные интеграллы
Определенные интеграллыdaryaartuh
 
Основы теории графов 11: гамильтоновы циклы
Основы теории графов 11: гамильтоновы циклыОсновы теории графов 11: гамильтоновы циклы
Основы теории графов 11: гамильтоновы циклыAlex Dainiak
 
решение тригонометрических уравнений
решение тригонометрических уравненийрешение тригонометрических уравнений
решение тригонометрических уравненийЛюдмила Щецова
 
1.4 Точечные оценки и их свойства
1.4 Точечные оценки и их свойства1.4 Точечные оценки и их свойства
1.4 Точечные оценки и их свойстваDEVTYPE
 
Евгений Котельников. Зависимые типы в Haskell
Евгений Котельников. Зависимые типы в HaskellЕвгений Котельников. Зависимые типы в Haskell
Евгений Котельников. Зависимые типы в HaskellFProg
 
Лекция 16 Вычислительная геометрия
Лекция 16 Вычислительная геометрияЛекция 16 Вычислительная геометрия
Лекция 16 Вычислительная геометрияsimple_people
 

Semelhante a 20110522 systems of typed lambda_calculi_moskvin_lecture12 (19)

20110327 systems of_typed_lambda_calculi_moskvin_lecture07
20110327 systems of_typed_lambda_calculi_moskvin_lecture0720110327 systems of_typed_lambda_calculi_moskvin_lecture07
20110327 systems of_typed_lambda_calculi_moskvin_lecture07
 
Лекция №16. Поиск подстрок. Предмет "Структуры и алгоритмы обработки данных"
Лекция №16. Поиск подстрок. Предмет "Структуры и алгоритмы обработки данных"Лекция №16. Поиск подстрок. Предмет "Структуры и алгоритмы обработки данных"
Лекция №16. Поиск подстрок. Предмет "Структуры и алгоритмы обработки данных"
 
20110522 systems of typed lambda_calculi_moskvin_lecture11
20110522 systems of typed lambda_calculi_moskvin_lecture1120110522 systems of typed lambda_calculi_moskvin_lecture11
20110522 systems of typed lambda_calculi_moskvin_lecture11
 
20110224 systems of_typed_lambda_calculi_moskvin_lecture02
20110224 systems of_typed_lambda_calculi_moskvin_lecture0220110224 systems of_typed_lambda_calculi_moskvin_lecture02
20110224 systems of_typed_lambda_calculi_moskvin_lecture02
 
13.1. курс лекций афу
13.1. курс лекций афу13.1. курс лекций афу
13.1. курс лекций афу
 
20120309 formal semantics shilov_lecture06
20120309 formal semantics shilov_lecture0620120309 formal semantics shilov_lecture06
20120309 formal semantics shilov_lecture06
 
Гиперграфы. Покрытия. Жадный алгоритм.
Гиперграфы. Покрытия. Жадный алгоритм.Гиперграфы. Покрытия. Жадный алгоритм.
Гиперграфы. Покрытия. Жадный алгоритм.
 
20110515 systems of typed lambda_calculi_moskvin_lecture10
20110515 systems of typed lambda_calculi_moskvin_lecture1020110515 systems of typed lambda_calculi_moskvin_lecture10
20110515 systems of typed lambda_calculi_moskvin_lecture10
 
109130.ppt
109130.ppt109130.ppt
109130.ppt
 
пугач му по матлогике 2015
пугач му по матлогике 2015пугач му по матлогике 2015
пугач му по матлогике 2015
 
Определенные интегралы
Определенные интегралыОпределенные интегралы
Определенные интегралы
 
Определенные интеграллы
Определенные интеграллыОпределенные интеграллы
Определенные интеграллы
 
Основы теории графов 11: гамильтоновы циклы
Основы теории графов 11: гамильтоновы циклыОсновы теории графов 11: гамильтоновы циклы
Основы теории графов 11: гамильтоновы циклы
 
решение тригонометрических уравнений
решение тригонометрических уравненийрешение тригонометрических уравнений
решение тригонометрических уравнений
 
1.4 Точечные оценки и их свойства
1.4 Точечные оценки и их свойства1.4 Точечные оценки и их свойства
1.4 Точечные оценки и их свойства
 
20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich
 
Евгений Котельников. Зависимые типы в Haskell
Евгений Котельников. Зависимые типы в HaskellЕвгений Котельников. Зависимые типы в Haskell
Евгений Котельников. Зависимые типы в Haskell
 
Лекция 16 Вычислительная геометрия
Лекция 16 Вычислительная геометрияЛекция 16 Вычислительная геометрия
Лекция 16 Вычислительная геометрия
 
Matanal 31oct
Matanal 31octMatanal 31oct
Matanal 31oct
 

Mais de Computer Science Club

20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugsComputer Science Club
 
20140531 serebryany lecture02_find_scary_cpp_bugs
20140531 serebryany lecture02_find_scary_cpp_bugs20140531 serebryany lecture02_find_scary_cpp_bugs
20140531 serebryany lecture02_find_scary_cpp_bugsComputer Science Club
 
20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugsComputer Science Club
 
20140511 parallel programming_kalishenko_lecture12
20140511 parallel programming_kalishenko_lecture1220140511 parallel programming_kalishenko_lecture12
20140511 parallel programming_kalishenko_lecture12Computer Science Club
 
20140427 parallel programming_zlobin_lecture11
20140427 parallel programming_zlobin_lecture1120140427 parallel programming_zlobin_lecture11
20140427 parallel programming_zlobin_lecture11Computer Science Club
 
20140420 parallel programming_kalishenko_lecture10
20140420 parallel programming_kalishenko_lecture1020140420 parallel programming_kalishenko_lecture10
20140420 parallel programming_kalishenko_lecture10Computer Science Club
 
20140413 parallel programming_kalishenko_lecture09
20140413 parallel programming_kalishenko_lecture0920140413 parallel programming_kalishenko_lecture09
20140413 parallel programming_kalishenko_lecture09Computer Science Club
 
20140329 graph drawing_dainiak_lecture02
20140329 graph drawing_dainiak_lecture0220140329 graph drawing_dainiak_lecture02
20140329 graph drawing_dainiak_lecture02Computer Science Club
 
20140329 graph drawing_dainiak_lecture01
20140329 graph drawing_dainiak_lecture0120140329 graph drawing_dainiak_lecture01
20140329 graph drawing_dainiak_lecture01Computer Science Club
 
20140310 parallel programming_kalishenko_lecture03-04
20140310 parallel programming_kalishenko_lecture03-0420140310 parallel programming_kalishenko_lecture03-04
20140310 parallel programming_kalishenko_lecture03-04Computer Science Club
 
20140216 parallel programming_kalishenko_lecture01
20140216 parallel programming_kalishenko_lecture0120140216 parallel programming_kalishenko_lecture01
20140216 parallel programming_kalishenko_lecture01Computer Science Club
 

Mais de Computer Science Club (20)

20141223 kuznetsov distributed
20141223 kuznetsov distributed20141223 kuznetsov distributed
20141223 kuznetsov distributed
 
Computer Vision
Computer VisionComputer Vision
Computer Vision
 
20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs
 
20140531 serebryany lecture02_find_scary_cpp_bugs
20140531 serebryany lecture02_find_scary_cpp_bugs20140531 serebryany lecture02_find_scary_cpp_bugs
20140531 serebryany lecture02_find_scary_cpp_bugs
 
20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs
 
20140511 parallel programming_kalishenko_lecture12
20140511 parallel programming_kalishenko_lecture1220140511 parallel programming_kalishenko_lecture12
20140511 parallel programming_kalishenko_lecture12
 
20140427 parallel programming_zlobin_lecture11
20140427 parallel programming_zlobin_lecture1120140427 parallel programming_zlobin_lecture11
20140427 parallel programming_zlobin_lecture11
 
20140420 parallel programming_kalishenko_lecture10
20140420 parallel programming_kalishenko_lecture1020140420 parallel programming_kalishenko_lecture10
20140420 parallel programming_kalishenko_lecture10
 
20140413 parallel programming_kalishenko_lecture09
20140413 parallel programming_kalishenko_lecture0920140413 parallel programming_kalishenko_lecture09
20140413 parallel programming_kalishenko_lecture09
 
20140329 graph drawing_dainiak_lecture02
20140329 graph drawing_dainiak_lecture0220140329 graph drawing_dainiak_lecture02
20140329 graph drawing_dainiak_lecture02
 
20140329 graph drawing_dainiak_lecture01
20140329 graph drawing_dainiak_lecture0120140329 graph drawing_dainiak_lecture01
20140329 graph drawing_dainiak_lecture01
 
20140310 parallel programming_kalishenko_lecture03-04
20140310 parallel programming_kalishenko_lecture03-0420140310 parallel programming_kalishenko_lecture03-04
20140310 parallel programming_kalishenko_lecture03-04
 
20140223-SuffixTrees-lecture01-03
20140223-SuffixTrees-lecture01-0320140223-SuffixTrees-lecture01-03
20140223-SuffixTrees-lecture01-03
 
20140216 parallel programming_kalishenko_lecture01
20140216 parallel programming_kalishenko_lecture0120140216 parallel programming_kalishenko_lecture01
20140216 parallel programming_kalishenko_lecture01
 
20131106 h10 lecture6_matiyasevich
20131106 h10 lecture6_matiyasevich20131106 h10 lecture6_matiyasevich
20131106 h10 lecture6_matiyasevich
 
20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich
 
20131013 h10 lecture4_matiyasevich
20131013 h10 lecture4_matiyasevich20131013 h10 lecture4_matiyasevich
20131013 h10 lecture4_matiyasevich
 
20131006 h10 lecture3_matiyasevich
20131006 h10 lecture3_matiyasevich20131006 h10 lecture3_matiyasevich
20131006 h10 lecture3_matiyasevich
 
20131006 h10 lecture3_matiyasevich
20131006 h10 lecture3_matiyasevich20131006 h10 lecture3_matiyasevich
20131006 h10 lecture3_matiyasevich
 
20131006 h10 lecture2_matiyasevich
20131006 h10 lecture2_matiyasevich20131006 h10 lecture2_matiyasevich
20131006 h10 lecture2_matiyasevich
 

20110522 systems of typed lambda_calculi_moskvin_lecture12

  • 1. Системы типизации лямбда-исчисления Лекция 12. Рекурсивные типы и типы-пересечения Денис Москвин 22.05.2011 CS Club при ПОМИ РАН 1
  • 2. Рекурсивные типы: предварительные замечания Хотим в λ→ определить списки, деревья и пр. Идея: предзаданный контекст Γ0 ≡ I : , PAIR : σ → τ → σ × τ, INJL : σ → σ + τ, INJR : τ → σ + τ Тогда конструкторы списка NIL ≡ INJL I NIL : + ??? (= List) CONS e l ≡ INJR (PAIR e l) CONS e l : ??? + σ × List (= List) Имеем рекурсивное уравнение на типы: List ≈ + σ × List List ≡ µα. + σ × α 2
  • 3. Рекурсивные типы: система λµ Задаётся отношение эквивалентности между типами ≈ Если M : σ и σ ≈ τ, то M : τ, и наоборот. Например, рекурсивный тип σ0 ≈ σ0 → σ0 x : σ0 x : σ0 → σ0 x : σ0 x x : σ0 λx : σ0. x x : σ0 → σ0 λx : σ0. x x : σ0 (λx : σ0. x x) (λx : σ0. x x) : σ0 (подходит для типизации любого терма M ∈ Λ) Оператор µ для конструирования: σ0 ≡ µα. α → α 3
  • 4. Cистема λµ: формальности Термы: Λ ::= V | Λ Λ | λV. Λ Типы: T ::= V | T → T | µV. T Для σ ∈ T определяют дерево типа T (σ): T (α) = α T (σ → τ) = → T (σ) T (τ) T (µα. α) = ⊥ T (µα. µβ1. . . . µβn. α) = ⊥ T (µα. σ) = T (σ[α := µα. σ]) Эквивалентность: σ ≈ τ ⇔ T (σ) = T (τ) 4
  • 5. Cистема λµ: присваивание типов (x : σ) ∈ Γ (начальное правило) Γ x:σ Γ M:σ→τ Γ N:σ (удаление →) Γ (M N) : τ Γ, x:σ M:τ (введение →) Γ (λx. M) : σ → τ Γ M:σ σ≈τ (≈-правило) Γ M:τ 5
  • 6. Cистема λµ: пример Для τ ≡ µα. α → γ имеем по правилу T (µα. σ) = T (σ[α := µα. σ]) дерево T (τ) = → = → T (τ) γ → γ → γ ... γ Эквивалентность τ ≈ τ → γ следует по определению из равен- ства деревьев. 6
  • 7. Cистема λµ: свойства подстановки Утверждение. Для любых σ выполняется: µα. σ ≈ σ[α := µα. σ] Док-во: Для σ = µβ1. . . . µβn. α следует из T (µα. σ) = T (σ[α := µα. σ]) Если же σ ≡ µβ1. . . . µβn. α, то так и так ⊥. Примеры: µα. α → γ ≈ (µα. α → γ) → γ ≈ ((µα. α → γ) → γ) → γ ≈ . . . µα. α → α ≈ (µα. α → α) → (µα. α → α) ≈ . . . 7
  • 8. Cистема λµ: пример с ⊥ Для σ ≡ (µα. α → γ) → µδ. µβ. β имеем дерево T (σ) = → = → T (τ) ⊥ → ⊥ → γ ... γ Здесь τ ≡ µα. α → γ и использовалось правило T (µα. α) = ⊥. 8
  • 9. Cистема λµ: типизируем Y-комбинатор Рассмотрим произвольный σ. Пусть τ ≡ µα. α → σ, тогда τ ≈ τ → σ и Y ≡ λf. (λx. f (x x))(λx. f (x x)) : (σ → σ) → σ x:τ x:τ→σ x:τ xx : σ f : σ → σ, x : τ f (x x) : σ f : σ→σ λx. f (x x) : τ → σ f : σ→σ λx. f (x x) : τ f : σ→σ (λx. f (x x))(λx. f (x x)) : σ λf. (λx. f (x x))(λx. f (x x)) : (σ → σ) → σ Докажите, что в λµ верно Ω ≡ (λx. x x)(λx. x x) : σ 9
  • 10. Cистема λµ: редукция субъекта и SN Теорема о редукции субъекта Пусть M β N. Тогда Γ λµ M : σ ⇒ Γ λµ N : σ Поскольку в системе типизируемы все термы SN не имеет места. 10
  • 11. Cистема λµ: проблемы разрешимости ЗПТ M : σ? Разрешима. (Следует из разрешимости T (σ) = T (τ)) ЗСТ M : ? Тривиально разрешима: каждый терм имеет тип. ЗОТ ? : σ Тривиально разрешима: все типы населены. 11
  • 12. Типы-пересечения Идея: разрешить терму иметь два типа σ и τ одновременно: x:σ∩τ Это порождает специальный (ad hoc) полиморфизм, в отличие от параметрического полиморфизма λ2. На множестве типов задают предпорядок: Если M : σ и σ τ, то M : τ. Например, x : σ ∩ τ и σ ∩ τ σ, откуда x : σ. 12
  • 13. Система λ∩: формальности Типы: T ::= | V | T→T | T ∩ T Определение отношения является подтипом (refl) σ σ (trans) σ τ, τ ρ ⇒ σ ρ (incl) σ∩τ σ σ∩τ τ (glb) σ τ, σ τ ⇒ σ τ ∩ τ ( ) σ ( →) → (→ ∩) (σ → τ) ∩ (σ → τ ) σ → τ ∩ τ (→) σ σ, τ τ ⇒ σ → τ σ → τ Можно ввести эквивалентность: σ ∼ τ ⇔ σ τ∧τ σ 13
  • 14. Система λ∩: свойства Поскольку → и σ , то ∼ → то есть выше иерархия не поднимается. Покажите, что (σ → τ) ∩ (σ → τ) σ ∩ σ →τ 14
  • 15. Cистема λ∩: присваивание типов ... ... Γ M:σ ∩ τ (удаление ∩) Γ M:σ Γ M:τ Γ M:σ Γ M:τ (введение ∩) Γ M:σ ∩ τ (введение ) Γ M: Γ M:σ σ τ ( -правило) Γ M:τ Начальное правило, введение и удаление → опущены. 15
  • 16. Cистема λ∩: примеры Для самоприменения λx. x x имеем x : (σ → τ) ∩ σ x:σ→τ x : (σ → τ) ∩ σ x:σ x : (σ → τ) ∩ σ xx : τ λx. x x : (σ → τ) ∩ σ → τ Очевидно, что Ω: Утверждение. Терм M не имеет заголовочной NF тогда и только тогда, когда является единственным типом для M. 16
  • 17. Cистема λ∩: конверсия субъекта Теорема о редукции субъекта Пусть M β N. Тогда Γ λ∩ M : σ ⇒ Γ λ∩ N : σ Более того для λ∩, верна и Теорема о конверсии субъекта Пусть M=βN. Тогда Γ λ∩ M : σ ⇒ Γ λ∩ N : σ 17
  • 18. Cистема λ∩: экспансия субъекта Пусть P ≡ . . . x . . . x . . . x . . . и P[x := Q] : τ ...Q...Q...Q... : τ Каждое вхождение Q может требовать своего типа σ1, σ2, σ3 Но мы можем приписать λx. P тип σ1 ∩ σ2 ∩ σ3 → τ То есть β-экспансия (λx. P) Q тоже будет иметь тип τ. Если же вхождений x в P нет, то мы можем приписать λx. P тип → τ (пустое пересечение); но по-прежнему (λx. P) Q : τ 18
  • 19. Cистема λ∩: экспансия субъекта (пример) Хотя S K β K∗ , но λ→ S K : (σ → τ) → σ → σ, а K∗ : τ → σ → σ В λ∩ ситуацию можно исправить: λ∩ S K : τ → σ → σ Потеря типа в λ→ в редукции λg z. (λy. z) (g z) →β λg z. z Сравним вывод в λ→ и λ∩: [y : τ]1 [z : σ]2 [z : σ]2 [g : σ → τ]3 [y : ]1 [z : σ]2 [g : τ]3 1 1 λy. z : τ → σ gz : τ λy. z : → σ gz : (λy. z) (g z) : σ (λy. z) (g z) : σ 2 2 λz. (λy. z) (g z) : σ → σ λz. (λy. z) (g z) : σ → σ 3 3 λg z. (λy. z) (g z) : (σ → τ) → σ → σ λg z. (λy. z) (g z) : τ → σ → σ 19
  • 20. Cистема λ∩: SN Поскольку в системе λ∩ типизируемы все термы SN не имеет места. Однако для системы λ∩− (λ∩ без типовой константы ) верна Теорема [van Bakel, Krivine] M может быть типизирован в λ∩− ⇔ M сильно нормализуем 20
  • 21. Cистема λ∩: проблемы разрешимости ЗПТ M : σ? Неразрешима. λ∩ I : α → α, несложно показать, что λ∩ K : α → α. То есть множество {M | λ∩ M : α → α } нетривиально и замкнуто относительно =β. Тогда оно нере- курсивно (теорема Скотта). ЗСТ M : ? Тривиально разрешима: каждый терм имеет тип ( ). (Для λ∩− неразрешима, из-за эквивалентности SN) ЗОТ ? : σ Неразрешима. Доказали в конце 1990-х. 21
  • 22. Домашнее задание Постройте дерево типа для τ ≡ µα. α → α τ ≡ µα. α → α → α τ ≡ µα. α → γ → α τ ≡ µα. α → (µβ. β → γ) Докажите, что для Ω ≡ (λx. x x)(λx. x x) и произвольного σ вы- полняется λµ Ω : σ 22
  • 23. Литература (1) LCWT гл. 4 Henk Barendregt, Lambda calculi with types, Handbook of logic in computer science (vol. 2), Oxford University Press, 1993 TAPL гл. 20,21 Benjamin C. Pierce, Types and Programming Languages, MIT Press, 2002 http://www.cis.upenn.edu/~bcpierce/tapl 23
  • 24. Литература (2) ATTAPL гл. 2 Benjamin C. Pierce, editor. Advanced Topics in Types and Programming Languages, MIT, 2005 24