SlideShare une entreprise Scribd logo
1  sur  38
Télécharger pour lire hors ligne
Системы типизации лямбда-исчисления

             Введение

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




             27.02.2011

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




                                      1
Что такое типы?

Система типов     это гибко управляемый синтаксический
метод доказательства отсутствия в программе определен-
ных видов поведения при помощи классификации выражений
языка по разновидностям вычисляемых ими значений.

                                        Бенджамин Пирс

В рамках курса: программы      λ-термы, вычисление       их
редукция.

Типы    синтаксические конструкции, приписываемые тер-
мам по определённым правилам:

                         M:σ
                                                     2
Для чего нужны типы?

 Типы дают частичную спецификацию.

           f:N→N       g : (Πn : N. ∃m : N. m > n)


  Правильно типизированные программы не могут        сло-
маться . Робин Милнер (1978)

                 M:N ∧ M      v ⇒ v:N


  Типизированные программы всегда завершаются (это не
так :)

 Проверка типов отлавливает простые ошибки.
                                                     3
Основная литература (1)




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

ftp://ftp.cs.ru.nl/pub/CompMath.Found/HBK.ps




                                                           4
Основная литература (2)



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

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

русский перевод:
Бенджамин Пирс, Типы в языках программирования, 2011

http://newstar.rinet.ru/~goga/tapl/


                                                   5
Основная литература (3)




ITT
Herman Geuvers, Introduction to Type Theory
Alfa Lernet Summer school 2008, Uruguay

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




                                                        6
Дополнительная литература (1)


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

I2FP
John Harrison, Introduction to Functional Programming

http://www.cl.cam.ac.uk/teaching/Lectures/funprog-jrh-1996

русский перевод:

http://code.google.com/p/funprog-ru/
                                                        7
Дополнительная литература (2)



ЛИСС
Х. Барендрегт, Ламбда-исчисление, его синтаксис и семан-
тика, М:Мир, 1985
H. P. Barendregt, The Lambda calculus. Its Syntax and Semantics.
NHPC, 1981

ОЯП
Дж. Митчелл, Основания языков программирования,
М.-Ижевск, НИЦ РХД, 2010
John C. Mitchell, Foundations for Programming Languages, MIT
Press, 1996

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

Лекция 1. Система λ-исчисления без типов

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




               27.02.2011

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




                                           9
Неформальное введение (1)




В λ-исчислении две операции: применение и абстракция.

Применение (Application):

                            FX
Програмистский взгляд:
F (алгоритм) применяется к X (входные данные).

Допустимо самоприменение F F.



                                                   10
Неформальное введение (2)



Абстракция (Abstraction):
Пусть M ≡ M[x]   выражение, содержащее x. Тогда

                           λx. M
обозначает функцию
                         x → M[x],
то есть каждому x сопоставляется M[x].

Если x в M[x] отсутствует, то λx. M   константная функция
со значением M.

                                                    11
Неформальное введение (3)



Применение и абстракция работают совместно:

            (λx. 2 × x + 1) 42   = 2 × 42 + 1 (= 85).
                  F         X
То есть (λx. 2 × x + 1) 42 применение функции x → 2 × x + 1 к
аргументу 42, дающее в результате 2 × 42 + 1.

В общем случае имеем β-преобразование

                      (λx. M) N = M[x := N],
где M[x := N] обозначает подстановку N вместо x в M.


                                                        12
Термы (1)



Множество λ-термов Λ строится из переменных V = {x, y, z, . . .}
c помощью применения и абстракции:

                        x∈V ⇒ x∈Λ
                     M, N ∈ Λ ⇒ (M N) ∈ Λ
                 M ∈ Λ, x ∈ V ⇒ (λx. M) ∈ Λ
В абстрактном синтаксисе

                   Λ ::= V | (Λ Λ) | (λV. Λ)
Соглашение. Произвольные термы пишем заглавными бук-
вами, переменные   строчными.

                                                         13
Термы (2)




Примеры λ-термов:

               x
               (x z)
               (λx. (x z))
               ((λx. (x z)) y)
               ((λy. ((λx. (x z)) y)) w)
               (λz. (λw. ((λy. ((λx. (x z)) y)) w)))




                                                       14
Термы (3)


Соглашения:


 • Внешние скобки опускаются.


 • Применение ассоциативно влево:

                  F X Y Z обозначает (((F X) Y) Z)


 • Абстракция ассоциативна вправо:

              λx y z. M обозначает (λx. (λy. (λz. (M))))

                                                           15
Термы (4)




Те же примеры, с использованием соглашений

                                      x ≡ x
                                   (x z) ≡ x z
                             (λx. (x z)) ≡ λx. x z
                         ((λx. (x z)) y) ≡ (λx. x z) y
               ((λy. ((λx. (x z)) y)) w) ≡ (λy. (λx . x z) y) w
    (λz. (λw. ((λy. ((λx. (x z)) y)) w))) ≡ λz w. (λy. (λx . x z) y) w




                                                                     16
Свободные и связанные переменные (1)



Абстракция λx . M[x] связывает дотоле свободную перемен-
ную x в терме M.

Примеры:
                       (λy. (λx. x z) y) w
Переменные x и y     связанные, а z и w       свободные.

                        (λx. (λx. x z) x) x
Переменная x       связанная (дважды!) и свободная, а z
свободная.

                                                           17
Свободные и связанные переменные (2)


Множество FV(T ) свободных (free) переменных в λ-терме
T определяется индуктивно:

                   FV(x) = {x};
                FV(M N) = FV(M) ∪ FV(N);
               FV(λx. M) = FV(M)  {x}.
Множество BV(T ) связанных (bound) переменных :

                  BV(x) = ∅;
               BV(M N) = BV(M) ∪ BV(N);
              BV(λx. M) = BV(M) ∪ {x}.


                                                  18
Свободные и связанные переменные (3)



M   замкнутый λ-терм (или комбинатор), если FV(M) = ∅.
Множество замкнутых λ-термов обозначается через Λ0.

