SlideShare a Scribd company logo
Ñèñòåìû òèïèçàöèè ëÿìáäà-èñ÷èñëåíèÿ

Ëåêöèÿ 1. Ñèñòåìà λ-èñ÷èñëåíèÿ áåç òèïîâ

            Äåíèñ Ìîñêâèí




               27.02.2011

         CS Club ïðè ÏÎÌÈ ÐÀÍ



                                           1
Íåôîðìàëüíîå ââåäåíèå (1)




 λ-èñ÷èñëåíèè äâå îïåðàöèè: ïðèìåíåíèå è àáñòðàêöèÿ.

Ïðèìåíåíèå (Application):

                             FX
Ïðîãðàìèñòñêèé âçãëÿä:
F (àëãîðèòì) ïðèìåíÿåòñÿ ê   X   (âõîäíûå äàííûå).

Äîïóñòèìî ñàìîïðèìåíåíèå     F F.



                                                     2
Íåôîðìàëüíîå ââåäåíèå (2)



Àáñòðàêöèÿ (Abstraction):
Ïóñòü M ≡ M[x]  âûðàæåíèå,     ñîäåðæàùåå x. Òîãäà
                             λx. M
îáîçíà÷àåò ôóíêöèþ
                            x → M[x],
òî åñòü êàæäîìó   x   ñîïîñòàâëÿåòñÿ    M[x].

Åñëè x â M[x] îòñóòñòâóåò, òî   λx. M    êîíñòàíòíàÿ ôóíêöèÿ
ñî çíà÷åíèåì M.

                                                        3
Íåôîðìàëüíîå ââåäåíèå (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.


                                                                           4
Òåðìû (1)


Ìíîæåñòâî λ-òåðìîâ Λ ñòðîèòñÿ èç ïåðåìåííûõ V = {x, y, z, . . .}
c ïîìîùüþ ïðèìåíåíèÿ è àáñòðàêöèè:
                        x∈V ⇒ x∈Λ
                     M, N ∈ Λ ⇒ (M N) ∈ Λ
                 M ∈ Λ, x ∈ V ⇒ (λx. M) ∈ Λ
 àáñòðàêòíîì ñèíòàêñèñå
                   Λ ::= V | (Λ Λ) | (λV. Λ)
Ñîãëàøåíèå. Ïðîèçâîëüíûå òåðìû ïèøåì çàãëàâíûìè áóê-
âàìè, ïåðåìåííûå  ñòðî÷íûìè.

                                                         5
Òåðìû (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)))




                                                       6
Òåðìû (3)

Ñîãëàøåíèÿ:

 •   Âíåøíèå ñêîáêè îïóñêàþòñÿ.

 •   Ïðèìåíåíèå àññîöèàòèâíî     âëåâî :

                   FXY Z    îáîçíà÷àåò     (((F X) Y) Z)


 •   Àáñòðàêöèÿ àññîöèàòèâíà     âïðàâî :

              λx y z. M   îáîçíà÷àåò   (λx. (λy. (λz. (M))))

                                                               7
