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

What's hot

Ορόσημο Φροντιστήριο (Αθήνα). Βοήθημα μαθηματικών Α' λυκείου 2015 |
Ορόσημο Φροντιστήριο (Αθήνα). Βοήθημα μαθηματικών Α' λυκείου 2015 |Ορόσημο Φροντιστήριο (Αθήνα). Βοήθημα μαθηματικών Α' λυκείου 2015 |
Ορόσημο Φροντιστήριο (Αθήνα). Βοήθημα μαθηματικών Α' λυκείου 2015 |
Ορόσημο Φροντιστήριο (Αθήνα) Μέσης Εκπαίδευσης
 
Юрий Владимирович Матиясевич. Десятая проблема Гильберта. Решение и применени...
Юрий Владимирович Матиясевич. Десятая проблема Гильберта. Решение и применени...Юрий Владимирович Матиясевич. Десятая проблема Гильберта. Решение и применени...
Юрий Владимирович Матиясевич. Десятая проблема Гильберта. Решение и применени...Computer Science Club
 
Thi thử toán tĩnh gia 1 th 2012 lần 2 k ab
Thi thử toán tĩnh gia 1 th 2012 lần 2 k abThi thử toán tĩnh gia 1 th 2012 lần 2 k ab
Thi thử toán tĩnh gia 1 th 2012 lần 2 k abThế Giới Tinh Hoa
 
Tiet 30 phep tru phan thuc dai so
Tiet 30 phep tru phan thuc dai soTiet 30 phep tru phan thuc dai so
Tiet 30 phep tru phan thuc dai soduyanhh2
 
Kts c2-dai so boole
Kts c2-dai so booleKts c2-dai so boole
Kts c2-dai so boole
Wang Ruan
 
20080224 cryptography hirsch_lecture02
20080224 cryptography hirsch_lecture0220080224 cryptography hirsch_lecture02
20080224 cryptography hirsch_lecture02Computer Science Club
 
Модели монополистической конкуренции
Модели монополистической конкуренцииМодели монополистической конкуренции
Модели монополистической конкуренции
gaidar_fund
 
Da toan d
Da toan dDa toan d
Da toan d
Hung Ho
 
квадрат тэгшитгэл
квадрат тэгшитгэлквадрат тэгшитгэл
квадрат тэгшитгэлLhagvadorj_S
 

What's hot (12)

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

Viewers also liked

APP research by Distimo
APP research by DistimoAPP research by Distimo
APP research by Distimo
武挥 魏
 
UAs met ICT - samen sterker
UAs met ICT - samen sterkerUAs met ICT - samen sterker
UAs met ICT - samen sterker
HAN University of Applied Sciences
 
Resume
ResumeResume
Cuadro pni
Cuadro pniCuadro pni
Cuadro pni
Muñe Mosha
 
Misa navidad
Misa  navidadMisa  navidad
Misa navidad
Isabel Castro
 
Wmhd 2010
Wmhd 2010Wmhd 2010
Perka bkn nomor_19_tahun_2011pedoman_umum_penyusunan_kebutuhan_pegawai_negeri...
Perka bkn nomor_19_tahun_2011pedoman_umum_penyusunan_kebutuhan_pegawai_negeri...Perka bkn nomor_19_tahun_2011pedoman_umum_penyusunan_kebutuhan_pegawai_negeri...
Perka bkn nomor_19_tahun_2011pedoman_umum_penyusunan_kebutuhan_pegawai_negeri...
Nandang Sukmara
 
Seminar PPT - eMarketing - June 2013
Seminar PPT - eMarketing - June 2013Seminar PPT - eMarketing - June 2013
Seminar PPT - eMarketing - June 2013
Vasileios Balafas
 
DevOps with visual studio release management
DevOps with visual studio release managementDevOps with visual studio release management
DevOps with visual studio release management
Techorama
 
13. zagaynyi
13. zagaynyi13. zagaynyi
13. zagaynyi
Olena Ursu
 
แนะนำ web site ของผม My Web Site
แนะนำ web site ของผม My Web Site แนะนำ web site ของผม My Web Site
แนะนำ web site ของผม My Web Site
maruay songtanin
 
Resultados e programação atualizada no 4º Jimavi (22-10-2013)
Resultados e programação atualizada no 4º Jimavi (22-10-2013)Resultados e programação atualizada no 4º Jimavi (22-10-2013)
Resultados e programação atualizada no 4º Jimavi (22-10-2013)
esportealtovale
 

Viewers also liked (15)

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

More from Computer Science Club

20141223 kuznetsov distributed
20141223 kuznetsov distributed20141223 kuznetsov distributed
20141223 kuznetsov distributed
Computer Science Club
 
Computer Vision
Computer VisionComputer Vision
Computer Vision
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_lecture12Computer 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_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_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