Классические комбинаторы:

                             I ≡ λx. x;
         ω ≡ λx. x x;        Ω ≡ ω ω = (λx. x x)(λx. x x);
                K ≡ λx y. x;          K∗ ≡ λx y. y;
                        S ≡ λf g x. f x (g x);
                        B ≡ λf g x. f (g x).


                                                             19
Функции нескольких переменных, каррирование

Шонфинкель (1924): функции нескольких переменных мо-
гут быть описаны последовательным применением. Пусть
ϕ(x, y, z) терм, зависящий от x, y, z.

         Φx,y = λz. ϕ(x, y, z)
         Φx = λy. Φx,y = λy. (λz. ϕ(x, y, z))
         Φ = λx. Φx = λx. (λy. (λz. ϕ(x, y, z))) = λx y z. ϕ(x, y, z)
Тогда

        Φ X Y Z = ((Φ X) Y) Z = (ΦX Y) Z = ΦX,Y Z = ϕ(X, Y, Z).


В общем случае
                          →
                        (λ x    → →
                                x N
                                           →
                          − . ϕ(− )) − = ϕ(−
                                           N).
                                                                        20
Тождественное равенство термов

Имена связанных переменных не важны. Переименуем x в y:
                       λx. M[x],   λy. M[y]
Они ведут себя (при подстановках) одинаково:
       (λx. M[x]) N = M[x := N],   (λy. M[y]) N = M[y := N]

Поэтому M ≡ N обозначает, что M и N – это один и тот же
терм с точностью до переименования связанных перемен-
ных. Например,
                      (λx. x) z ≡ (λx. x) z;
                      (λx. x) z ≡ (λy. y) z.

Иногда такое переименование называют α-преобразованием
и пишут M ≡α N.
                                                              21
Подстановка (1)

M[x := N] обозначает подстановку N вместо свободных вхож-
дений x в M.
Правила подстановки:
                x[x := N]   ≡   N;
                y[x := N]   ≡   y;
           (P Q)[x := N]    ≡   (P[x := N]) (Q[x := N]);
          (λy. P)[x := N]   ≡   λy. (P[x := N]), y ∈ FV(N);
          (λx. P)[x := N]   ≡   (λx. P).
Подразумевается, что x ≡ y.

Пример:
          ((λx. (λx . x z) x) x)[x := N] ≡ (λx. (λx . x z) x) N
                                                                  22
Подстановка (2)

Неприятность: (λy. x y)[x := y] (y ∈ FV(N) в четвёртом правиле).

Соглашение Барендрегта: Имена связанных переменных
всегда будем выбирать так, чтобы они отличались от сво-
бодных переменных в терме (термах).

Например, вместо
                          y(λx y. x y z)
будем писать
                         y(λx y . x y z)
Тогда можно использовать подстановку без оговорки о сво-
бодных и связанных переменных.
                                                          23
Лемма подстановки

Лемма подстановки.
Пусть M, N, L ∈ Λ. Предположим x ≡ y и x ∈ FV(L). Тогда
            M[x := N][y := L] ≡ M[y := L][x := N[y := L]].

Доказательство. Индукцией по структуре M.
1. M = z. Тривиально.
2. M = x.
       x[x := N][y := L] = N[y := L];
       x[y := L][x := N[y := L]] = x[x := N[y := L]] = N[y := L].
3. M = y.
   y[x := N][y := L] = y[y := L] = L;
   y[y := L][x := N[y := L]] = L[x := N[y := L]] = L, т.к. x ∈ FV(L).
                                                                24
Из Пирса




Доказательства программ настолько скучны, что социаль-
ные механизмы математики на них не работают.

    Ричард Де Милло, Ричард Липтон и Алан Перлис, 1979

...Поэтому при верификации не стоит рассчитывать на соци-
альные механизмы.

                                        Дэвид Дилл, 1999


                                                    25
Лемма подстановки (2)

4. M = P Q. Имеем IH: для P и Q лемма верна.
(P Q)[x := N][y := L]    = (P[x := N][y := L])(Q[x := N][y := L])
                        =IH (P[y := L][x := N[y := L]])(Q[y := L][x := N[y := L]])
                         = (P Q)[y := L][x := N[y := L]].
5. M = λz. P. Имеем IH: для P лемма верна.
   5(a). z ∈ FV(N) ∪ FV(L).
       (λz. P)[x := N][y := L]    = λz. P[x := N][y := L]
                                 =IH λz. P[y := L][x := N[y := L]]
                                  = (λz. P)[y := L][x := N[y := L]].
   5(b). z ∈ FV(N) ∪ FV(L)?
6. M = λx. P?
7. M = λy. P?
Завершите доказательство.
                                                                       26
Преобразования (конверсии): β


• Основная схема аксиом для λ-исчисления: для любых
  M, N ∈ Λ
                  (λx . M)N = M[x := N]   (β)


•   Логические   аксиомы и правила:

     M = M;      M = N ⇒ N = M;       M = N, N = L ⇒ M = L;
     M=M     ⇒ M Z = M Z;        M=M      ⇒ ZM = ZM ;
     M=M     ⇒ λx. M = λx. M      (правило ξ).


• Если M = N доказуемо в λ-исчислении, пишут λ      M = N.

                                                        27
Преобразования (конверсии): α и η


Иногда вводят:


 • схему аксиом α-преобразования:

                  λx . M = λy . M[x := y]     (α)
   в предположении, что y ∈ FV(M);


 • схему аксиом η-преобразования:

                    λx . M x = M            (η)
   в предположении, что x ∈ FV(M).

                                                    28
Преобразования (конверсии): α


Для рассуждений достаточно соглашения Барендрегта, но
для компьютерной реализации α-преобразование полезно:

Пусть ω ≡ λx. x x и 1 ≡ λy z. y z. Тогда

                    ω 1 ≡ (λx. x x)(λy z. y z)
                         = (λy z. y z)(λy z. y z)
                         = λz. (λy z. y z) z
                         ≡ λz. (λy z . y z ) z
                         = λz z . z z
                         ≡ λy z. y z
                         ≡ 1.
                                                    29
