SlideShare uma empresa Scribd logo
1 de 26
Baixar para ler 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

Mais conteúdo relacionado

Mais procurados

Mais procurados (6)

Valença dos primórdios à contemporaneidade
Valença  dos primórdios à contemporaneidadeValença  dos primórdios à contemporaneidade
Valença dos primórdios à contemporaneidade
 
Como ejercer la verdadera autoridad
Como ejercer la verdadera autoridadComo ejercer la verdadera autoridad
Como ejercer la verdadera autoridad
 
EDUCACION
EDUCACIONEDUCACION
EDUCACION
 
4 Catechism On Pn P
4 Catechism On Pn P4 Catechism On Pn P
4 Catechism On Pn P
 
Eresloquecomes
EresloquecomesEresloquecomes
Eresloquecomes
 
Phep noi suy
Phep noi suy Phep noi suy
Phep noi suy
 

Destaque

WAH Reference Letter
WAH Reference LetterWAH Reference Letter
WAH Reference Letter
Naomi Boyce
 
Miki Worral
Miki  WorralMiki  Worral
Miki Worral
Lorian
 
Báo cáo dạy nghề Việt Nam 2011
Báo cáo dạy nghề Việt Nam 2011Báo cáo dạy nghề Việt Nam 2011
Báo cáo dạy nghề Việt Nam 2011
Dung Tri
 
Reproduccion celular
Reproduccion celularReproduccion celular
Reproduccion celular
Julio Sanchez
 

Destaque (13)

Путеводитель инвестора
Путеводитель инвестора Путеводитель инвестора
Путеводитель инвестора
 
一页纸经理人
一页纸经理人一页纸经理人
一页纸经理人
 
Catalogue de volets persiennés TAMILUZ à lames orientables en aluminium
Catalogue de volets persiennés TAMILUZ à lames orientables en aluminiumCatalogue de volets persiennés TAMILUZ à lames orientables en aluminium
Catalogue de volets persiennés TAMILUZ à lames orientables en aluminium
 
Strong Authentication Open Id & Axsionics
Strong Authentication Open Id & AxsionicsStrong Authentication Open Id & Axsionics
Strong Authentication Open Id & Axsionics
 
Questions & Concerns About The Us Implementing Agreement, Farhana Yamin, Ids
Questions & Concerns About The Us Implementing Agreement, Farhana Yamin, IdsQuestions & Concerns About The Us Implementing Agreement, Farhana Yamin, Ids
Questions & Concerns About The Us Implementing Agreement, Farhana Yamin, Ids
 
La Col
La ColLa Col
La Col
 
New business idea & opportunity in rajasthan with low investment
New business idea & opportunity in rajasthan with low investmentNew business idea & opportunity in rajasthan with low investment
New business idea & opportunity in rajasthan with low investment
 
WAH Reference Letter
WAH Reference LetterWAH Reference Letter
WAH Reference Letter
 
1
11
1
 
Ld 26 tahun_2009_perda_Penyelenggaraan pendidikan
Ld 26 tahun_2009_perda_Penyelenggaraan pendidikanLd 26 tahun_2009_perda_Penyelenggaraan pendidikan
Ld 26 tahun_2009_perda_Penyelenggaraan pendidikan
 
Miki Worral
Miki  WorralMiki  Worral
Miki Worral
 
Báo cáo dạy nghề Việt Nam 2011
Báo cáo dạy nghề Việt Nam 2011Báo cáo dạy nghề Việt Nam 2011
Báo cáo dạy nghề Việt Nam 2011
 
Reproduccion celular
Reproduccion celularReproduccion celular
Reproduccion celular
 

Mais de Computer Science Club

20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_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
 

Mais de Computer Science Club (20)

20141223 kuznetsov distributed
20141223 kuznetsov distributed20141223 kuznetsov distributed
20141223 kuznetsov distributed
 
Computer Vision
Computer VisionComputer Vision
Computer Vision
 
20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs
 
20140531 serebryany lecture02_find_scary_cpp_bugs
20140531 serebryany lecture02_find_scary_cpp_bugs20140531 serebryany lecture02_find_scary_cpp_bugs
20140531 serebryany lecture02_find_scary_cpp_bugs
 
20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs
 
20140511 parallel programming_kalishenko_lecture12
20140511 parallel programming_kalishenko_lecture1220140511 parallel programming_kalishenko_lecture12
20140511 parallel programming_kalishenko_lecture12
 
20140427 parallel programming_zlobin_lecture11
20140427 parallel programming_zlobin_lecture1120140427 parallel programming_zlobin_lecture11
20140427 parallel programming_zlobin_lecture11
 
20140420 parallel programming_kalishenko_lecture10
20140420 parallel programming_kalishenko_lecture1020140420 parallel programming_kalishenko_lecture10
20140420 parallel programming_kalishenko_lecture10
 
20140413 parallel programming_kalishenko_lecture09
20140413 parallel programming_kalishenko_lecture0920140413 parallel programming_kalishenko_lecture09
20140413 parallel programming_kalishenko_lecture09
 
20140329 graph drawing_dainiak_lecture02
20140329 graph drawing_dainiak_lecture0220140329 graph drawing_dainiak_lecture02
20140329 graph drawing_dainiak_lecture02
 
20140329 graph drawing_dainiak_lecture01
20140329 graph drawing_dainiak_lecture0120140329 graph drawing_dainiak_lecture01
20140329 graph drawing_dainiak_lecture01
 
20140310 parallel programming_kalishenko_lecture03-04
20140310 parallel programming_kalishenko_lecture03-0420140310 parallel programming_kalishenko_lecture03-04
20140310 parallel programming_kalishenko_lecture03-04
 
20140223-SuffixTrees-lecture01-03
20140223-SuffixTrees-lecture01-0320140223-SuffixTrees-lecture01-03
20140223-SuffixTrees-lecture01-03
 
20140216 parallel programming_kalishenko_lecture01
20140216 parallel programming_kalishenko_lecture0120140216 parallel programming_kalishenko_lecture01
20140216 parallel programming_kalishenko_lecture01
 
20131106 h10 lecture6_matiyasevich
20131106 h10 lecture6_matiyasevich20131106 h10 lecture6_matiyasevich
20131106 h10 lecture6_matiyasevich
 
20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich
 
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