SlideShare a Scribd company logo
1 of 26
Download to read offline
Системы типизации лямбда-исчисления

Лекция 2. λ-исчисление: программирование и
              λ-определимость

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




                27.02.2011

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



                                             1
Программирование на языке λ-исчисления



λ-исчисление    полноценный язык программирования? Нет,
но если его рассматривать в этом качестве, то:


 • удобно работать с замкнутыми термами;


 • в чистом λ-исчислении значения   это λ-абстракции;


 • β-преобразования моделируют процесс вычисления.


                                                   2
Булевы значения (1)




Булевы значения можно определить так:
                      TRU ≡ λ t f. t
                      FLS ≡ λ t f. f
Cтандартные булевы операции:
            IIF   ≡ λ b x y. b x y
            NOT   ≡ ??? (чуть позже)
            AND   ≡ λ x y. x y FLS
            OR    ≡ ??? (домашнее задание)



                                             3
Булевы значения (2)


Проверим, что ожидаемые свойства условного выражения
IIF ≡ λ b x y. b x y выполняются:

          IIF TRU v w ≡ (λ b x y. b x y) (λ t f. t) v w
                        = (λ t f. t) v w
                        = (λ f. v) w
                        = v;
          IIF FLS v w ≡ (λ b x y. b x y) (λ t f. f) v w
                        = (λ t f. f) v w
                        = (λ f. f) w
                        = w.

                                                          4
Булевы значения (3)




Проверим, что ожидаемые свойства логического оператора
 И AND ≡ λ x y. x y FLS выполняются:

             AND TRU w ≡ (λ x y. x y FLS) TRU w
                        = TRU w FLS
                        = w;
             AND FLS w ≡ (λ x y. x y FLS) FLS w
                        = FLS w FLS
                        = FLS.



                                                  5
Булевы значения (4)



Отрицание (версия I):

NOT ≡ λ b. IIF b FLS TRU = λ b. b FLS TRU ≡ λ b .b (λ t f. f) (λ t f. t)
Отрицание (версия II):

                          NOT ≡ λ b t f. b f t


Это разные термы! Но на булевых значениях одинаковые.

Типизация даст гарантию, что ничто, кроме булева значе-
ния, не пройдёт.

                                                                  6
Пары (1)



Пару (двухэлементный кортеж) можно определить так:

                   PAIR ≡ λ x y f. f x y
При этом конкретная пара такова:

                   PAIR a b = λ f. f a b


Стандартные операции для пары (проекции):
                    FST ≡ λ p. p TRU
                    SND ≡ λ p. p FLS


                                                     7
Пары (2)


Проверим, что ожидаемые свойства проекций FST ≡ λ p. p TRU
и SND ≡ λ p. p FLS выполняются:

            FST (PAIR a b) = PAIR a b TRU
                          ≡ (λ x y f. f x y) a b TRU
                          = TRU a b
                          = a;
            SND (PAIR a b) = PAIR a b FLS
                          ≡ (λ x y f. f x y) a b FLS
                          = FLS a b
                          = b.

                                                       8
Числа (1)


Числа (нумералы) Чёрча:
                   0   ≡      λs z. z
                   1   ≡      λs z. s z
                   2   ≡      λs z. s (s z)
                   3   ≡      λs z. s (s (s z))
                   4   ≡      λs z. s (s (s (s z)))
                       ...


Черту сверху будем опускать, если это не будет приводить к
путанице.

Наблюдение: 0 ≡ FLS.
                                                      9
Числа (2)




Более формально:

Выражение Fn(X), где n ∈ N, а F, X ∈ Λ, определим индуктивно:

                       F0(X) ≡ X;
                     Fn+1(X) ≡ F(Fn(X)).
Тогда n-ое число Чёрча определяется так:

                       n ≡ λs z. sn(z).



                                                        10
Числа (3)



Проверка числа на ноль (0 ≡ λs z. z):

                     ISZRO ≡ λn. n ?? TRU
Вместо ?? нужна функция, которая всегда возвращает FLS:

                  ISZRO ≡ λn. n (λx. FLS) TRU


Альтернативное определение, конструирующее булево значе-
ние на лету :

                  ISZRO2 ≡ λn t f. n (λx. f) t


                                                   11
Числа (4)

Функция следования для чисел

                        SUCC ≡ λn s z. s (n s z)


Действительно,

    SUCC n ≡ λs z. s (n s z) ≡ λs z. s(sn(z)) ≡ λs z. sn+1(z) ≡ n + 1.