Преобразования (конверсии): α



Индексы Де Брауна (De Bruijn) представляют альтерна-
тивный способ представления термов.

Переменные не именуются, а нумеруются (индексируются),
индекс показывает, сколько лямбд назад переменная была
связана:

                  λx. (λy. x y) ↔ λ (λ 2 1)
               λx. x (λy. x y y) ↔ λ 1 (λ 2 1 1)


Подробнее [ЛИСС, Приложение C], [TAPL, 6]

                                                   30
Преобразования (конверсии): η



η-преобразование обеспечивает принцип экстенсионально-
сти: две функции считаются экстенсионально эквивалент-
ными, если они дают одинаковый результат при одинаковом
вводе:
                       ∀x : F x = G x.
Выбирая y ∈ FV(F) ∪ FV(G), получаем (ξ, затем η)

                         Fy = Gy
                      λy. F y = λy. G y
                          F = G


                                                   31
Термовые уравнения


Схема β-редукции даёт нам возможность решать простейшие
уравнения на термы.

Пример: найти F, такой что ∀ M, N, L λ        F M N L = M L (N L).

                      F M N L = M L (N L)
                      F M N = λz. M z (N z)
                      F M = λy. λz. M z (y z)
                      F = λx y z. x z (y z)


А если уравнение рекурсивное, например, F M = M F?

                                                               32
Теорема неподвижной точки (1)

Теорема. Для любого λ-терма F существует неподвижная
точка:
                      ∀F ∈ Λ ∃X ∈ Λ       λ   FX = X
Док-во. Введем W ≡ λx. F (x x) и X ≡ W W. Тогда
             X ≡ W W ≡ (λx. F(x x)) W = F (W W) ≡ F X

Теорема. Существует комбинатор неподвижной точки
                     Y ≡ λf. (λx. f (x x))(λx. f (x x)),
такой что ∀F      F(Y F) = Y F.

Док-во. Y F ≡ (λx. F (x x))(λx. F (x x)) = F ((λx. F (x x))(λx. F (x x))) ≡
                                                           YF
F(Y F)
                                                                     33
Теорема неподвижной точки (2)


Y-комбинатор позволяет ввести рекурсию в λ-исчисление.

Факториал рекурсивно:

    FAC = λn. IIF (ISZRO n) 1 (MULT n (FAC (PRED n)))
Переписываем в виде

   FAC = (λf n. IIF (ISZRO n) 1 (MULT n (f (PRED n)))) FAC
Отсюда видно, что FAC        неподвижная точка для функции
F ≡ λf n. IIF (ISZRO n) 1 (MULT n (f (PRED n))):

                         FAC = Y F

                                                        34
Теорема неподвижной точки (3)


Как работает FAC ≡ Y F?

    FAC 3 = (Y F) 3
           = F (Y F) 3
           = IIF (ISZRO 3) 1 (MULT 3 ((Y F) (PRED 3)))
           = MULT 3 ((Y F) 2)
           = MULT 3 (F (Y F) 2)
           = MULT 3 (MULT 2 ((Y F) 1))
           = MULT 3 (MULT 2 (MULT 1 ((Y F) 0)))
           = MULT 3 (MULT 2 (MULT 1 1))
           = 6

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

Докажите,
– что S K K = I, B = S (K S) K.
– что применение некоммутативно и неассоциативно.

Завершите доказательство леммы подстановки.

Реализуйте алгоритм подстановки на каком-либо ЯП.

Сконструируйте
– пожиратель , то есть такой терм F, который для любого
M обеспечивает F M = F.
– терм F таким образом, чтобы для любого M выполнялось
F M = M F.
– терм F таким образом, чтобы для любых термов M и N
выполнялось F M N = N F (N M F).
                                                    36
Литература (1)




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

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



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




I2FP гл. 2
John Harrison, Introduction to Functional Programming

ЛИСС гл. 2
Х. Барендрегт, Ламбда-исчисление, его синтаксис и семан-
тика, М:Мир, 1985




                                                        38

Contenu connexe

Tendances

математик анализ лекц№10
математик анализ лекц№10математик анализ лекц№10
математик анализ лекц№10
narangerelodon
 
Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Тео...
Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Тео...Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Тео...
Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Тео...
Nikolay Grebenshikov
 
20110313 systems of_typed_lambda_calculi_moskvin_lecture06
20110313 systems of_typed_lambda_calculi_moskvin_lecture0620110313 systems of_typed_lambda_calculi_moskvin_lecture06
20110313 systems of_typed_lambda_calculi_moskvin_lecture06
Computer Science Club
 
20111202 machine learning_nikolenko_lecture03
20111202 machine learning_nikolenko_lecture0320111202 machine learning_nikolenko_lecture03
20111202 machine learning_nikolenko_lecture03
Computer Science Club
 
20110313 systems of_typed_lambda_calculi_moskvin_lecture05
20110313 systems of_typed_lambda_calculi_moskvin_lecture0520110313 systems of_typed_lambda_calculi_moskvin_lecture05
20110313 systems of_typed_lambda_calculi_moskvin_lecture05
Computer Science Club
 
Решение краевых задач методом конечных элементов
Решение краевых задач методом конечных элементовРешение краевых задач методом конечных элементов
Решение краевых задач методом конечных элементов
Theoretical mechanics department
 
20111202 machine learning_nikolenko_lecture04
20111202 machine learning_nikolenko_lecture0420111202 machine learning_nikolenko_lecture04
20111202 machine learning_nikolenko_lecture04
Computer Science Club
 
20111016 inroduction to_combinatorics_on_words_frid_lecture04
20111016 inroduction to_combinatorics_on_words_frid_lecture0420111016 inroduction to_combinatorics_on_words_frid_lecture04
20111016 inroduction to_combinatorics_on_words_frid_lecture04
Computer Science Club
 
