SlideShare ist ein Scribd-Unternehmen logo
1 von 26
Downloaden Sie, um offline zu lesen
Системы типизации лямбда-исчисления

Лекция 6. Просто типизированная система:
разрешимость, нормализация, расширения

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




               13.03.2011

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



                                           1
Проблемы разрешимости

Есть ли алгоритм, который позволяют решить задачу?

  M : σ? Задача проверки типа                ЗПТ
         Type Checking Problem               TCP

  M:?   Задача синтеза типа                   ЗСТ
        Type Synthesis (or Assgnment) Problem TSP, TAP

  ?:σ   Задача обитаемости типа              ЗОТ
        Type Inhabitation Problem            TIP

Для λ→ (и в стиле Чёрча, и в стиле Карри) все эти задачи
разрешимы.
ЗПТ выглядит проще ЗСТ, но обычно они эквивалентны:
проверка (M N) : σ? требует синтеза N : ?.
                                                   2
Проблемы разрешимости (2)

ЗПТ M : σ? и ЗСТ M : ?.
Для λ→ а ля Чёрч    тривиально: строим дерево вывода ти-
па.
Для λ→ а ля Карри: ЗСТ разрешается с помощью алгорит-
ма PT , ЗПТ    проверкой, что тип σ может быть получен
подстановкой в результат PT .

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

Например, M      M : (α → β) → β, поскольку (α → β) → β
не является тавтологией минимальной пропозициональной
логики.
                                                   3
Слабая и сильная нормализация
          (Weak and Strong Normalization)



  Терм называют слабо нормализуемым (WN), если име-
ется последовательность редукций, приводящих его к нор-
мальной форме.

  Терм называют сильно нормализуемым (SN), если лю-
бая последовательность редукций, приводит его к нормаль-
ной форме.

Пример. Терм K I K   SN, терм K I Ω   WN, терм Ω       не
нормализуем.

                                                   4
Слабая и сильная нормализация




  Систему типов называют слабо нормализуемой если все
её допустимые термы   WN.

  Систему типов называют сильно нормализуемой если
все её допустимые термы SN.

Обе системы λ→ (и Карри, и Чёрча) сильно нормализуемы.

Доказательство не является тривиальным.


                                                  5
Что мешает нормализации?

  Терм может увеличиваться.

                   (λf x. f (f x)) M →β λx. M (M x)
  Редекс может размножиться.

     (λf x. f (f x)) ((λy. M) N) →β λx. ((λy. M) N) (((λy. M) N) x)
  Могут появиться новые редексы.

           (λf x. f (f x)) (λy. M) →β λx. (λy. M) ((λy. M) x)


Идея для док-ва WN: выбирать стратегию, которая на каж-
дом шаге: или делает терм короче или не создаёт новых
редексов.
Увы, это не проходит.
                                                                      6
WN: лемма о появлении редексов

При β-редукции редексы могут образовываться только сле-
дующими способами:

  Создание.
              (λx. · · · (x N) · · · ) (λy. M) →β · · · ((λy. M) N) · · ·
  Размножение.
  (λx. · · · x · · · x · · · ) ((λy. M) N) →β · · · ((λy. M) N) · · · ((λy. M) N) · · ·
  Спрятанный редекс.
             (λx. (λy. M)) N P →β (λy. M[x := N]) P
  Редукция тождества.
                        (λx. x) (λy. M) N →β (λy. M) N

                                                                                   7
WN: меры типа

Длиной типа σ называют число len(σ) стрелок в нём.

Порядком типа σ называют число ord(σ)
  ord(α) = 0;
  ord(σ1 → . . . → σn → α) = max(ord(σ1), . . . ord(σn)) + 1.
Эквивалентное определение (докажите это):
  ord(α) = 0;
  ord(σ → τ) = max(ord(σ) + 1, ord(τ)).
Примеры.
                     ord(α → β) = 1;
                     ord(α → β → γ) = 1;
                     ord((α → β) → γ) = 2;
                     ord((γ → ε) → ((γ → ε) → ε) → ε) = ?
                                                                8
WN: мера терма

Высотой редекса назовём длину типа его левого аппли-
канда. Для M : τ, N : σ имеем

                 h ((λx : σ. M) N) = len(σ → τ)


Введём для терма M меру µ(M) = (hr(M), M), где
  hr(M)   максимальная высота редекса в M;
   M    число редексов такой высоты в M.

Зададим для меры лексикографический порядок:
           (h1, n1) < (h2, n2) | (h1 ≡ h2) = h1 < h2
           (h1, n1) < (h2, n2) | (h1 ≡ h2) = n1 < n2

                                                       9
WN: Теорема о слабой нормализации λ→