Òåðìû (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




                                                                     8
Ñâîáîäíûå è ñâÿçàííûå ïåðåìåííûå (1)



Àáñòðàêöèÿ λx . M[x]       ñâÿçûâàåò     äîòîëå         ñâîáîäíóþ   ïåðåìåí-
íóþ x â òåðìå M.

Ïðèìåðû:
                             (λy. (λx. x z) y) w
Ïåðåìåííûå   x   è   y    ñâÿçàííûå, à     z   è   w    ñâîáîäíûå.
                             (λx. (λx. x z) x) x
Ïåðåìåííàÿ   x    ñâÿçàííàÿ (äâàæäû!) è ñâîáîäíàÿ, à                      z   
ñâîáîäíàÿ.

                                                                       9
Ñâîáîäíûå è ñâÿçàííûå ïåðåìåííûå (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}.


                                                    10
Ñâîáîäíûå è ñâÿçàííûå ïåðåìåííûå (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).


                                                             11
Ôóíêöèè íåñêîëüêèõ ïåðåìåííûõ, êàððèðîâàíèå

Øîíôèíêåëü (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).
                                                                        12
Òîæäåñòâåííîå ðàâåíñòâî òåðìîâ

Èìåíà ñâÿçàííûõ ïåðåìåííûõ íå âàæíû. Ïåðåèìåíóåì              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.
                                                              13
Ïîäñòàíîâêà (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
                                                                  14
Ïîäñòàíîâêà (2)

Íåïðèÿòíîñòü: (λy. x y)[x := y] (y ∈ FV(N) â ÷åòâ¼ðòîì ïðàâèëå).

Ñîãëàøåíèå Áàðåíäðåãòà: Èìåíà ñâÿçàííûõ ïåðåìåííûõ
âñåãäà áóäåì âûáèðàòü òàê, ÷òîáû îíè îòëè÷àëèñü îò ñâî-
áîäíûõ ïåðåìåííûõ â òåðìå (òåðìàõ).

Íàïðèìåð, âìåñòî
                          y(λx y. x y z)
áóäåì ïèñàòü
                         y(λx y . x y z)
Òîãäà ìîæíî èñïîëüçîâàòü ïîäñòàíîâêó áåç îãîâîðêè î ñâî-
áîäíûõ è ñâÿçàííûõ ïåðåìåííûõ.
                                                          15
Ëåììà ïîäñòàíîâêè

Ëåììà ïîäñòàíîâêè.
Ïóñòü    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).
                                                                        16
Èç Ïèðñà




Äîêàçàòåëüñòâà ïðîãðàìì íàñòîëüêî ñêó÷íû, ÷òî ñîöèàëü-
íûå ìåõàíèçìû ìàòåìàòèêè íà íèõ íå ðàáîòàþò.

    Ðè÷àðä Äå Ìèëëî, Ðè÷àðä Ëèïòîí è Àëàí Ïåðëèñ, 1979

...Ïîýòîìó ïðè âåðèôèêàöèè íå ñòîèò ðàññ÷èòûâàòü íà ñîöè-
àëüíûå ìåõàíèçìû.

                                        Äýâèä Äèëë, 1999


                                                    17
Ëåììà ïîäñòàíîâêè (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?
Çàâåðøèòå äîêàçàòåëüñòâî.
                                                                         18
Ïðåîáðàçîâàíèÿ (êîíâåðñèè): β


•   Îñíîâíàÿ ñõåìà àêñèîì äëÿ λ-èñ÷èñëåíèÿ: äëÿ ëþáûõ
    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.

                                                          19
Ïðåîáðàçîâàíèÿ (êîíâåðñèè): α è η

Èíîãäà ââîäÿò:

 •   ñõåìó àêñèîì α-ïðåîáðàçîâàíèÿ:
                    λx . M = λy . M[x := y]     (α)
     â ïðåäïîëîæåíèè, ÷òî   y ∈ FV(M);


 •   ñõåìó àêñèîì η-ïðåîáðàçîâàíèÿ:
                      λx . M x = M            (η)
     â ïðåäïîëîæåíèè, ÷òî   x ∈ FV(M).

                                                      20
Ïðåîáðàçîâàíèÿ (êîíâåðñèè): α

Äëÿ ðàññóæäåíèé äîñòàòî÷íî ñîãëàøåíèÿ Áàðåíäðåãòà, íî
äëÿ êîìïüþòåðíîé ðåàëèçàöèè α-ïðåîáðàçîâàíèå ïîëåçíî:

Ïóñòü   ω ≡ λ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.
                                                          21
Ïðåîáðàçîâàíèÿ (êîíâåðñèè): α


Èíäåêñû Äå Áðàóíà (De Bruijn) ïðåäñòàâëÿþò àëüòåðíà-
òèâíûé ñïîñîá ïðåäñòàâëåíèÿ òåðìîâ.

Ïåðåìåííûå íå èìåíóþòñÿ, à íóìåðóþòñÿ (èíäåêñèðóþòñÿ),
èíäåêñ ïîêàçûâàåò, ñêîëüêî ëÿìáä íàçàä ïåðåìåííàÿ áûëà
ñâÿçàíà:
                  λx. (λy. x y) ↔ λ (λ 2 1)
               λx. x (λy. x y y) ↔ λ 1 (λ 2 1 1)


Ïîäðîáíåå [ËÈÑÑ, Ïðèëîæåíèå C], [TAPL, 6]

                                                   22
Ïðåîáðàçîâàíèÿ (êîíâåðñèè): η



η-ïðåîáðàçîâàíèå îáåñïå÷èâàåò ïðèíöèï ýêñòåíñèîíàëüíî-
ñòè : äâå ôóíêöèè ñ÷èòàþòñÿ ýêñòåíñèîíàëüíî ýêâèâàëåíò-
íûìè, åñëè îíè äàþò îäèíàêîâûé ðåçóëüòàò ïðè îäèíàêîâîì
ââîäå:
                          ∀x : F x = G x.
Âûáèðàÿ   y ∈ FV(F) ∪ FV(G),   ïîëó÷àåì (ξ, çàòåì η)
                               Fy = Gy
                        λy. F y = λy. G y
                                F = G


                                                       23
Òåðìîâûå óðàâíåíèÿ


Ñõåìà β-ðåäóêöèè äà¼ò íàì âîçìîæíîñòü ðåøàòü ïðîñòåéøèå
óðàâíåíèÿ íà òåðìû.

Ïðèìåð: íàéòè 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?

                                                              24
Òåîðåìà íåïîäâèæíîé òî÷êè (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)
                                                                     25
Òåîðåìà íåïîäâèæíîé òî÷êè (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

                                                         26
Òåîðåìà íåïîäâèæíîé òî÷êè (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

                                                         27
Äîìàøíåå çàäàíèå

Äîêàæèòå,
 ÷òî 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).
                                                    28
Ëèòåðàòóðà (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


                                                           29
Ëèòåðàòóðà (2)




I2FP ãë. 2
John Harrison, Introduction to Functional Programming

ËÈÑÑ ãë. 2
Õ. Áàðåíäðåãò, Ëàìáäà-èñ÷èñëåíèå, åãî ñèíòàêñèñ è ñåìàí-
òèêà, Ì:Ìèð, 1985



                                                        30

More Related Content

PDF
20090419 hardnessvsrandomness itsykson_lecture07-08
PDF
Mat1 lec11
PDF
20080309 cryptography hirsch_lecture04
PDF
Dao ham khao sat ham so hk1
PDF
20091206 mfcs itsykson_lecture09
PDF
20080316 cryptography hirsch_lecture05
PPT
Toan 1 bai_05_đạo hàm - bookbooming
PDF
Chde giai tich12-hki
20090419 hardnessvsrandomness itsykson_lecture07-08
Mat1 lec11
20080309 cryptography hirsch_lecture04
Dao ham khao sat ham so hk1
20091206 mfcs itsykson_lecture09
20080316 cryptography hirsch_lecture05
Toan 1 bai_05_đạo hàm - bookbooming
Chde giai tich12-hki

What's hot (12)

PDF
Ορόσημο Φροντιστήριο (Αθήνα). Βοήθημα μαθηματικών Α' λυκείου 2015 |
PDF
Юрий Владимирович Матиясевич. Десятая проблема Гильберта. Решение и применени...
PDF
Thi thử toán tĩnh gia 1 th 2012 lần 2 k ab
PDF
Mat1 lec12
PDF
Transf2 d
PPT
Tiet 30 phep tru phan thuc dai so
PPT
Kts c2-dai so boole
PDF
20080224 cryptography hirsch_lecture02
PDF
Модели монополистической конкуренции
PDF
Da toan d
DOC
квадрат тэгшитгэл
PDF
Ορόσημο Φροντιστήριο (Αθήνα). Βοήθημα μαθηματικών Α' λυκείου 2015 |
Юрий Владимирович Матиясевич. Десятая проблема Гильберта. Решение и применени...
Thi thử toán tĩnh gia 1 th 2012 lần 2 k ab
Mat1 lec12
Transf2 d
Tiet 30 phep tru phan thuc dai so
Kts c2-dai so boole
20080224 cryptography hirsch_lecture02
Модели монополистической конкуренции
Da toan d
квадрат тэгшитгэл
Ad

Viewers also liked (15)

PDF
APP research by Distimo
PDF
MakerFaire Taipei 2014 Nico-Tech Presentation Masakazu Takasu/高須正和 日本Maker力:
DOC
Convocatoria resolutores
PPT
UAs met ICT - samen sterker
DOCX
DOCX
Cuadro pni
PPT
Misa navidad
PDF
Perka bkn nomor_19_tahun_2011pedoman_umum_penyusunan_kebutuhan_pegawai_negeri...
PPT
Seminar PPT - eMarketing - June 2013
PDF
DevOps with visual studio release management
PPT
13. zagaynyi
PPTX
แนะนำ web site ของผม My Web Site
DOC
Resultados e programação atualizada no 4º Jimavi (22-10-2013)
PDF
Nomor 20 tahun 2010
APP research by Distimo
MakerFaire Taipei 2014 Nico-Tech Presentation Masakazu Takasu/高須正和 日本Maker力:
Convocatoria resolutores
UAs met ICT - samen sterker
Cuadro pni
Misa navidad
Perka bkn nomor_19_tahun_2011pedoman_umum_penyusunan_kebutuhan_pegawai_negeri...
Seminar PPT - eMarketing - June 2013
DevOps with visual studio release management
13. zagaynyi
แนะนำ web site ของผม My Web Site
Resultados e programação atualizada no 4º Jimavi (22-10-2013)
Nomor 20 tahun 2010
Ad

More from Computer Science Club (20)

PDF
20141223 kuznetsov distributed
PDF
Computer Vision
PDF
20140531 serebryany lecture01_fantastic_cpp_bugs
PDF
20140531 serebryany lecture02_find_scary_cpp_bugs
PDF
20140531 serebryany lecture01_fantastic_cpp_bugs
PDF
20140511 parallel programming_kalishenko_lecture12
PDF
20140427 parallel programming_zlobin_lecture11
PDF
20140420 parallel programming_kalishenko_lecture10
PDF
20140413 parallel programming_kalishenko_lecture09
PDF
20140329 graph drawing_dainiak_lecture02
PDF
20140329 graph drawing_dainiak_lecture01
PDF
20140310 parallel programming_kalishenko_lecture03-04
PDF
20140223-SuffixTrees-lecture01-03
PDF
20140216 parallel programming_kalishenko_lecture01
PDF
20131106 h10 lecture6_matiyasevich
PDF
20131027 h10 lecture5_matiyasevich
PDF
20131027 h10 lecture5_matiyasevich
PDF
20131013 h10 lecture4_matiyasevich
PDF
20131006 h10 lecture3_matiyasevich
PDF
20131006 h10 lecture3_matiyasevich
20141223 kuznetsov distributed
Computer Vision
20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture02_find_scary_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs
20140511 parallel programming_kalishenko_lecture12
20140427 parallel programming_zlobin_lecture11
20140420 parallel programming_kalishenko_lecture10
20140413 parallel programming_kalishenko_lecture09
20140329 graph drawing_dainiak_lecture02
20140329 graph drawing_dainiak_lecture01
20140310 parallel programming_kalishenko_lecture03-04
20140223-SuffixTrees-lecture01-03
20140216 parallel programming_kalishenko_lecture01
20131106 h10 lecture6_matiyasevich
20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich
20131013 h10 lecture4_matiyasevich
20131006 h10 lecture3_matiyasevich
20131006 h10 lecture3_matiyasevich

20110224 systems of_typed_lambda_calculi_moskvin_lecture02

  • 1. Ñèñòåìû òèïèçàöèè ëÿìáäà-èñ÷èñëåíèÿ Ëåêöèÿ 1. Ñèñòåìà λ-èñ÷èñëåíèÿ áåç òèïîâ Äåíèñ Ìîñêâèí 27.02.2011 CS Club ïðè ÏÎÌÈ ÐÀÍ 1
  • 2. Íåôîðìàëüíîå ââåäåíèå (1)  λ-èñ÷èñëåíèè äâå îïåðàöèè: ïðèìåíåíèå è àáñòðàêöèÿ. Ïðèìåíåíèå (Application): FX Ïðîãðàìèñòñêèé âçãëÿä: F (àëãîðèòì) ïðèìåíÿåòñÿ ê X (âõîäíûå äàííûå). Äîïóñòèìî ñàìîïðèìåíåíèå F F. 2
  • 3. Íåôîðìàëüíîå ââåäåíèå (2) Àáñòðàêöèÿ (Abstraction): Ïóñòü M ≡ M[x] âûðàæåíèå, ñîäåðæàùåå x. Òîãäà λx. M îáîçíà÷àåò ôóíêöèþ x → M[x], òî åñòü êàæäîìó x ñîïîñòàâëÿåòñÿ M[x]. Åñëè x â M[x] îòñóòñòâóåò, òî λx. M êîíñòàíòíàÿ ôóíêöèÿ ñî çíà÷åíèåì M. 3
  • 4. Íåôîðìàëüíîå ââåäåíèå (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. 4
  • 5. Òåðìû (1) Ìíîæåñòâî λ-òåðìîâ Λ ñòðîèòñÿ èç ïåðåìåííûõ V = {x, y, z, . . .} c ïîìîùüþ ïðèìåíåíèÿ è àáñòðàêöèè: x∈V ⇒ x∈Λ M, N ∈ Λ ⇒ (M N) ∈ Λ M ∈ Λ, x ∈ V ⇒ (λx. M) ∈ Λ Â àáñòðàêòíîì ñèíòàêñèñå Λ ::= V | (Λ Λ) | (λV. Λ) Ñîãëàøåíèå. Ïðîèçâîëüíûå òåðìû ïèøåì çàãëàâíûìè áóê- âàìè, ïåðåìåííûå ñòðî÷íûìè. 5
  • 6. Òåðìû (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))) 6
  • 7. Òåðìû (3) Ñîãëàøåíèÿ: • Âíåøíèå ñêîáêè îïóñêàþòñÿ. • Ïðèìåíåíèå àññîöèàòèâíî âëåâî : FXY Z îáîçíà÷àåò (((F X) Y) Z) • Àáñòðàêöèÿ àññîöèàòèâíà âïðàâî : λx y z. M îáîçíà÷àåò (λx. (λy. (λz. (M)))) 7
  • 8. Òåðìû (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 8
  • 9. Ñâîáîäíûå è ñâÿçàííûå ïåðåìåííûå (1) Àáñòðàêöèÿ λx . M[x] ñâÿçûâàåò äîòîëå ñâîáîäíóþ ïåðåìåí- íóþ x â òåðìå M. Ïðèìåðû: (λy. (λx. x z) y) w Ïåðåìåííûå x è y ñâÿçàííûå, à z è w ñâîáîäíûå. (λx. (λx. x z) x) x Ïåðåìåííàÿ x ñâÿçàííàÿ (äâàæäû!) è ñâîáîäíàÿ, à z ñâîáîäíàÿ. 9
  • 10. Ñâîáîäíûå è ñâÿçàííûå ïåðåìåííûå (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}. 10
  • 11. Ñâîáîäíûå è ñâÿçàííûå ïåðåìåííûå (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). 11
  • 12. Ôóíêöèè íåñêîëüêèõ ïåðåìåííûõ, êàððèðîâàíèå Øîíôèíêåëü (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). 12
  • 13. Òîæäåñòâåííîå ðàâåíñòâî òåðìîâ Èìåíà ñâÿçàííûõ ïåðåìåííûõ íå âàæíû. Ïåðåèìåíóåì 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. 13
  • 14. Ïîäñòàíîâêà (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 14
  • 15. Ïîäñòàíîâêà (2) Íåïðèÿòíîñòü: (λy. x y)[x := y] (y ∈ FV(N) â ÷åòâ¼ðòîì ïðàâèëå). Ñîãëàøåíèå Áàðåíäðåãòà: Èìåíà ñâÿçàííûõ ïåðåìåííûõ âñåãäà áóäåì âûáèðàòü òàê, ÷òîáû îíè îòëè÷àëèñü îò ñâî- áîäíûõ ïåðåìåííûõ â òåðìå (òåðìàõ). Íàïðèìåð, âìåñòî y(λx y. x y z) áóäåì ïèñàòü y(λx y . x y z) Òîãäà ìîæíî èñïîëüçîâàòü ïîäñòàíîâêó áåç îãîâîðêè î ñâî- áîäíûõ è ñâÿçàííûõ ïåðåìåííûõ. 15
  • 16. Ëåììà ïîäñòàíîâêè Ëåììà ïîäñòàíîâêè. Ïóñòü 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). 16
  • 17. Èç Ïèðñà Äîêàçàòåëüñòâà ïðîãðàìì íàñòîëüêî ñêó÷íû, ÷òî ñîöèàëü- íûå ìåõàíèçìû ìàòåìàòèêè íà íèõ íå ðàáîòàþò. Ðè÷àðä Äå Ìèëëî, Ðè÷àðä Ëèïòîí è Àëàí Ïåðëèñ, 1979 ...Ïîýòîìó ïðè âåðèôèêàöèè íå ñòîèò ðàññ÷èòûâàòü íà ñîöè- àëüíûå ìåõàíèçìû. Äýâèä Äèëë, 1999 17
  • 18. Ëåììà ïîäñòàíîâêè (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? Çàâåðøèòå äîêàçàòåëüñòâî. 18
  • 19. Ïðåîáðàçîâàíèÿ (êîíâåðñèè): β • Îñíîâíàÿ ñõåìà àêñèîì äëÿ λ-èñ÷èñëåíèÿ: äëÿ ëþáûõ 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. 19
  • 20. Ïðåîáðàçîâàíèÿ (êîíâåðñèè): α è η Èíîãäà ââîäÿò: • ñõåìó àêñèîì α-ïðåîáðàçîâàíèÿ: λx . M = λy . M[x := y] (α) â ïðåäïîëîæåíèè, ÷òî y ∈ FV(M); • ñõåìó àêñèîì η-ïðåîáðàçîâàíèÿ: λx . M x = M (η) â ïðåäïîëîæåíèè, ÷òî x ∈ FV(M). 20
  • 21. Ïðåîáðàçîâàíèÿ (êîíâåðñèè): α Äëÿ ðàññóæäåíèé äîñòàòî÷íî ñîãëàøåíèÿ Áàðåíäðåãòà, íî äëÿ êîìïüþòåðíîé ðåàëèçàöèè α-ïðåîáðàçîâàíèå ïîëåçíî: Ïóñòü ω ≡ λ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. 21
  • 22. Ïðåîáðàçîâàíèÿ (êîíâåðñèè): α Èíäåêñû Äå Áðàóíà (De Bruijn) ïðåäñòàâëÿþò àëüòåðíà- òèâíûé ñïîñîá ïðåäñòàâëåíèÿ òåðìîâ. Ïåðåìåííûå íå èìåíóþòñÿ, à íóìåðóþòñÿ (èíäåêñèðóþòñÿ), èíäåêñ ïîêàçûâàåò, ñêîëüêî ëÿìáä íàçàä ïåðåìåííàÿ áûëà ñâÿçàíà: λx. (λy. x y) ↔ λ (λ 2 1) λx. x (λy. x y y) ↔ λ 1 (λ 2 1 1) Ïîäðîáíåå [ËÈÑÑ, Ïðèëîæåíèå C], [TAPL, 6] 22
  • 23. Ïðåîáðàçîâàíèÿ (êîíâåðñèè): η η-ïðåîáðàçîâàíèå îáåñïå÷èâàåò ïðèíöèï ýêñòåíñèîíàëüíî- ñòè : äâå ôóíêöèè ñ÷èòàþòñÿ ýêñòåíñèîíàëüíî ýêâèâàëåíò- íûìè, åñëè îíè äàþò îäèíàêîâûé ðåçóëüòàò ïðè îäèíàêîâîì ââîäå: ∀x : F x = G x. Âûáèðàÿ y ∈ FV(F) ∪ FV(G), ïîëó÷àåì (ξ, çàòåì η) Fy = Gy λy. F y = λy. G y F = G 23
  • 24. Òåðìîâûå óðàâíåíèÿ Ñõåìà β-ðåäóêöèè äà¼ò íàì âîçìîæíîñòü ðåøàòü ïðîñòåéøèå óðàâíåíèÿ íà òåðìû. Ïðèìåð: íàéòè 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? 24
  • 25. Òåîðåìà íåïîäâèæíîé òî÷êè (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) 25
  • 26. Òåîðåìà íåïîäâèæíîé òî÷êè (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 26
  • 27. Òåîðåìà íåïîäâèæíîé òî÷êè (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 27
  • 28. Äîìàøíåå çàäàíèå Äîêàæèòå, ÷òî 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). 28
  • 29. Ëèòåðàòóðà (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 29
  • 30. Ëèòåðàòóðà (2) I2FP ãë. 2 John Harrison, Introduction to Functional Programming ËÈÑÑ ãë. 2 Õ. Áàðåíäðåãò, Ëàìáäà-èñ÷èñëåíèå, åãî ñèíòàêñèñ è ñåìàí- òèêà, Ì:Ìèð, 1985 30