20080928 structuralcomplexitytheory lecture01-02
20080928 structuralcomplexitytheory lecture01-0220080928 structuralcomplexitytheory lecture01-02
20080928 structuralcomplexitytheory lecture01-02
Computer Science Club
 
Лекция №14. Графы: кратчайшие пути и максимальные потоки. Предмет "Структуры ...
Лекция №14. Графы: кратчайшие пути и максимальные потоки. Предмет "Структуры ...Лекция №14. Графы: кратчайшие пути и максимальные потоки. Предмет "Структуры ...
Лекция №14. Графы: кратчайшие пути и максимальные потоки. Предмет "Структуры ...
Nikolay Grebenshikov
 

Tendances (20)

Soboland Sat
Soboland SatSoboland Sat
Soboland Sat
 
математик анализ лекц№10
математик анализ лекц№10математик анализ лекц№10
математик анализ лекц№10
 
Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Тео...
Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Тео...Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Тео...
Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Тео...
 
Линейная алгебра - I
Линейная алгебра - IЛинейная алгебра - I
Линейная алгебра - I
 
Линейная алгебра - II
Линейная алгебра - IIЛинейная алгебра - II
Линейная алгебра - II
 
20110313 systems of_typed_lambda_calculi_moskvin_lecture06
20110313 systems of_typed_lambda_calculi_moskvin_lecture0620110313 systems of_typed_lambda_calculi_moskvin_lecture06
20110313 systems of_typed_lambda_calculi_moskvin_lecture06
 
Исследование производной
Исследование производнойИсследование производной
Исследование производной
 
Метод конечных разностей
Метод конечных разностейМетод конечных разностей
Метод конечных разностей
 
20111202 machine learning_nikolenko_lecture03
20111202 machine learning_nikolenko_lecture0320111202 machine learning_nikolenko_lecture03
20111202 machine learning_nikolenko_lecture03
 
20110313 systems of_typed_lambda_calculi_moskvin_lecture05
20110313 systems of_typed_lambda_calculi_moskvin_lecture0520110313 systems of_typed_lambda_calculi_moskvin_lecture05
20110313 systems of_typed_lambda_calculi_moskvin_lecture05
 
Решение краевых задач методом конечных элементов
Решение краевых задач методом конечных элементовРешение краевых задач методом конечных элементов
Решение краевых задач методом конечных элементов
 
Основы комбинаторики - I
Основы комбинаторики - IОсновы комбинаторики - I
Основы комбинаторики - I
 
Основы комбинаторики - II
Основы комбинаторики - IIОсновы комбинаторики - II
Основы комбинаторики - II
 
20111202 machine learning_nikolenko_lecture04
20111202 machine learning_nikolenko_lecture0420111202 machine learning_nikolenko_lecture04
20111202 machine learning_nikolenko_lecture04
 
Дмитрий Кашицын, Вывод типов в динамических и не очень языках II
Дмитрий Кашицын, Вывод типов в динамических и не очень языках IIДмитрий Кашицын, Вывод типов в динамических и не очень языках II
Дмитрий Кашицын, Вывод типов в динамических и не очень языках II
 
20111016 inroduction to_combinatorics_on_words_frid_lecture04
20111016 inroduction to_combinatorics_on_words_frid_lecture0420111016 inroduction to_combinatorics_on_words_frid_lecture04
20111016 inroduction to_combinatorics_on_words_frid_lecture04
 
20080928 structuralcomplexitytheory lecture01-02
20080928 structuralcomplexitytheory lecture01-0220080928 structuralcomplexitytheory lecture01-02
20080928 structuralcomplexitytheory lecture01-02
 
Лекция №14. Графы: кратчайшие пути и максимальные потоки. Предмет "Структуры ...
Лекция №14. Графы: кратчайшие пути и максимальные потоки. Предмет "Структуры ...Лекция №14. Графы: кратчайшие пути и максимальные потоки. Предмет "Структуры ...
Лекция №14. Графы: кратчайшие пути и максимальные потоки. Предмет "Структуры ...
 
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
 
Pr i-8
Pr i-8Pr i-8
Pr i-8
 

En vedette

1 20130122140711
1 201301221407111 20130122140711
1 20130122140711
krupotjanee
 
Practica 8 areli castro martinez areli 1-6
Practica 8 areli castro martinez areli 1-6Practica 8 areli castro martinez areli 1-6
Practica 8 areli castro martinez areli 1-6
Dhanae Martiinez
 
ศัพท์อุตรดิตถ์
ศัพท์อุตรดิตถ์ศัพท์อุตรดิตถ์
ศัพท์อุตรดิตถ์
Manit Wongmool
 
After world hacks get
After world hacks getAfter world hacks get
After world hacks get
guesswho12
 
Mat2 pmntn x ukk juni 2014.
Mat2 pmntn x ukk juni 2014.Mat2 pmntn x ukk juni 2014.
Mat2 pmntn x ukk juni 2014.
maudya09
 
Untitled document google drive
Untitled document   google driveUntitled document   google drive
Untitled document google drive
purple18
 

En vedette (19)

Marketing meeting
Marketing meetingMarketing meeting
Marketing meeting
 
Sid 1795914052818412
Sid 1795914052818412Sid 1795914052818412
Sid 1795914052818412
 
1 20130122140711
1 201301221407111 20130122140711
1 20130122140711
 
Hengst a marca do filtro original.
Hengst a marca do filtro original.Hengst a marca do filtro original.
Hengst a marca do filtro original.
 
Practica 8 areli castro martinez areli 1-6
Practica 8 areli castro martinez areli 1-6Practica 8 areli castro martinez areli 1-6
Practica 8 areli castro martinez areli 1-6
 
ms_word_2007_winxp
ms_word_2007_winxpms_word_2007_winxp
ms_word_2007_winxp
 
ศัพท์อุตรดิตถ์
ศัพท์อุตรดิตถ์ศัพท์อุตรดิตถ์
ศัพท์อุตรดิตถ์
 