Теорема. Если M   типизируемый терм в λ→, то для него
имеется завершающаяся редукционная стратегия.

Доказательство. Выберем редекс максимальной высоты hr(M),
не содержащий другого такого же редекса.
Сократим этот редекс: M →β N. При этом не возникнет но-
вых редексов высоты hr(M).
Имеем µ(N) < µ(M). Поскольку этот процесс не может про-
должаться бесконечно, мы придём к терму без редексов.

Осталось проверить утверждение о новых редексах.

                                                   10
WN: используем лемму о появлении редексов

  Создание. Был редекс высоты h0 = h((σ → τ) → ρ), возник с
h(σ → τ) < h0.

        (λxσ→τ. · · · (x Nσ) · · · ) (λyσ. Mτ) →β · · · ((λyσ. Mτ) Nσ) · · ·
  Размножение. Был редекс высоты h0 = h(τ → ρ), по условию
h0 > h(σ → τ) (иначе бы сокращали не его).

(λxτ. · · · x · · · x · · · ) ((λyσ. Mτ) Nσ) →β · · · ((λyσ. Mτ) Nσ) · · · ((λyσ. Mτ) Nσ) · · ·
   Спрятанный редекс. h0 = h(σ → τ → ρ), возник с h(τ → ρ) < h0.

                (λxσ. (λyτ. Mρ)) Nσ Pτ →β (λyτ. M[x := N]) Pτ
   Редукция I. h0 = h((σ → τ) → σ → τ), возник с h(σ → τ) < h0.

                  (λxσ→τ. x) (λyσ. Mτ) Nσ →β (λyσ. Mτ) Nσ

                                                                                 11
Сильная нормализация для λ→-Карри

Введём SN    множество термов, для которых все последо-
вательности редукций завершаются нормальной формой.
Наша задача    показать, что

                   Γ   M : σ ⇒ M ∈ SN


Для этого каждого типа σ определим логический предикат
Pσ над термами этого типа.

Цель. Если для предиката Pσ выполняется
  Γ M : σ влечёт Pσ(M);
  Pσ(M) влечёт M ∈ SN,
то SN доказана.
                                                  12
SN: определение предиката Pσ

Определим логический предикат Pσ так

                Pα(M) := M ∈ SN
              Pσ→τ(M) := ∀N Pσ(N) ⇒ Pτ(M N)
Предикат для стрелки верен, если он верен для всех апплика-
ций соответствующего терма к любым термам, для которых
верен такой предикат.

Иногда пишут [[σ]] ≡ {M | Pσ(M)} и говорят про интерпретацию
типов.

Полезное замечание: (M N) ∈ SN ⇒ M ∈ SN ∧ N ∈ SN, но не
наоборот (приведите пример!).
                                                       13
Лемма: если Pσ, то SN

Лемма 1. Для каждого σ и k 0 верно:
 (1) Если (x M1 . . . Mk) : σ и ∀i Mi ∈ SN, то Pσ(x M1 . . . Mk);
 (2) Если Pσ(M), то M ∈ SN.

Доказательство. Индукция по структуре типа.
Для α (1) тривиально; (2) по определению Pσ.
Для σ → τ.
               →
               −
(1) Пусть (x M) : σ → τ и ∀i Mi ∈ SN; берём ∀N Pσ(N). По (IH2)
                                                   →
                                              τ (x − N). Отсюда
для σ имеем N ∈ SN. По (IH1) для τ имеем P         M
Pσ→τ(x M1 . . . Mk), поскольку N    произвольное.
(2) Берём ∀M Pσ→τ(M) и x : σ. По (IH1) Pσ(x), откуда Pτ(M x).
По (IH2) имеем M x ∈ SN, что даёт M ∈ SN, поскольку беско-
нечная редукция во втором даст её и в первом.
                                                              14
Сильная нормализация

Лемма 2. Для каждого σ для предиката Pσ верно:
                                       →                     →
                           σ(M[x := N] − ), то P σ((λx. M) N − ).
  Для любого N ∈ SN если P             L                     L
Доказательство. Индукция по структуре типа. Проведите
её.

Утверждение. Пусть дан контекст Γ = {x1 : τ1, . . . , xk : τk} и
термы N1, . . . , Nk, такие что ∀i Pτi (Ni). Тогда
            Γ   M : σ ⇒ Pσ(M[x1 := N1, . . . , xk := Nk])
Доказательство. Индукция по выводу Γ                M : σ, используя
лемму 2. Проведите её.

Следствие. λ→ является SN.
Доказательство. Положим Ni = xi.
                                                               15
Интерпретации λ→

Как можно интерпретировать стрелочный тип?

Теоретико-множественная модель

                       [[σ → τ]] := [[τ]][[σ]]
Она слишком    большая .