Альтернативное определение

                       SUCC2 ≡ λn s z. n s (s z)
 надстраевает n-кратное применение s не над нулём (z), а
над единицей (s z).
                                                                     12
Числа: сложение (1)




Сложение чисел Чёрча основывается на аналогичной идее

                  PLUS ≡ λm n s z. m s (n s z)
Здесь m-кратное применение s надстраивается              над его n-
кратным применением. Например,

        PLUS 3 2 = λs z. 3 s (2 s z) = λs z. 3 s (s (s z))
                  = λs z. s (s (s (s (s z)))) ≡ 5




                                                              13
Числа: сложение (2)


Лемма. m s (n s z) = m + n s z.

Индукция по m.
База (m = 0): 0 s (n s z) = n s z = 0 + n s z.
IH: Пусть верно для m, то есть sm (sn (z)) = sn+m(z).
Покажем, что верно и для m + 1 :

      m + 1 s (n s z)    =   sm+1 (sn (z)) = s (sm (sn (z)))
                        =IH s (sm+n (z)) = s(m+n)+1 (z)
                         =   s(m+1)+n (z) = (m + 1) + n s z


То есть PLUS ≡ λm n s z. m s (n s z) действительно складывает.
                                                               14
Числа: умножение (1)

Благодаря каррированию PLUS n прибавляет n к любому пе-
реданому аргументу. Поэтому умножение может быть задано
так
                  MULT1 ≡ λm n. m (PLUS n) 0
Например,

    MULT1 3 2 = 3 (PLUS 2) 0 = (λs z. (s (s (s z)))) (PLUS 2) 0
              = (PLUS 2) ((PLUS 2) ((PLUS 2) 0)) = 6


Альтернативные определения

                   MULT2 ≡ λm n s z. m (n s) z
                    MULT ≡ λm n s. m (n s)
                                                                  15
Числа: умножение (2)




Проверим MULT2 ≡ λm n s z. m (n s) z:

      MULT2 3 2 = λs z. 3 (2 s) z = λs z. (2 s) ((2 s) (2 s z))
                 = λs z. (2 s) ((2 s) (s s z)) = 6


Версия MULT ≡ λm n s. m (n s) получается из MULT2 с помощью
η-преобразования.




                                                                  16
Числа: умножение (3)


Лемма. m (n s) z = m · n s z.

Индукция по m.
База (m = 0): 0 (n s) z = z = 0 · n s z.
IH: Пусть верно для m, то есть (n s)m (z) = sm·n (z).
Покажем, что верно и для m + 1 :

  m + 1 (n s) z   =    (n s)m+1 (z) = n s ((n s)m (z))
                  =IH n s (sm·n (z)) = sn (sm·n (z))
                  =    sn+m·n (z) = s(m+1)n (z) = (m + 1)n s z


То есть MULT2 ≡ λm n s z. m (n s) z действительно умножает.
                                                                 17
Числа: предшествование

Вспомогательные функции
            ZP ≡ PAIR 0 0
            SP ≡ λp. PAIR (SND p) (SUCC (SND p))
Вторая работает так
               SP (PAIR i j) = PAIR j j + 1

                  SP0 (ZP) = PAIR 0 0
                 SPm (ZP) = PAIR m − 1 m
(здесь m > 0). Тогда функция предшествования:
                 PRED = λm. FST (m SP ZP)
А какая, кстати, у неё временная сложность?
А что нужно поменять, чтобы вышел факториал?
                                                   18
Числа: примитивная рекурсия