Как перестать беспокоиться о камере и начать снимать крутое видео
Как перестать беспокоиться о камере и начать снимать крутое видеоКак перестать беспокоиться о камере и начать снимать крутое видео
Как перестать беспокоиться о камере и начать снимать крутое видео
 
Cases do linkedin
Cases do linkedinCases do linkedin
Cases do linkedin
 
Lab
Lab Lab
Lab
 
Quickpitch compact 2
Quickpitch compact 2Quickpitch compact 2
Quickpitch compact 2
 
After world hacks get
After world hacks getAfter world hacks get
After world hacks get
 
Civica
CivicaCivica
Civica
 
Power Natus
Power NatusPower Natus
Power Natus
 
Mat2 pmntn x ukk juni 2014.
Mat2 pmntn x ukk juni 2014.Mat2 pmntn x ukk juni 2014.
Mat2 pmntn x ukk juni 2014.
 
Untitled document google drive
Untitled document   google driveUntitled document   google drive
Untitled document google drive
 
Belvedere 400
Belvedere 400Belvedere 400
Belvedere 400
 
Picassa
PicassaPicassa
Picassa
 
Pastillas Para Adelgazar
Pastillas Para Adelgazar
Pastillas Para Adelgazar
Pastillas Para Adelgazar
 

Similaire à 20110224 systems of_typed_lambda_calculi_moskvin_lecture01

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
Computer Science Club
 
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
Computer Science Club
 
20110522 systems of typed lambda_calculi_moskvin_lecture12
20110522 systems of typed lambda_calculi_moskvin_lecture1220110522 systems of typed lambda_calculi_moskvin_lecture12
20110522 systems of typed lambda_calculi_moskvin_lecture12
Computer Science Club
 
20120309 formal semantics shilov_lecture06
20120309 formal semantics shilov_lecture0620120309 formal semantics shilov_lecture06
20120309 formal semantics shilov_lecture06
Computer Science Club
 
Многочлены наилучших среднеквадратичных приближений
Многочлены наилучших среднеквадратичных приближенийМногочлены наилучших среднеквадратичных приближений
Многочлены наилучших среднеквадратичных приближений
Theoretical mechanics department
 
предел последовательности
предел последовательностипредел последовательности
предел последовательности
tomik1044
 
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
Computer Science Club
 
Методы численного интегрирования
Методы численного интегрированияМетоды численного интегрирования
Методы численного интегрирования
Theoretical mechanics department
 
Кванторы. Квантор всеобщности. Квантор существования.Равносильные формулы лог...
Кванторы. Квантор всеобщности. Квантор существования.Равносильные формулы лог...Кванторы. Квантор всеобщности. Квантор существования.Равносильные формулы лог...
Кванторы. Квантор всеобщности. Квантор существования.Равносильные формулы лог...
aleksashka3
 
Лекция №16. Поиск подстрок. Предмет "Структуры и алгоритмы обработки данных"
Лекция №16. Поиск подстрок. Предмет "Структуры и алгоритмы обработки данных"Лекция №16. Поиск подстрок. Предмет "Структуры и алгоритмы обработки данных"
Лекция №16. Поиск подстрок. Предмет "Структуры и алгоритмы обработки данных"
Nikolay Grebenshikov
 