Наша модель

               [[α]] := SN
           [[σ → τ]] := {M | ∀N ∈ [[σ]] (M N) ∈ [[τ]]}
Иначе говоря

        [[σ → τ]] := {f : [[σ]] → [[τ]] | f λ − определима}
                                                              16
Расширения λ-исчисления


Можно расширить множество λ-термов константами:

             Λ(C) ::= C | V | Λ(C) Λ(C) | λV. Λ(C)


Например, C = {true, false}?

Но нам ещё нужно уметь их использовать. Поэтому лучше

               C = {true, false, not, and, iif}


И всё равно, помимо констант нужны дополнительные пра-
вила, описывающие работу с ними. Какие?
                                                     17
δ-редукция: пример

Всем известные:

                  not true     →δ   false
                 not false     →δ   true
             and true true     →δ   true
            and true false     →δ   false
            and false true     →δ   false
            and false false    →δ   false
                    iif true   →δ   TRU = λ t f. t
                   iif false   →δ   FLS = λ t f. f


 Внешние функции над константами порождают новые пра-
вила редукции.
                                                     18
δ-редукция: обобщение

Если на множестве термов X (обычно X ⊆ C) задана внеш-
няя функция f : Xk → Λ(C), то для неё добавляем δ-правило:
  выбираем константу δf;
  для M1, . . . , Mk ∈ X добавляем правило сокращения
                δf M1 . . . Mk →δ f(M1, . . . , Mk)
Для одной f       не одно правило, а целая схема правил.

Например, для Z = {. . . , −2, −1, 0, 1, 2, . . .} схемы правил:
                 plus m   n   →δ   m+n
                 mult m   n   →δ   m×n
                equal n   n   →δ   true
                equal m   n   →δ   false, если m = n


                                                                   19
Типизация расширенной системы

Расширим и типы константами T ::= B | V | T → T, под-
ходящими для типизации термовых констант, и аксиомами
типизации вида
                               c:σ
Например, B = {B, Z} с аксиомами
                  true : B, false : B,        n : Z,
                  not : B → B,     or : B → B → B,
                  iif : B → σ → σ → σ,
                  plus : Z → Z → Z,
                  mult : Z → Z → Z,
                  equal : Z → Z → B.


                                                       20
Вывод типа для расширенной системы


Типизируем λx y. mult y (plus x y).



                                  plus : Z → Z → Z     [x : Z]2
                                                                  [y : Z]1
  mult : Z → Z → Z    [y : Z]1         plus x : Z → Z
       mult y : Z → Z                        plus x y : Z
                     mult y (plus x y) : Z
                                                (1)
                λy. mult y (plus x y) : Z → Z
                                                      (2)
               λx y. mult y (plus x y) : Z → Z → Z

                                                                      21
Система λYδ



Типизация для системы с числами обладает свойством силь-
ной нормализации.

Это не всегда так.

Определим расширение с одной термовой константой C = {Y},
правилом редукции:
Y f →δ f (Y f)
и одной схемой аксиом типизации:
Y : (σ → σ) → σ.


                                                    22
Свойства системы λYδ




 Система λYδ обладает свойством Чёрча-Россера.

  Нормальная редукционная стратегия приводит терм си-
стемы λYδ к нормальной форме, если у него она есть.

 Система λYδ→ обладает свойством редукции субъекта.

 В системе λYδ представимы все вычислимые функции.



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




Докажите эквивалентность двух определений порядка типа.




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



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

ITT гл. 4.3, 4.4
Herman Geuvers, Introduction to Type Theory
Alfa Lernet Summer school 2008, Uruguay

http://www.cs.ru.nl/H.Geuvers/Uruguay2008SummerSchool.html


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




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

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

ОЯП гл. 8.3.2
Дж.Митчелл, Основания языков программирования,
М.-Ижевск, НИЦ РХД, 2010


                                                   26

Weitere ähnliche Inhalte

Was ist angesagt?

Лекция №16. Поиск подстрок. Предмет "Структуры и алгоритмы обработки данных"
Лекция №16. Поиск подстрок. Предмет "Структуры и алгоритмы обработки данных"Лекция №16. Поиск подстрок. Предмет "Структуры и алгоритмы обработки данных"
Лекция №16. Поиск подстрок. Предмет "Структуры и алгоритмы обработки данных"Nikolay Grebenshikov
 
Линейная алгебра - II
Линейная алгебра - IIЛинейная алгебра - II
Линейная алгебра - IIDEVTYPE
 
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
 
20081116 structuralcomplexitytheory lecture09-10
20081116 structuralcomplexitytheory lecture09-1020081116 structuralcomplexitytheory lecture09-10
20081116 structuralcomplexitytheory lecture09-10Computer Science Club
 