Обобщим предыдущую схему

        XZ ≡ λx. PAIR x 0
        FS ≡ λf p. PAIR (f (FST p) (SND p)) (SUCC (SND p))
       REC ≡ λm f x. FST (m (FS f) (XZ x))

                                                 x,       0
                                                              
                                                                  SUCC
                                             Ð        ~
                                 f       x       0,       1
                                                              
                                                                  SUCC
                                                     ~
                        f (f     x       0)      1,       2
                                                              
                                                                  SUCC
                             {                        ~
             f (f (f     x       0)      1)      2,       3
В частности, PRED = λm. REC m (λx y. y) 0. А факториал?
                                                                         19
Списки

Конструкторы списков:
                    NIL ≡ λc n. n
                    CONS ≡ λe l c n. c e (l c n)
Например,

  [ ] = NIL = λc n. n
  [5, 3, 2] = CONS 5 (CONS 3 (CONS 2 NIL)) = λc n. c 5 (c 3 (c 2 n))
Стандартные функции:

             EMPTY ≡ λl. l (λh t. FLS) TRU
              HEAD ≡ ?? домашнее задание
              TAIL ≡ ?? домашнее задание **


                                                              20
λ-определимость (1)




• Числовая функция        это отображение f : Np → N.


• Числовая функция f называется λ-определимой, если для
  некоторого комбинатора F равенство

                   F n1 . . . np = f(n1, . . . , np)
 выполняется для всех n1, . . . , np ∈ N. При этом f называют
 λ-определенной посредством F.



                                                        21
λ-определимость (2)



Клини (Kleene) 1936: все рекурсивные функции λ-определимы
и наоборот.

Замечание. Под рекурсивными здесь, конечно, понимаются
частичные рекурсивные функции (0, SUCC, проекции и опера-
тор минимизации) [LCWT 2.2, ВФ 11]

Понятия рекурсивности, λ-определенности и вычислимости
по Тьюрингу эквивалентны.

Бестиповое λ-исчисление полно по Тьюрингу.

                                                    22
Назрешимость λ-исчисления

Пусть A ⊆ Λ.
A называется замкнутым относительно =, если

                M ∈ A, λ   M = N ⇒ N ∈ A.
A называется нетривиальным, если A = ∅ и A = Λ.

Теорема. Пусть A ⊆ Λ является нетривиальным и замкну-
тым относительно =. Тогда A не является рекурсивным.
[LCWT 2.2]

Следствие. Множество {M | M ∈ Λ, M = TRU} не является ре-
курсивным.

Бестиповое λ-исчисление не является разрешимой теорией.
                                                    23
Домашнее задание




Закодируйте в бестиповом λ-исчислении:
– логическую операцию OR;
– пятиэлементный кортеж TUPLE5 и функции, осуществляю-
щие проекции PRJ1, . . . , PRJ5;
– стандартные функции для списков;
– функции вычитания, проверки на равенство и возведения
в степень для чисел Чёрча.
В последнем случае приведите индуктивное доказательство.



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




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



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



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




ВФ гл. 11
Н.К. Верещагин, А. Шень, Вычислимые функции
М:МЦНМО 2008

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




                                                        26

More Related Content

What's hot

Дмитрий Кашицын, Вывод типов в динамических и не очень языках II
Дмитрий Кашицын, Вывод типов в динамических и не очень языках IIДмитрий Кашицын, Вывод типов в динамических и не очень языках II
Дмитрий Кашицын, Вывод типов в динамических и не очень языках IIPlatonov Sergey
 
николаева первообр интеграл
николаева первообр интегралниколаева первообр интеграл
николаева первообр интегралurvlan
 
Дифференцциальное исчисление
Дифференцциальное исчислениеДифференцциальное исчисление
Дифференцциальное исчислениеvladimiryaschuk
 
интегралы
интегралыинтегралы
интегралыtomik1044
 
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
 
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
 
математик анализ лекц№5
математик анализ лекц№5математик анализ лекц№5
математик анализ лекц№5narangerelodon
 
Подобедов: Абстрактный Детерминизм
Подобедов: Абстрактный ДетерминизмПодобедов: Абстрактный Детерминизм
Подобедов: Абстрактный ДетерминизмAleximos
 
20081026 structuralcomplexitytheory lecture05-06
20081026 structuralcomplexitytheory lecture05-0620081026 structuralcomplexitytheory lecture05-06
20081026 structuralcomplexitytheory lecture05-06Computer 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
 
возростание и убывание функции
возростание и убывание функциивозростание и убывание функции
возростание и убывание функцииАня Иванова
 
Площадь криволинейной трапециии
Площадь криволинейной трапециииПлощадь криволинейной трапециии
Площадь криволинейной трапециииВлад Дегтярев
 
предел последовательности
предел последовательностипредел последовательности
предел последовательностиtomik1044
 
11.2 курс лекций афу
11.2 курс лекций афу11.2 курс лекций афу
11.2 курс лекций афуGKarina707
 
Opredelennyj integral
Opredelennyj integralOpredelennyj integral
Opredelennyj integralDimon4
 

What's hot (20)

Дмитрий Кашицын, Вывод типов в динамических и не очень языках II
Дмитрий Кашицын, Вывод типов в динамических и не очень языках IIДмитрий Кашицын, Вывод типов в динамических и не очень языках II
Дмитрий Кашицын, Вывод типов в динамических и не очень языках II
 
сплайны
сплайнысплайны
сплайны
 
николаева первообр интеграл
николаева первообр интегралниколаева первообр интеграл
николаева первообр интеграл
 
Дифференцциальное исчисление
Дифференцциальное исчислениеДифференцциальное исчисление
Дифференцциальное исчисление
 
интегралы
интегралыинтегралы
интегралы
 
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
 
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
 
Vozrastanie i ubyvanie_funkcij
Vozrastanie i ubyvanie_funkcijVozrastanie i ubyvanie_funkcij
Vozrastanie i ubyvanie_funkcij
 
Синтез функциональных программ при помощи метода дедуктивных таблиц
Синтез функциональных программ при помощи метода дедуктивных таблицСинтез функциональных программ при помощи метода дедуктивных таблиц
Синтез функциональных программ при помощи метода дедуктивных таблиц
 
Definite integral
Definite integralDefinite integral
Definite integral
 
математик анализ лекц№5
математик анализ лекц№5математик анализ лекц№5
математик анализ лекц№5
 
Подобедов: Абстрактный Детерминизм
Подобедов: Абстрактный ДетерминизмПодобедов: Абстрактный Детерминизм
Подобедов: Абстрактный Детерминизм
 
20081026 structuralcomplexitytheory lecture05-06
20081026 structuralcomplexitytheory lecture05-0620081026 structuralcomplexitytheory lecture05-06
20081026 structuralcomplexitytheory lecture05-06
 
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
 
23
2323
23
 
возростание и убывание функции
возростание и убывание функциивозростание и убывание функции
возростание и убывание функции
 
Площадь криволинейной трапециии
Площадь криволинейной трапециииПлощадь криволинейной трапециии
Площадь криволинейной трапециии
 
предел последовательности
предел последовательностипредел последовательности
предел последовательности
 
11.2 курс лекций афу
11.2 курс лекций афу11.2 курс лекций афу
11.2 курс лекций афу
 
Opredelennyj integral
Opredelennyj integralOpredelennyj integral
Opredelennyj integral
 

Viewers also liked

Session 08
Session 08Session 08
Session 08republic
 
StarSoft eSocial Técnico-Funcional
StarSoft eSocial Técnico-FuncionalStarSoft eSocial Técnico-Funcional
StarSoft eSocial Técnico-FuncionalVitalTree
 
аутизм
аутизмаутизм
аутизмpuzzleott
 
Pop up other, others, and the others
Pop up other, others, and the othersPop up other, others, and the others
Pop up other, others, and the othersdewi94055
 
HOJITA EVANGELIO DOMINGO XVIII CICLO A BN
HOJITA EVANGELIO  DOMINGO XVIII CICLO A BNHOJITA EVANGELIO  DOMINGO XVIII CICLO A BN
HOJITA EVANGELIO DOMINGO XVIII CICLO A BNNelson Gómez
 
Logistsics Trends & Network Strategies
Logistsics Trends & Network StrategiesLogistsics Trends & Network Strategies
Logistsics Trends & Network StrategiesTim Feemster
 
Hopper sap oilgas-services
Hopper sap oilgas-servicesHopper sap oilgas-services
Hopper sap oilgas-serviceshopperdev
 
O Poder dos Softwares Livres para Geoprocessamento
O Poder dos Softwares Livres para GeoprocessamentoO Poder dos Softwares Livres para Geoprocessamento
O Poder dos Softwares Livres para GeoprocessamentoAnderson Medeiros
 
5 Dicas para GeoEmpreendedores e suas Pequenas Empresas
5 Dicas para GeoEmpreendedores e suas Pequenas Empresas5 Dicas para GeoEmpreendedores e suas Pequenas Empresas
5 Dicas para GeoEmpreendedores e suas Pequenas EmpresasAnderson Medeiros
 
projection of Sectional view-engineering drawing b.tech
projection of Sectional view-engineering drawing b.techprojection of Sectional view-engineering drawing b.tech
projection of Sectional view-engineering drawing b.techMohd Mujahid Nasir
 
Impact of erp in retail sector
Impact of erp in retail sectorImpact of erp in retail sector
Impact of erp in retail sectorProjects Kart
 
6 презентация мебдом
6 презентация мебдом6 презентация мебдом
6 презентация мебдомkolesikmixer
 
Mod 5 transferencia-de-calor-vs 2013-2014
Mod 5 transferencia-de-calor-vs 2013-2014Mod 5 transferencia-de-calor-vs 2013-2014
Mod 5 transferencia-de-calor-vs 2013-2014Fersay
 

Viewers also liked (20)

Judiciary
JudiciaryJudiciary
Judiciary
 
2556 01-29 10-51-05 0030
2556 01-29 10-51-05 00302556 01-29 10-51-05 0030
2556 01-29 10-51-05 0030
 
Simera
SimeraSimera
Simera
 
Nokia 1280
Nokia 1280Nokia 1280
Nokia 1280
 
Session 08
Session 08Session 08
Session 08
 
Cancion para ingles
Cancion para inglesCancion para ingles
Cancion para ingles
 
Maria Hopman
Maria HopmanMaria Hopman
Maria Hopman
 
StarSoft eSocial Técnico-Funcional
StarSoft eSocial Técnico-FuncionalStarSoft eSocial Técnico-Funcional
StarSoft eSocial Técnico-Funcional
 
аутизм
аутизмаутизм
аутизм
 
Ooops
OoopsOoops
Ooops
 
Pop up other, others, and the others
Pop up other, others, and the othersPop up other, others, and the others
Pop up other, others, and the others
 
HOJITA EVANGELIO DOMINGO XVIII CICLO A BN
HOJITA EVANGELIO  DOMINGO XVIII CICLO A BNHOJITA EVANGELIO  DOMINGO XVIII CICLO A BN
HOJITA EVANGELIO DOMINGO XVIII CICLO A BN
 
Logistsics Trends & Network Strategies
Logistsics Trends & Network StrategiesLogistsics Trends & Network Strategies
Logistsics Trends & Network Strategies
 
Hopper sap oilgas-services
Hopper sap oilgas-servicesHopper sap oilgas-services
Hopper sap oilgas-services
 
O Poder dos Softwares Livres para Geoprocessamento
O Poder dos Softwares Livres para GeoprocessamentoO Poder dos Softwares Livres para Geoprocessamento
O Poder dos Softwares Livres para Geoprocessamento
 
5 Dicas para GeoEmpreendedores e suas Pequenas Empresas
5 Dicas para GeoEmpreendedores e suas Pequenas Empresas5 Dicas para GeoEmpreendedores e suas Pequenas Empresas
5 Dicas para GeoEmpreendedores e suas Pequenas Empresas
 
projection of Sectional view-engineering drawing b.tech
projection of Sectional view-engineering drawing b.techprojection of Sectional view-engineering drawing b.tech
projection of Sectional view-engineering drawing b.tech
 
Impact of erp in retail sector
Impact of erp in retail sectorImpact of erp in retail sector
Impact of erp in retail sector
 
6 презентация мебдом
6 презентация мебдом6 презентация мебдом
6 презентация мебдом
 
Mod 5 transferencia-de-calor-vs 2013-2014
Mod 5 transferencia-de-calor-vs 2013-2014Mod 5 transferencia-de-calor-vs 2013-2014
Mod 5 transferencia-de-calor-vs 2013-2014
 

Similar to 20110224 systems of_typed_lambda_calculi_moskvin_lecture03

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_lecture06Computer 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
 
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_lecture05Computer Science Club
 
20120309 formal semantics shilov_lecture06
20120309 formal semantics shilov_lecture0620120309 formal semantics shilov_lecture06
20120309 formal semantics shilov_lecture06Computer Science Club
 
20110306 systems of_typed_lambda_calculi_moskvin_lecture04
20110306 systems of_typed_lambda_calculi_moskvin_lecture0420110306 systems of_typed_lambda_calculi_moskvin_lecture04
20110306 systems of_typed_lambda_calculi_moskvin_lecture04Computer Science Club
 
Скорость роста функций
Скорость роста функцийСкорость роста функций
Скорость роста функцийDEVTYPE
 
Матан 3 сем. Часть 2.pdf
Матан 3 сем. Часть 2.pdfМатан 3 сем. Часть 2.pdf
Матан 3 сем. Часть 2.pdfSrgioAlex
 
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_lecture12Computer Science Club
 
20081116 structuralcomplexitytheory lecture09-10
20081116 structuralcomplexitytheory lecture09-1020081116 structuralcomplexitytheory lecture09-10
20081116 structuralcomplexitytheory lecture09-10Computer Science Club
 
Многочлены наилучших среднеквадратичных приближений
Многочлены наилучших среднеквадратичных приближенийМногочлены наилучших среднеквадратичных приближений
Многочлены наилучших среднеквадратичных приближенийTheoretical mechanics department
 
пугач му по матлогике 2015
пугач му по матлогике 2015пугач му по матлогике 2015
пугач му по матлогике 2015LIPugach
 
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
 
лабораторная работа 3
лабораторная работа 3лабораторная работа 3
лабораторная работа 3student_kai
 
ст лекция 7
ст лекция 7ст лекция 7
ст лекция 7student_kai
 
Лекция 11: Методы разработки алгоритмов
Лекция 11: Методы разработки алгоритмовЛекция 11: Методы разработки алгоритмов
Лекция 11: Методы разработки алгоритмовMikhail Kurnosov
 
5.2. курс лекций афу
5.2. курс лекций афу5.2. курс лекций афу
5.2. курс лекций афуGKarina707
 

Similar to 20110224 systems of_typed_lambda_calculi_moskvin_lecture03 (20)

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
 
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
 
Soboland Sat
Soboland SatSoboland Sat
Soboland Sat
 
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
 
20120309 formal semantics shilov_lecture06
20120309 formal semantics shilov_lecture0620120309 formal semantics shilov_lecture06
20120309 formal semantics shilov_lecture06
 
20110306 systems of_typed_lambda_calculi_moskvin_lecture04
20110306 systems of_typed_lambda_calculi_moskvin_lecture0420110306 systems of_typed_lambda_calculi_moskvin_lecture04
20110306 systems of_typed_lambda_calculi_moskvin_lecture04
 
Скорость роста функций
Скорость роста функцийСкорость роста функций
Скорость роста функций
 
10474
1047410474
10474
 
Матан 3 сем. Часть 2.pdf
Матан 3 сем. Часть 2.pdfМатан 3 сем. Часть 2.pdf
Матан 3 сем. Часть 2.pdf
 
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
 
20081116 structuralcomplexitytheory lecture09-10
20081116 structuralcomplexitytheory lecture09-1020081116 structuralcomplexitytheory lecture09-10
20081116 structuralcomplexitytheory lecture09-10
 
Многочлены наилучших среднеквадратичных приближений
Многочлены наилучших среднеквадратичных приближенийМногочлены наилучших среднеквадратичных приближений
Многочлены наилучших среднеквадратичных приближений
 
109130.ppt
109130.ppt109130.ppt
109130.ppt
 
Урок 6. Чистое лямбда-исчисление.
Урок 6. Чистое лямбда-исчисление. Урок 6. Чистое лямбда-исчисление.
Урок 6. Чистое лямбда-исчисление.
 
пугач му по матлогике 2015
пугач му по матлогике 2015пугач му по матлогике 2015
пугач му по матлогике 2015
 
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
 
лабораторная работа 3
лабораторная работа 3лабораторная работа 3
лабораторная работа 3
 
ст лекция 7
ст лекция 7ст лекция 7
ст лекция 7
 
Лекция 11: Методы разработки алгоритмов
Лекция 11: Методы разработки алгоритмовЛекция 11: Методы разработки алгоритмов
Лекция 11: Методы разработки алгоритмов
 
5.2. курс лекций афу
5.2. курс лекций афу5.2. курс лекций афу
5.2. курс лекций афу
 

More from 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
 

More from 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_lecture03

  • 1. Системы типизации лямбда-исчисления Лекция 2. λ-исчисление: программирование и λ-определимость Денис Москвин 27.02.2011 CS Club при ПОМИ РАН 1
  • 2. Программирование на языке λ-исчисления λ-исчисление полноценный язык программирования? Нет, но если его рассматривать в этом качестве, то: • удобно работать с замкнутыми термами; • в чистом λ-исчислении значения это λ-абстракции; • β-преобразования моделируют процесс вычисления. 2
  • 3. Булевы значения (1) Булевы значения можно определить так: TRU ≡ λ t f. t FLS ≡ λ t f. f Cтандартные булевы операции: IIF ≡ λ b x y. b x y NOT ≡ ??? (чуть позже) AND ≡ λ x y. x y FLS OR ≡ ??? (домашнее задание) 3
  • 4. Булевы значения (2) Проверим, что ожидаемые свойства условного выражения IIF ≡ λ b x y. b x y выполняются: IIF TRU v w ≡ (λ b x y. b x y) (λ t f. t) v w = (λ t f. t) v w = (λ f. v) w = v; IIF FLS v w ≡ (λ b x y. b x y) (λ t f. f) v w = (λ t f. f) v w = (λ f. f) w = w. 4
  • 5. Булевы значения (3) Проверим, что ожидаемые свойства логического оператора И AND ≡ λ x y. x y FLS выполняются: AND TRU w ≡ (λ x y. x y FLS) TRU w = TRU w FLS = w; AND FLS w ≡ (λ x y. x y FLS) FLS w = FLS w FLS = FLS. 5
  • 6. Булевы значения (4) Отрицание (версия I): NOT ≡ λ b. IIF b FLS TRU = λ b. b FLS TRU ≡ λ b .b (λ t f. f) (λ t f. t) Отрицание (версия II): NOT ≡ λ b t f. b f t Это разные термы! Но на булевых значениях одинаковые. Типизация даст гарантию, что ничто, кроме булева значе- ния, не пройдёт. 6
  • 7. Пары (1) Пару (двухэлементный кортеж) можно определить так: PAIR ≡ λ x y f. f x y При этом конкретная пара такова: PAIR a b = λ f. f a b Стандартные операции для пары (проекции): FST ≡ λ p. p TRU SND ≡ λ p. p FLS 7
  • 8. Пары (2) Проверим, что ожидаемые свойства проекций FST ≡ λ p. p TRU и SND ≡ λ p. p FLS выполняются: FST (PAIR a b) = PAIR a b TRU ≡ (λ x y f. f x y) a b TRU = TRU a b = a; SND (PAIR a b) = PAIR a b FLS ≡ (λ x y f. f x y) a b FLS = FLS a b = b. 8
  • 9. Числа (1) Числа (нумералы) Чёрча: 0 ≡ λs z. z 1 ≡ λs z. s z 2 ≡ λs z. s (s z) 3 ≡ λs z. s (s (s z)) 4 ≡ λs z. s (s (s (s z))) ... Черту сверху будем опускать, если это не будет приводить к путанице. Наблюдение: 0 ≡ FLS. 9
  • 10. Числа (2) Более формально: Выражение Fn(X), где n ∈ N, а F, X ∈ Λ, определим индуктивно: F0(X) ≡ X; Fn+1(X) ≡ F(Fn(X)). Тогда n-ое число Чёрча определяется так: n ≡ λs z. sn(z). 10
  • 11. Числа (3) Проверка числа на ноль (0 ≡ λs z. z): ISZRO ≡ λn. n ?? TRU Вместо ?? нужна функция, которая всегда возвращает FLS: ISZRO ≡ λn. n (λx. FLS) TRU Альтернативное определение, конструирующее булево значе- ние на лету : ISZRO2 ≡ λn t f. n (λx. f) t 11
  • 12. Числа (4) Функция следования для чисел SUCC ≡ λn s z. s (n s z) Действительно, SUCC n ≡ λs z. s (n s z) ≡ λs z. s(sn(z)) ≡ λs z. sn+1(z) ≡ n + 1. Альтернативное определение SUCC2 ≡ λn s z. n s (s z) надстраевает n-кратное применение s не над нулём (z), а над единицей (s z). 12
  • 13. Числа: сложение (1) Сложение чисел Чёрча основывается на аналогичной идее PLUS ≡ λm n s z. m s (n s z) Здесь m-кратное применение s надстраивается над его n- кратным применением. Например, PLUS 3 2 = λs z. 3 s (2 s z) = λs z. 3 s (s (s z)) = λs z. s (s (s (s (s z)))) ≡ 5 13
  • 14. Числа: сложение (2) Лемма. m s (n s z) = m + n s z. Индукция по m. База (m = 0): 0 s (n s z) = n s z = 0 + n s z. IH: Пусть верно для m, то есть sm (sn (z)) = sn+m(z). Покажем, что верно и для m + 1 : m + 1 s (n s z) = sm+1 (sn (z)) = s (sm (sn (z))) =IH s (sm+n (z)) = s(m+n)+1 (z) = s(m+1)+n (z) = (m + 1) + n s z То есть PLUS ≡ λm n s z. m s (n s z) действительно складывает. 14
  • 15. Числа: умножение (1) Благодаря каррированию PLUS n прибавляет n к любому пе- реданому аргументу. Поэтому умножение может быть задано так MULT1 ≡ λm n. m (PLUS n) 0 Например, MULT1 3 2 = 3 (PLUS 2) 0 = (λs z. (s (s (s z)))) (PLUS 2) 0 = (PLUS 2) ((PLUS 2) ((PLUS 2) 0)) = 6 Альтернативные определения MULT2 ≡ λm n s z. m (n s) z MULT ≡ λm n s. m (n s) 15
  • 16. Числа: умножение (2) Проверим MULT2 ≡ λm n s z. m (n s) z: MULT2 3 2 = λs z. 3 (2 s) z = λs z. (2 s) ((2 s) (2 s z)) = λs z. (2 s) ((2 s) (s s z)) = 6 Версия MULT ≡ λm n s. m (n s) получается из MULT2 с помощью η-преобразования. 16
  • 17. Числа: умножение (3) Лемма. m (n s) z = m · n s z. Индукция по m. База (m = 0): 0 (n s) z = z = 0 · n s z. IH: Пусть верно для m, то есть (n s)m (z) = sm·n (z). Покажем, что верно и для m + 1 : m + 1 (n s) z = (n s)m+1 (z) = n s ((n s)m (z)) =IH n s (sm·n (z)) = sn (sm·n (z)) = sn+m·n (z) = s(m+1)n (z) = (m + 1)n s z То есть MULT2 ≡ λm n s z. m (n s) z действительно умножает. 17
  • 18. Числа: предшествование Вспомогательные функции ZP ≡ PAIR 0 0 SP ≡ λp. PAIR (SND p) (SUCC (SND p)) Вторая работает так SP (PAIR i j) = PAIR j j + 1 SP0 (ZP) = PAIR 0 0 SPm (ZP) = PAIR m − 1 m (здесь m > 0). Тогда функция предшествования: PRED = λm. FST (m SP ZP) А какая, кстати, у неё временная сложность? А что нужно поменять, чтобы вышел факториал? 18
  • 19. Числа: примитивная рекурсия Обобщим предыдущую схему XZ ≡ λx. PAIR x 0 FS ≡ λf p. PAIR (f (FST p) (SND p)) (SUCC (SND p)) REC ≡ λm f x. FST (m (FS f) (XZ x)) x, 0 SUCC Ð ~ f x 0, 1 SUCC  ~ f (f x 0) 1, 2 SUCC { ~ f (f (f x 0) 1) 2, 3 В частности, PRED = λm. REC m (λx y. y) 0. А факториал? 19
  • 20. Списки Конструкторы списков: NIL ≡ λc n. n CONS ≡ λe l c n. c e (l c n) Например, [ ] = NIL = λc n. n [5, 3, 2] = CONS 5 (CONS 3 (CONS 2 NIL)) = λc n. c 5 (c 3 (c 2 n)) Стандартные функции: EMPTY ≡ λl. l (λh t. FLS) TRU HEAD ≡ ?? домашнее задание TAIL ≡ ?? домашнее задание ** 20
  • 21. λ-определимость (1) • Числовая функция это отображение f : Np → N. • Числовая функция f называется λ-определимой, если для некоторого комбинатора F равенство F n1 . . . np = f(n1, . . . , np) выполняется для всех n1, . . . , np ∈ N. При этом f называют λ-определенной посредством F. 21
  • 22. λ-определимость (2) Клини (Kleene) 1936: все рекурсивные функции λ-определимы и наоборот. Замечание. Под рекурсивными здесь, конечно, понимаются частичные рекурсивные функции (0, SUCC, проекции и опера- тор минимизации) [LCWT 2.2, ВФ 11] Понятия рекурсивности, λ-определенности и вычислимости по Тьюрингу эквивалентны. Бестиповое λ-исчисление полно по Тьюрингу. 22
  • 23. Назрешимость λ-исчисления Пусть A ⊆ Λ. A называется замкнутым относительно =, если M ∈ A, λ M = N ⇒ N ∈ A. A называется нетривиальным, если A = ∅ и A = Λ. Теорема. Пусть A ⊆ Λ является нетривиальным и замкну- тым относительно =. Тогда A не является рекурсивным. [LCWT 2.2] Следствие. Множество {M | M ∈ Λ, M = TRU} не является ре- курсивным. Бестиповое λ-исчисление не является разрешимой теорией. 23
  • 24. Домашнее задание Закодируйте в бестиповом λ-исчислении: – логическую операцию OR; – пятиэлементный кортеж TUPLE5 и функции, осуществляю- щие проекции PRJ1, . . . , PRJ5; – стандартные функции для списков; – функции вычитания, проверки на равенство и возведения в степень для чисел Чёрча. В последнем случае приведите индуктивное доказательство. 24
  • 25. Литература (1) TAPL гл. 5 Benjamin C. Pierce, Types and Programming Languages, MIT Press, 2002 LCWT гл. 2.2 Henk Barendregt, Lambda calculi with types, Handbook of logic in computer science (vol. 2), Oxford University Press, 1993 25
  • 26. Литература (2) ВФ гл. 11 Н.К. Верещагин, А. Шень, Вычислимые функции М:МЦНМО 2008 I2FP гл. 3 John Harrison, Introduction to Functional Programming 26