Similaire à 20110224 systems of_typed_lambda_calculi_moskvin_lecture01 (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
 
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
 
20110522 systems of typed lambda_calculi_moskvin_lecture12
20110522 systems of typed lambda_calculi_moskvin_lecture1220110522 systems of typed lambda_calculi_moskvin_lecture12
20110522 systems of typed lambda_calculi_moskvin_lecture12
 
Евгений Котельников. Зависимые типы в Haskell
Евгений Котельников. Зависимые типы в HaskellЕвгений Котельников. Зависимые типы в Haskell
Евгений Котельников. Зависимые типы в Haskell
 
20120309 formal semantics shilov_lecture06
20120309 formal semantics shilov_lecture0620120309 formal semantics shilov_lecture06
20120309 formal semantics shilov_lecture06
 
Лекция 16 Вычислительная геометрия
Лекция 16 Вычислительная геометрияЛекция 16 Вычислительная геометрия
Лекция 16 Вычислительная геометрия
 
Многочлены наилучших среднеквадратичных приближений
Многочлены наилучших среднеквадратичных приближенийМногочлены наилучших среднеквадратичных приближений
Многочлены наилучших среднеквадратичных приближений
 
предел последовательности
предел последовательностипредел последовательности
предел последовательности
 
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
 
20131006 h10 lecture2_matiyasevich
20131006 h10 lecture2_matiyasevich20131006 h10 lecture2_matiyasevich
20131006 h10 lecture2_matiyasevich
 
Методы численного интегрирования
Методы численного интегрированияМетоды численного интегрирования
Методы численного интегрирования
 
Proizvodnaya
ProizvodnayaProizvodnaya
Proizvodnaya
 
Кванторы. Квантор всеобщности. Квантор существования.Равносильные формулы лог...
Кванторы. Квантор всеобщности. Квантор существования.Равносильные формулы лог...Кванторы. Квантор всеобщности. Квантор существования.Равносильные формулы лог...
Кванторы. Квантор всеобщности. Квантор существования.Равносильные формулы лог...
 
Лекция №16. Поиск подстрок. Предмет "Структуры и алгоритмы обработки данных"
Лекция №16. Поиск подстрок. Предмет "Структуры и алгоритмы обработки данных"Лекция №16. Поиск подстрок. Предмет "Структуры и алгоритмы обработки данных"
Лекция №16. Поиск подстрок. Предмет "Структуры и алгоритмы обработки данных"
 
Матан 3 сем. Часть 2.pdf
Матан 3 сем. Часть 2.pdfМатан 3 сем. Часть 2.pdf
Матан 3 сем. Часть 2.pdf
 
4
44
4
 
Fractal Geometry
Fractal GeometryFractal Geometry
Fractal Geometry
 
Pr i-7
Pr i-7Pr i-7
Pr i-7
 
Предикаты. Основные понятия, связанные с предикатами
Предикаты. Основные понятия, связанные с предикатамиПредикаты. Основные понятия, связанные с предикатами
Предикаты. Основные понятия, связанные с предикатами
 
10 a n_r
10 a n_r10 a n_r
10 a n_r
 

Plus 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_bugs
Computer 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_bugs
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_bugs
Computer Science Club
 
20140511 parallel programming_kalishenko_lecture12
20140511 parallel programming_kalishenko_lecture1220140511 parallel programming_kalishenko_lecture12
20140511 parallel programming_kalishenko_lecture12
Computer Science Club
 
20140427 parallel programming_zlobin_lecture11
20140427 parallel programming_zlobin_lecture1120140427 parallel programming_zlobin_lecture11
20140427 parallel programming_zlobin_lecture11
Computer Science Club
 
20140420 parallel programming_kalishenko_lecture10
20140420 parallel programming_kalishenko_lecture1020140420 parallel programming_kalishenko_lecture10
20140420 parallel programming_kalishenko_lecture10
Computer Science Club
 
20140413 parallel programming_kalishenko_lecture09
20140413 parallel programming_kalishenko_lecture0920140413 parallel programming_kalishenko_lecture09
20140413 parallel programming_kalishenko_lecture09
Computer Science Club
 
20140329 graph drawing_dainiak_lecture02
20140329 graph drawing_dainiak_lecture0220140329 graph drawing_dainiak_lecture02
20140329 graph drawing_dainiak_lecture02
Computer Science Club
 
20140329 graph drawing_dainiak_lecture01
20140329 graph drawing_dainiak_lecture0120140329 graph drawing_dainiak_lecture01
20140329 graph drawing_dainiak_lecture01
Computer Science Club
 
20140310 parallel programming_kalishenko_lecture03-04
20140310 parallel programming_kalishenko_lecture03-0420140310 parallel programming_kalishenko_lecture03-04
20140310 parallel programming_kalishenko_lecture03-04
Computer Science Club
 
20140216 parallel programming_kalishenko_lecture01
20140216 parallel programming_kalishenko_lecture0120140216 parallel programming_kalishenko_lecture01
20140216 parallel programming_kalishenko_lecture01
Computer Science Club
 

Plus 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
 
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
 

20110224 systems of_typed_lambda_calculi_moskvin_lecture01

  • 1. Системы типизации лямбда-исчисления Введение Денис Москвин 27.02.2011 CS Club при ПОМИ РАН 1
  • 2. Что такое типы? Система типов это гибко управляемый синтаксический метод доказательства отсутствия в программе определен- ных видов поведения при помощи классификации выражений языка по разновидностям вычисляемых ими значений. Бенджамин Пирс В рамках курса: программы λ-термы, вычисление их редукция. Типы синтаксические конструкции, приписываемые тер- мам по определённым правилам: M:σ 2
  • 3. Для чего нужны типы? Типы дают частичную спецификацию. f:N→N g : (Πn : N. ∃m : N. m > n) Правильно типизированные программы не могут сло- маться . Робин Милнер (1978) M:N ∧ M v ⇒ v:N Типизированные программы всегда завершаются (это не так :) Проверка типов отлавливает простые ошибки. 3
  • 4. Основная литература (1) LCWT Henk Barendregt, Lambda calculi with types, Handbook of logic in computer science (vol. 2), Oxford University Press, 1993 ftp://ftp.cs.ru.nl/pub/CompMath.Found/HBK.ps 4
  • 5. Основная литература (2) TAPL Benjamin C. Pierce, Types and Programming Languages, MIT Press, 2002 http://www.cis.upenn.edu/~bcpierce/tapl русский перевод: Бенджамин Пирс, Типы в языках программирования, 2011 http://newstar.rinet.ru/~goga/tapl/ 5
  • 6. Основная литература (3) ITT Herman Geuvers, Introduction to Type Theory Alfa Lernet Summer school 2008, Uruguay http://www.cs.ru.nl/H.Geuvers/Uruguay2008SummerSchool.html 6
  • 7. Дополнительная литература (1) ATTAPL Benjamin C. Pierce, editor. Advanced Topics in Types and Programming Languages, MIT, 2005 I2FP John Harrison, Introduction to Functional Programming http://www.cl.cam.ac.uk/teaching/Lectures/funprog-jrh-1996 русский перевод: http://code.google.com/p/funprog-ru/ 7
  • 8. Дополнительная литература (2) ЛИСС Х. Барендрегт, Ламбда-исчисление, его синтаксис и семан- тика, М:Мир, 1985 H. P. Barendregt, The Lambda calculus. Its Syntax and Semantics. NHPC, 1981 ОЯП Дж. Митчелл, Основания языков программирования, М.-Ижевск, НИЦ РХД, 2010 John C. Mitchell, Foundations for Programming Languages, MIT Press, 1996 8
  • 9. Системы типизации лямбда-исчисления Лекция 1. Система λ-исчисления без типов Денис Москвин 27.02.2011 CS Club при ПОМИ РАН 9
  • 10. Неформальное введение (1) В λ-исчислении две операции: применение и абстракция. Применение (Application): FX Програмистский взгляд: F (алгоритм) применяется к X (входные данные). Допустимо самоприменение F F. 10
  • 11. Неформальное введение (2) Абстракция (Abstraction): Пусть M ≡ M[x] выражение, содержащее x. Тогда λx. M обозначает функцию x → M[x], то есть каждому x сопоставляется M[x]. Если x в M[x] отсутствует, то λx. M константная функция со значением M. 11
  • 12. Неформальное введение (3) Применение и абстракция работают совместно: (λx. 2 × x + 1) 42 = 2 × 42 + 1 (= 85). F X То есть (λx. 2 × x + 1) 42 применение функции x → 2 × x + 1 к аргументу 42, дающее в результате 2 × 42 + 1. В общем случае имеем β-преобразование (λx. M) N = M[x := N], где M[x := N] обозначает подстановку N вместо x в M. 12
  • 13. Термы (1) Множество λ-термов Λ строится из переменных V = {x, y, z, . . .} c помощью применения и абстракции: x∈V ⇒ x∈Λ M, N ∈ Λ ⇒ (M N) ∈ Λ M ∈ Λ, x ∈ V ⇒ (λx. M) ∈ Λ В абстрактном синтаксисе Λ ::= V | (Λ Λ) | (λV. Λ) Соглашение. Произвольные термы пишем заглавными бук- вами, переменные строчными. 13
  • 14. Термы (2) Примеры λ-термов: x (x z) (λx. (x z)) ((λx. (x z)) y) ((λy. ((λx. (x z)) y)) w) (λz. (λw. ((λy. ((λx. (x z)) y)) w))) 14
  • 15. Термы (3) Соглашения: • Внешние скобки опускаются. • Применение ассоциативно влево: F X Y Z обозначает (((F X) Y) Z) • Абстракция ассоциативна вправо: λx y z. M обозначает (λx. (λy. (λz. (M)))) 15
  • 16. Термы (4) Те же примеры, с использованием соглашений x ≡ x (x z) ≡ x z (λx. (x z)) ≡ λx. x z ((λx. (x z)) y) ≡ (λx. x z) y ((λy. ((λx. (x z)) y)) w) ≡ (λy. (λx . x z) y) w (λz. (λw. ((λy. ((λx. (x z)) y)) w))) ≡ λz w. (λy. (λx . x z) y) w 16
  • 17. Свободные и связанные переменные (1) Абстракция λx . M[x] связывает дотоле свободную перемен- ную x в терме M. Примеры: (λy. (λx. x z) y) w Переменные x и y связанные, а z и w свободные. (λx. (λx. x z) x) x Переменная x связанная (дважды!) и свободная, а z свободная. 17
  • 18. Свободные и связанные переменные (2) Множество FV(T ) свободных (free) переменных в λ-терме T определяется индуктивно: FV(x) = {x}; FV(M N) = FV(M) ∪ FV(N); FV(λx. M) = FV(M) {x}. Множество BV(T ) связанных (bound) переменных : BV(x) = ∅; BV(M N) = BV(M) ∪ BV(N); BV(λx. M) = BV(M) ∪ {x}. 18
  • 19. Свободные и связанные переменные (3) M замкнутый λ-терм (или комбинатор), если FV(M) = ∅. Множество замкнутых λ-термов обозначается через Λ0. Классические комбинаторы: I ≡ λx. x; ω ≡ λx. x x; Ω ≡ ω ω = (λx. x x)(λx. x x); K ≡ λx y. x; K∗ ≡ λx y. y; S ≡ λf g x. f x (g x); B ≡ λf g x. f (g x). 19
  • 20. Функции нескольких переменных, каррирование Шонфинкель (1924): функции нескольких переменных мо- гут быть описаны последовательным применением. Пусть ϕ(x, y, z) терм, зависящий от x, y, z. Φx,y = λz. ϕ(x, y, z) Φx = λy. Φx,y = λy. (λz. ϕ(x, y, z)) Φ = λx. Φx = λx. (λy. (λz. ϕ(x, y, z))) = λx y z. ϕ(x, y, z) Тогда Φ X Y Z = ((Φ X) Y) Z = (ΦX Y) Z = ΦX,Y Z = ϕ(X, Y, Z). В общем случае → (λ x → → x N → − . ϕ(− )) − = ϕ(− N). 20
  • 21. Тождественное равенство термов Имена связанных переменных не важны. Переименуем x в y: λx. M[x], λy. M[y] Они ведут себя (при подстановках) одинаково: (λx. M[x]) N = M[x := N], (λy. M[y]) N = M[y := N] Поэтому M ≡ N обозначает, что M и N – это один и тот же терм с точностью до переименования связанных перемен- ных. Например, (λx. x) z ≡ (λx. x) z; (λx. x) z ≡ (λy. y) z. Иногда такое переименование называют α-преобразованием и пишут M ≡α N. 21
  • 22. Подстановка (1) M[x := N] обозначает подстановку N вместо свободных вхож- дений x в M. Правила подстановки: x[x := N] ≡ N; y[x := N] ≡ y; (P Q)[x := N] ≡ (P[x := N]) (Q[x := N]); (λy. P)[x := N] ≡ λy. (P[x := N]), y ∈ FV(N); (λx. P)[x := N] ≡ (λx. P). Подразумевается, что x ≡ y. Пример: ((λx. (λx . x z) x) x)[x := N] ≡ (λx. (λx . x z) x) N 22
  • 23. Подстановка (2) Неприятность: (λy. x y)[x := y] (y ∈ FV(N) в четвёртом правиле). Соглашение Барендрегта: Имена связанных переменных всегда будем выбирать так, чтобы они отличались от сво- бодных переменных в терме (термах). Например, вместо y(λx y. x y z) будем писать y(λx y . x y z) Тогда можно использовать подстановку без оговорки о сво- бодных и связанных переменных. 23
  • 24. Лемма подстановки Лемма подстановки. Пусть M, N, L ∈ Λ. Предположим x ≡ y и x ∈ FV(L). Тогда M[x := N][y := L] ≡ M[y := L][x := N[y := L]]. Доказательство. Индукцией по структуре M. 1. M = z. Тривиально. 2. M = x. x[x := N][y := L] = N[y := L]; x[y := L][x := N[y := L]] = x[x := N[y := L]] = N[y := L]. 3. M = y. y[x := N][y := L] = y[y := L] = L; y[y := L][x := N[y := L]] = L[x := N[y := L]] = L, т.к. x ∈ FV(L). 24
  • 25. Из Пирса Доказательства программ настолько скучны, что социаль- ные механизмы математики на них не работают. Ричард Де Милло, Ричард Липтон и Алан Перлис, 1979 ...Поэтому при верификации не стоит рассчитывать на соци- альные механизмы. Дэвид Дилл, 1999 25
  • 26. Лемма подстановки (2) 4. M = P Q. Имеем IH: для P и Q лемма верна. (P Q)[x := N][y := L] = (P[x := N][y := L])(Q[x := N][y := L]) =IH (P[y := L][x := N[y := L]])(Q[y := L][x := N[y := L]]) = (P Q)[y := L][x := N[y := L]]. 5. M = λz. P. Имеем IH: для P лемма верна. 5(a). z ∈ FV(N) ∪ FV(L). (λz. P)[x := N][y := L] = λz. P[x := N][y := L] =IH λz. P[y := L][x := N[y := L]] = (λz. P)[y := L][x := N[y := L]]. 5(b). z ∈ FV(N) ∪ FV(L)? 6. M = λx. P? 7. M = λy. P? Завершите доказательство. 26
  • 27. Преобразования (конверсии): β • Основная схема аксиом для λ-исчисления: для любых M, N ∈ Λ (λx . M)N = M[x := N] (β) • Логические аксиомы и правила: M = M; M = N ⇒ N = M; M = N, N = L ⇒ M = L; M=M ⇒ M Z = M Z; M=M ⇒ ZM = ZM ; M=M ⇒ λx. M = λx. M (правило ξ). • Если M = N доказуемо в λ-исчислении, пишут λ M = N. 27
  • 28. Преобразования (конверсии): α и η Иногда вводят: • схему аксиом α-преобразования: λx . M = λy . M[x := y] (α) в предположении, что y ∈ FV(M); • схему аксиом η-преобразования: λx . M x = M (η) в предположении, что x ∈ FV(M). 28
  • 29. Преобразования (конверсии): α Для рассуждений достаточно соглашения Барендрегта, но для компьютерной реализации α-преобразование полезно: Пусть ω ≡ λx. x x и 1 ≡ λy z. y z. Тогда ω 1 ≡ (λx. x x)(λy z. y z) = (λy z. y z)(λy z. y z) = λz. (λy z. y z) z ≡ λz. (λy z . y z ) z = λz z . z z ≡ λy z. y z ≡ 1. 29
  • 30. Преобразования (конверсии): α Индексы Де Брауна (De Bruijn) представляют альтерна- тивный способ представления термов. Переменные не именуются, а нумеруются (индексируются), индекс показывает, сколько лямбд назад переменная была связана: λx. (λy. x y) ↔ λ (λ 2 1) λx. x (λy. x y y) ↔ λ 1 (λ 2 1 1) Подробнее [ЛИСС, Приложение C], [TAPL, 6] 30
  • 31. Преобразования (конверсии): η η-преобразование обеспечивает принцип экстенсионально- сти: две функции считаются экстенсионально эквивалент- ными, если они дают одинаковый результат при одинаковом вводе: ∀x : F x = G x. Выбирая y ∈ FV(F) ∪ FV(G), получаем (ξ, затем η) Fy = Gy λy. F y = λy. G y F = G 31
  • 32. Термовые уравнения Схема β-редукции даёт нам возможность решать простейшие уравнения на термы. Пример: найти F, такой что ∀ M, N, L λ F M N L = M L (N L). F M N L = M L (N L) F M N = λz. M z (N z) F M = λy. λz. M z (y z) F = λx y z. x z (y z) А если уравнение рекурсивное, например, F M = M F? 32
  • 33. Теорема неподвижной точки (1) Теорема. Для любого λ-терма F существует неподвижная точка: ∀F ∈ Λ ∃X ∈ Λ λ FX = X Док-во. Введем W ≡ λx. F (x x) и X ≡ W W. Тогда X ≡ W W ≡ (λx. F(x x)) W = F (W W) ≡ F X Теорема. Существует комбинатор неподвижной точки Y ≡ λf. (λx. f (x x))(λx. f (x x)), такой что ∀F F(Y F) = Y F. Док-во. Y F ≡ (λx. F (x x))(λx. F (x x)) = F ((λx. F (x x))(λx. F (x x))) ≡ YF F(Y F) 33
  • 34. Теорема неподвижной точки (2) Y-комбинатор позволяет ввести рекурсию в λ-исчисление. Факториал рекурсивно: FAC = λn. IIF (ISZRO n) 1 (MULT n (FAC (PRED n))) Переписываем в виде FAC = (λf n. IIF (ISZRO n) 1 (MULT n (f (PRED n)))) FAC Отсюда видно, что FAC неподвижная точка для функции F ≡ λf n. IIF (ISZRO n) 1 (MULT n (f (PRED n))): FAC = Y F 34
  • 35. Теорема неподвижной точки (3) Как работает FAC ≡ Y F? FAC 3 = (Y F) 3 = F (Y F) 3 = IIF (ISZRO 3) 1 (MULT 3 ((Y F) (PRED 3))) = MULT 3 ((Y F) 2) = MULT 3 (F (Y F) 2) = MULT 3 (MULT 2 ((Y F) 1)) = MULT 3 (MULT 2 (MULT 1 ((Y F) 0))) = MULT 3 (MULT 2 (MULT 1 1)) = 6 35
  • 36. Домашнее задание Докажите, – что S K K = I, B = S (K S) K. – что применение некоммутативно и неассоциативно. Завершите доказательство леммы подстановки. Реализуйте алгоритм подстановки на каком-либо ЯП. Сконструируйте – пожиратель , то есть такой терм F, который для любого M обеспечивает F M = F. – терм F таким образом, чтобы для любого M выполнялось F M = M F. – терм F таким образом, чтобы для любых термов M и N выполнялось F M N = N F (N M F). 36
  • 37. Литература (1) LCWT гл. 2.1 Henk Barendregt, Lambda calculi with types, Handbook of logic in computer science (vol. 2), Oxford University Press, 1993 TAPL гл. 5, 6 Benjamin C. Pierce, Types and Programming Languages, MIT Press, 2002 37
  • 38. Литература (2) I2FP гл. 2 John Harrison, Introduction to Functional Programming ЛИСС гл. 2 Х. Барендрегт, Ламбда-исчисление, его синтаксис и семан- тика, М:Мир, 1985 38