Скорость роста функций
Скорость роста функцийСкорость роста функций
Скорость роста функцийDEVTYPE
 
20110224 systems of_typed_lambda_calculi_moskvin_lecture03
20110224 systems of_typed_lambda_calculi_moskvin_lecture0320110224 systems of_typed_lambda_calculi_moskvin_lecture03
20110224 systems of_typed_lambda_calculi_moskvin_lecture03Computer Science Club
 
20110327 systems of_typed_lambda_calculi_moskvin_lecture08
20110327 systems of_typed_lambda_calculi_moskvin_lecture0820110327 systems of_typed_lambda_calculi_moskvin_lecture08
20110327 systems of_typed_lambda_calculi_moskvin_lecture08Computer 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
 
Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Тео...
Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Тео...Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Тео...
Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Тео...Nikolay Grebenshikov
 
предел последовательности
предел последовательностипредел последовательности
предел последовательностиtomik1044
 
Линейная алгебра - I
Линейная алгебра - IЛинейная алгебра - I
Линейная алгебра - IDEVTYPE
 

Was ist angesagt? (20)

Лекция №16. Поиск подстрок. Предмет "Структуры и алгоритмы обработки данных"
Лекция №16. Поиск подстрок. Предмет "Структуры и алгоритмы обработки данных"Лекция №16. Поиск подстрок. Предмет "Структуры и алгоритмы обработки данных"
Лекция №16. Поиск подстрок. Предмет "Структуры и алгоритмы обработки данных"
 
Get Ft
Get FtGet Ft
Get Ft
 
Линейная алгебра - II
Линейная алгебра - IIЛинейная алгебра - II
Линейная алгебра - II
 
5
55
5
 
Pr i-3
Pr i-3Pr i-3
Pr i-3
 
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
 
fiz-mat
fiz-matfiz-mat
fiz-mat
 
Lection07
Lection07Lection07
Lection07
 
20081116 structuralcomplexitytheory lecture09-10
20081116 structuralcomplexitytheory lecture09-1020081116 structuralcomplexitytheory lecture09-10
20081116 structuralcomplexitytheory lecture09-10
 
Pr i-3
Pr i-3Pr i-3
Pr i-3
 
Скорость роста функций
Скорость роста функцийСкорость роста функций
Скорость роста функций
 
20110224 systems of_typed_lambda_calculi_moskvin_lecture03
20110224 systems of_typed_lambda_calculi_moskvin_lecture0320110224 systems of_typed_lambda_calculi_moskvin_lecture03
20110224 systems of_typed_lambda_calculi_moskvin_lecture03
 
20110327 systems of_typed_lambda_calculi_moskvin_lecture08
20110327 systems of_typed_lambda_calculi_moskvin_lecture0820110327 systems of_typed_lambda_calculi_moskvin_lecture08
20110327 systems of_typed_lambda_calculi_moskvin_lecture08
 
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
 
Funkciya y cos_ee_svojstva_i_grafik
Funkciya y cos_ee_svojstva_i_grafikFunkciya y cos_ee_svojstva_i_grafik
Funkciya y cos_ee_svojstva_i_grafik
 
10474
1047410474
10474
 
Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Тео...
Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Тео...Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Тео...
Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Тео...
 
предел последовательности
предел последовательностипредел последовательности
предел последовательности
 
лекция 10
лекция 10лекция 10
лекция 10
 
Линейная алгебра - I
Линейная алгебра - IЛинейная алгебра - I
Линейная алгебра - I
 

Andere mochten auch (9)

Misa Universitaria
Misa Universitaria Misa Universitaria
Misa Universitaria
 
Posterous
PosterousPosterous
Posterous
 
Dn12 u3 a35_gfc
Dn12 u3 a35_gfcDn12 u3 a35_gfc
Dn12 u3 a35_gfc
 
Equipo egipto
Equipo egiptoEquipo egipto
Equipo egipto
 
дилижан 2009
дилижан 2009дилижан 2009
дилижан 2009
 
Comic plaza de españa sevilla
Comic plaza de españa sevillaComic plaza de españa sevilla
Comic plaza de españa sevilla
 
Ale o co chodzi?
Ale o co chodzi?Ale o co chodzi?
Ale o co chodzi?
 
Dn11 u3 ac38_ejma
Dn11 u3 ac38_ejmaDn11 u3 ac38_ejma
Dn11 u3 ac38_ejma
 
Dn11 u3 a37_ejma-1
Dn11 u3 a37_ejma-1Dn11 u3 a37_ejma-1
Dn11 u3 a37_ejma-1
 

Ähnlich wie 20110313 systems of_typed_lambda_calculi_moskvin_lecture06

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
 
20110515 systems of typed lambda_calculi_moskvin_lecture09
20110515 systems of typed lambda_calculi_moskvin_lecture0920110515 systems of typed lambda_calculi_moskvin_lecture09
20110515 systems of typed lambda_calculi_moskvin_lecture09Computer Science Club
 
20120309 formal semantics shilov_lecture06
20120309 formal semantics shilov_lecture0620120309 formal semantics shilov_lecture06
20120309 formal semantics shilov_lecture06Computer Science Club
 
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
 
13.1. курс лекций афу
13.1. курс лекций афу13.1. курс лекций афу
13.1. курс лекций афуGKarina707
 
Лекция 12 Теоретико-числовые алгоритмы Часть 1
Лекция 12 Теоретико-числовые алгоритмы Часть 1Лекция 12 Теоретико-числовые алгоритмы Часть 1
Лекция 12 Теоретико-числовые алгоритмы Часть 1simple_people
 
20081026 structuralcomplexitytheory lecture05-06
20081026 structuralcomplexitytheory lecture05-0620081026 structuralcomplexitytheory lecture05-06
20081026 structuralcomplexitytheory lecture05-06Computer Science Club
 
пугач му по матлогике 2015
пугач му по матлогике 2015пугач му по матлогике 2015
пугач му по матлогике 2015LIPugach
 
Лекция 16 Вычислительная геометрия
Лекция 16 Вычислительная геометрияЛекция 16 Вычислительная геометрия
Лекция 16 Вычислительная геометрияsimple_people
 
20101007 proof complexity_hirsch_lecture04
20101007 proof complexity_hirsch_lecture0420101007 proof complexity_hirsch_lecture04
20101007 proof complexity_hirsch_lecture04Computer Science Club
 
Дмитрий Кашицын, Вывод типов в динамических и не очень языках II
Дмитрий Кашицын, Вывод типов в динамических и не очень языках IIДмитрий Кашицын, Вывод типов в динамических и не очень языках II
Дмитрий Кашицын, Вывод типов в динамических и не очень языках IIPlatonov Sergey
 
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
 
1.4 Точечные оценки и их свойства
1.4 Точечные оценки и их свойства1.4 Точечные оценки и их свойства
1.4 Точечные оценки и их свойстваDEVTYPE
 
Евгений Котельников. Зависимые типы в Haskell
Евгений Котельников. Зависимые типы в HaskellЕвгений Котельников. Зависимые типы в Haskell
Евгений Котельников. Зависимые типы в HaskellFProg
 
20101030 reals and_integers_matiyasevich_ekb_lecture05-06
20101030 reals and_integers_matiyasevich_ekb_lecture05-0620101030 reals and_integers_matiyasevich_ekb_lecture05-06
20101030 reals and_integers_matiyasevich_ekb_lecture05-06Computer Science Club
 
Fractal Geometry
Fractal GeometryFractal Geometry
Fractal GeometrySSA KPI
 

Ähnlich wie 20110313 systems of_typed_lambda_calculi_moskvin_lecture06 (20)

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
 
20110515 systems of typed lambda_calculi_moskvin_lecture09
20110515 systems of typed lambda_calculi_moskvin_lecture0920110515 systems of typed lambda_calculi_moskvin_lecture09
20110515 systems of typed lambda_calculi_moskvin_lecture09
 
20120309 formal semantics shilov_lecture06
20120309 formal semantics shilov_lecture0620120309 formal semantics shilov_lecture06
20120309 formal semantics shilov_lecture06
 
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
 
13.1. курс лекций афу
13.1. курс лекций афу13.1. курс лекций афу
13.1. курс лекций афу
 
Лекция 12 Теоретико-числовые алгоритмы Часть 1
Лекция 12 Теоретико-числовые алгоритмы Часть 1Лекция 12 Теоретико-числовые алгоритмы Часть 1
Лекция 12 Теоретико-числовые алгоритмы Часть 1
 
20081026 structuralcomplexitytheory lecture05-06
20081026 structuralcomplexitytheory lecture05-0620081026 structuralcomplexitytheory lecture05-06
20081026 structuralcomplexitytheory lecture05-06
 
пугач му по матлогике 2015
пугач му по матлогике 2015пугач му по матлогике 2015
пугач му по матлогике 2015
 
Matanal 31oct
Matanal 31octMatanal 31oct
Matanal 31oct
 
Лекция 16 Вычислительная геометрия
Лекция 16 Вычислительная геометрияЛекция 16 Вычислительная геометрия
Лекция 16 Вычислительная геометрия
 
20101007 proof complexity_hirsch_lecture04
20101007 proof complexity_hirsch_lecture0420101007 proof complexity_hirsch_lecture04
20101007 proof complexity_hirsch_lecture04
 
Дмитрий Кашицын, Вывод типов в динамических и не очень языках II
Дмитрий Кашицын, Вывод типов в динамических и не очень языках IIДмитрий Кашицын, Вывод типов в динамических и не очень языках II
Дмитрий Кашицын, Вывод типов в динамических и не очень языках II
 
9 cifi otc
9 cifi otc9 cifi otc
9 cifi otc
 
Soboland Sat
Soboland SatSoboland Sat
Soboland Sat
 
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
 
1.4 Точечные оценки и их свойства
1.4 Точечные оценки и их свойства1.4 Точечные оценки и их свойства
1.4 Точечные оценки и их свойства
 
Евгений Котельников. Зависимые типы в Haskell
Евгений Котельников. Зависимые типы в HaskellЕвгений Котельников. Зависимые типы в Haskell
Евгений Котельников. Зависимые типы в Haskell
 
20101030 reals and_integers_matiyasevich_ekb_lecture05-06
20101030 reals and_integers_matiyasevich_ekb_lecture05-0620101030 reals and_integers_matiyasevich_ekb_lecture05-06
20101030 reals and_integers_matiyasevich_ekb_lecture05-06
 
Fractal Geometry
Fractal GeometryFractal Geometry
Fractal Geometry
 
20131006 h10 lecture2_matiyasevich
20131006 h10 lecture2_matiyasevich20131006 h10 lecture2_matiyasevich
20131006 h10 lecture2_matiyasevich
 

Mehr von 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
 

Mehr von 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
 
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
 

20110313 systems of_typed_lambda_calculi_moskvin_lecture06

  • 1. Системы типизации лямбда-исчисления Лекция 6. Просто типизированная система: разрешимость, нормализация, расширения Денис Москвин 13.03.2011 CS Club при ПОМИ РАН 1
  • 2. Проблемы разрешимости Есть ли алгоритм, который позволяют решить задачу? M : σ? Задача проверки типа ЗПТ Type Checking Problem TCP M:? Задача синтеза типа ЗСТ Type Synthesis (or Assgnment) Problem TSP, TAP ?:σ Задача обитаемости типа ЗОТ Type Inhabitation Problem TIP Для λ→ (и в стиле Чёрча, и в стиле Карри) все эти задачи разрешимы. ЗПТ выглядит проще ЗСТ, но обычно они эквивалентны: проверка (M N) : σ? требует синтеза N : ?. 2
  • 3. Проблемы разрешимости (2) ЗПТ M : σ? и ЗСТ M : ?. Для λ→ а ля Чёрч тривиально: строим дерево вывода ти- па. Для λ→ а ля Карри: ЗСТ разрешается с помощью алгорит- ма PT , ЗПТ проверкой, что тип σ может быть получен подстановкой в результат PT . ЗОТ ? : σ. Разрешим, поскольку соответствует доказуемости в PROP, для которой факт разрешимости известен. Например, M M : (α → β) → β, поскольку (α → β) → β не является тавтологией минимальной пропозициональной логики. 3
  • 4. Слабая и сильная нормализация (Weak and Strong Normalization) Терм называют слабо нормализуемым (WN), если име- ется последовательность редукций, приводящих его к нор- мальной форме. Терм называют сильно нормализуемым (SN), если лю- бая последовательность редукций, приводит его к нормаль- ной форме. Пример. Терм K I K SN, терм K I Ω WN, терм Ω не нормализуем. 4
  • 5. Слабая и сильная нормализация Систему типов называют слабо нормализуемой если все её допустимые термы WN. Систему типов называют сильно нормализуемой если все её допустимые термы SN. Обе системы λ→ (и Карри, и Чёрча) сильно нормализуемы. Доказательство не является тривиальным. 5
  • 6. Что мешает нормализации? Терм может увеличиваться. (λf x. f (f x)) M →β λx. M (M x) Редекс может размножиться. (λf x. f (f x)) ((λy. M) N) →β λx. ((λy. M) N) (((λy. M) N) x) Могут появиться новые редексы. (λf x. f (f x)) (λy. M) →β λx. (λy. M) ((λy. M) x) Идея для док-ва WN: выбирать стратегию, которая на каж- дом шаге: или делает терм короче или не создаёт новых редексов. Увы, это не проходит. 6
  • 7. WN: лемма о появлении редексов При β-редукции редексы могут образовываться только сле- дующими способами: Создание. (λx. · · · (x N) · · · ) (λy. M) →β · · · ((λy. M) N) · · · Размножение. (λx. · · · x · · · x · · · ) ((λy. M) N) →β · · · ((λy. M) N) · · · ((λy. M) N) · · · Спрятанный редекс. (λx. (λy. M)) N P →β (λy. M[x := N]) P Редукция тождества. (λx. x) (λy. M) N →β (λy. M) N 7
  • 8. WN: меры типа Длиной типа σ называют число len(σ) стрелок в нём. Порядком типа σ называют число ord(σ) ord(α) = 0; ord(σ1 → . . . → σn → α) = max(ord(σ1), . . . ord(σn)) + 1. Эквивалентное определение (докажите это): ord(α) = 0; ord(σ → τ) = max(ord(σ) + 1, ord(τ)). Примеры. ord(α → β) = 1; ord(α → β → γ) = 1; ord((α → β) → γ) = 2; ord((γ → ε) → ((γ → ε) → ε) → ε) = ? 8
  • 9. WN: мера терма Высотой редекса назовём длину типа его левого аппли- канда. Для M : τ, N : σ имеем h ((λx : σ. M) N) = len(σ → τ) Введём для терма M меру µ(M) = (hr(M), M), где hr(M) максимальная высота редекса в M; M число редексов такой высоты в M. Зададим для меры лексикографический порядок: (h1, n1) < (h2, n2) | (h1 ≡ h2) = h1 < h2 (h1, n1) < (h2, n2) | (h1 ≡ h2) = n1 < n2 9
  • 10. WN: Теорема о слабой нормализации λ→ Теорема. Если M типизируемый терм в λ→, то для него имеется завершающаяся редукционная стратегия. Доказательство. Выберем редекс максимальной высоты hr(M), не содержащий другого такого же редекса. Сократим этот редекс: M →β N. При этом не возникнет но- вых редексов высоты hr(M). Имеем µ(N) < µ(M). Поскольку этот процесс не может про- должаться бесконечно, мы придём к терму без редексов. Осталось проверить утверждение о новых редексах. 10
  • 11. WN: используем лемму о появлении редексов Создание. Был редекс высоты h0 = h((σ → τ) → ρ), возник с h(σ → τ) < h0. (λxσ→τ. · · · (x Nσ) · · · ) (λyσ. Mτ) →β · · · ((λyσ. Mτ) Nσ) · · · Размножение. Был редекс высоты h0 = h(τ → ρ), по условию h0 > h(σ → τ) (иначе бы сокращали не его). (λxτ. · · · x · · · x · · · ) ((λyσ. Mτ) Nσ) →β · · · ((λyσ. Mτ) Nσ) · · · ((λyσ. Mτ) Nσ) · · · Спрятанный редекс. h0 = h(σ → τ → ρ), возник с h(τ → ρ) < h0. (λxσ. (λyτ. Mρ)) Nσ Pτ →β (λyτ. M[x := N]) Pτ Редукция I. h0 = h((σ → τ) → σ → τ), возник с h(σ → τ) < h0. (λxσ→τ. x) (λyσ. Mτ) Nσ →β (λyσ. Mτ) Nσ 11
  • 12. Сильная нормализация для λ→-Карри Введём SN множество термов, для которых все последо- вательности редукций завершаются нормальной формой. Наша задача показать, что Γ M : σ ⇒ M ∈ SN Для этого каждого типа σ определим логический предикат Pσ над термами этого типа. Цель. Если для предиката Pσ выполняется Γ M : σ влечёт Pσ(M); Pσ(M) влечёт M ∈ SN, то SN доказана. 12
  • 13. SN: определение предиката Pσ Определим логический предикат Pσ так Pα(M) := M ∈ SN Pσ→τ(M) := ∀N Pσ(N) ⇒ Pτ(M N) Предикат для стрелки верен, если он верен для всех апплика- ций соответствующего терма к любым термам, для которых верен такой предикат. Иногда пишут [[σ]] ≡ {M | Pσ(M)} и говорят про интерпретацию типов. Полезное замечание: (M N) ∈ SN ⇒ M ∈ SN ∧ N ∈ SN, но не наоборот (приведите пример!). 13
  • 14. Лемма: если Pσ, то SN Лемма 1. Для каждого σ и k 0 верно: (1) Если (x M1 . . . Mk) : σ и ∀i Mi ∈ SN, то Pσ(x M1 . . . Mk); (2) Если Pσ(M), то M ∈ SN. Доказательство. Индукция по структуре типа. Для α (1) тривиально; (2) по определению Pσ. Для σ → τ. → − (1) Пусть (x M) : σ → τ и ∀i Mi ∈ SN; берём ∀N Pσ(N). По (IH2) → τ (x − N). Отсюда для σ имеем N ∈ SN. По (IH1) для τ имеем P M Pσ→τ(x M1 . . . Mk), поскольку N произвольное. (2) Берём ∀M Pσ→τ(M) и x : σ. По (IH1) Pσ(x), откуда Pτ(M x). По (IH2) имеем M x ∈ SN, что даёт M ∈ SN, поскольку беско- нечная редукция во втором даст её и в первом. 14
  • 15. Сильная нормализация Лемма 2. Для каждого σ для предиката Pσ верно: → → σ(M[x := N] − ), то P σ((λx. M) N − ). Для любого N ∈ SN если P L L Доказательство. Индукция по структуре типа. Проведите её. Утверждение. Пусть дан контекст Γ = {x1 : τ1, . . . , xk : τk} и термы N1, . . . , Nk, такие что ∀i Pτi (Ni). Тогда Γ M : σ ⇒ Pσ(M[x1 := N1, . . . , xk := Nk]) Доказательство. Индукция по выводу Γ M : σ, используя лемму 2. Проведите её. Следствие. λ→ является SN. Доказательство. Положим Ni = xi. 15
  • 16. Интерпретации λ→ Как можно интерпретировать стрелочный тип? Теоретико-множественная модель [[σ → τ]] := [[τ]][[σ]] Она слишком большая . Наша модель [[α]] := SN [[σ → τ]] := {M | ∀N ∈ [[σ]] (M N) ∈ [[τ]]} Иначе говоря [[σ → τ]] := {f : [[σ]] → [[τ]] | f λ − определима} 16
  • 17. Расширения λ-исчисления Можно расширить множество λ-термов константами: Λ(C) ::= C | V | Λ(C) Λ(C) | λV. Λ(C) Например, C = {true, false}? Но нам ещё нужно уметь их использовать. Поэтому лучше C = {true, false, not, and, iif} И всё равно, помимо констант нужны дополнительные пра- вила, описывающие работу с ними. Какие? 17
  • 18. δ-редукция: пример Всем известные: not true →δ false not false →δ true and true true →δ true and true false →δ false and false true →δ false and false false →δ false iif true →δ TRU = λ t f. t iif false →δ FLS = λ t f. f Внешние функции над константами порождают новые пра- вила редукции. 18
  • 19. δ-редукция: обобщение Если на множестве термов X (обычно X ⊆ C) задана внеш- няя функция f : Xk → Λ(C), то для неё добавляем δ-правило: выбираем константу δf; для M1, . . . , Mk ∈ X добавляем правило сокращения δf M1 . . . Mk →δ f(M1, . . . , Mk) Для одной f не одно правило, а целая схема правил. Например, для Z = {. . . , −2, −1, 0, 1, 2, . . .} схемы правил: plus m n →δ m+n mult m n →δ m×n equal n n →δ true equal m n →δ false, если m = n 19
  • 20. Типизация расширенной системы Расширим и типы константами T ::= B | V | T → T, под- ходящими для типизации термовых констант, и аксиомами типизации вида c:σ Например, B = {B, Z} с аксиомами true : B, false : B, n : Z, not : B → B, or : B → B → B, iif : B → σ → σ → σ, plus : Z → Z → Z, mult : Z → Z → Z, equal : Z → Z → B. 20
  • 21. Вывод типа для расширенной системы Типизируем λx y. mult y (plus x y). plus : Z → Z → Z [x : Z]2 [y : Z]1 mult : Z → Z → Z [y : Z]1 plus x : Z → Z mult y : Z → Z plus x y : Z mult y (plus x y) : Z (1) λy. mult y (plus x y) : Z → Z (2) λx y. mult y (plus x y) : Z → Z → Z 21
  • 22. Система λYδ Типизация для системы с числами обладает свойством силь- ной нормализации. Это не всегда так. Определим расширение с одной термовой константой C = {Y}, правилом редукции: Y f →δ f (Y f) и одной схемой аксиом типизации: Y : (σ → σ) → σ. 22
  • 23. Свойства системы λYδ Система λYδ обладает свойством Чёрча-Россера. Нормальная редукционная стратегия приводит терм си- стемы λYδ к нормальной форме, если у него она есть. Система λYδ→ обладает свойством редукции субъекта. В системе λYδ представимы все вычислимые функции. 23
  • 24. Домашнее задание Докажите эквивалентность двух определений порядка типа. 24
  • 25. Литература (1) LCWT гл. 4.4, 4.3 Henk Barendregt, Lambda calculi with types, Handbook of logic in computer science (vol. 2), Oxford University Press, 1993 ITT гл. 4.3, 4.4 Herman Geuvers, Introduction to Type Theory Alfa Lernet Summer school 2008, Uruguay http://www.cs.ru.nl/H.Geuvers/Uruguay2008SummerSchool.html 25
  • 26. Литература (2) TAPL гл. 12 Benjamin C. Pierce, Types and Programming Languages, MIT Press, 2002 http://www.cis.upenn.edu/~bcpierce/tapl ОЯП гл. 8.3.2 Дж.Митчелл, Основания языков программирования, М.-Ижевск, НИЦ РХД, 2010 26