20110224 systems of_typed_lambda_calculi_moskvin_lecture02
TRANSCRIPT
Ñèñòåìû òèïèçàöèè ëÿìáäà-èñ÷èñëåíèÿ
Ëåêöèÿ 1. Ñèñòåìà λ-èñ÷èñëåíèÿ áåç òèïîâ
Äåíèñ Ìîñêâèí
27.02.2011
CS Club ïðè ÏÎÌÈ ÐÀÍ
1
Íåôîðìàëüíîå ââåäåíèå (1)
 λ-èñ÷èñëåíèè äâå îïåðàöèè: ïðèìåíåíèå è àáñòðàêöèÿ.
Ïðèìåíåíèå (Application):
FX
Ïðîãðàìèñòñêèé âçãëÿä:
F (àëãîðèòì) ïðèìåíÿåòñÿ ê X (âõîäíûå äàííûå).
Äîïóñòèìî ñàìîïðèìåíåíèå F F.
2
Íåôîðìàëüíîå ââåäåíèå (2)
Àáñòðàêöèÿ (Abstraction):
Ïóñòü M ≡M[x] âûðàæåíèå, ñîäåðæàùåå x. Òîãäà
λx.M
îáîçíà÷àåò ôóíêöèþ
x 7→M[x],
òî åñòü êàæäîìó x ñîïîñòàâëÿåòñÿ M[x].
Åñëè x â M[x] îòñóòñòâóåò, òî λx.M êîíñòàíòíàÿ ôóíêöèÿ
ñî çíà÷åíèåì M.
3
Íåôîðìàëüíîå ââåäåíèå (3)
Ïðèìåíåíèå è àáñòðàêöèÿ ðàáîòàþò ñîâìåñòíî:
(λx. 2× x+ 1)︸ ︷︷ ︸F
42︸︷︷︸X
= 2× 42+ 1 (= 85).
Òî åñòü (λx. 2× x+ 1) 42 ïðèìåíåíèå ôóíêöèè x 7→ 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 ∈ Λ ⇒ (MN) ∈ Λ
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 îáîçíà÷àåò (((FX) Y)Z)
• Àáñòðàêöèÿ àññîöèàòèâíà âïðàâî:
λxy 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))) ≡ λzw. (λ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(MN) = FV(M) ∪ FV(N);
FV(λx.M) = FV(M) \ x.
Ìíîæåñòâî BV(T) ñâÿçàííûõ (bound) ïåðåìåííûõ :
BV(x) = ∅;
BV(MN) = 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 ≡ λxy. x; K∗ ≡ λxy.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))) = λxy z.ϕ(x,y, z)
Òîãäà
ΦXY 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;
(PQ)[x := N] ≡ (P[x := N]) (Q[x := N]);
(λy.P)[x := N] ≡ λy. (P[x := N]), y 6∈ FV(N);
(λx.P)[x := N] ≡ (λx.P).
Ïîäðàçóìåâàåòñÿ, ÷òî x 6≡ y.
Ïðèìåð:
((λx. (λx . x z) x) x)[x := N] ≡ (λx. (λx . x z) x)N
14
Ïîäñòàíîâêà (2)
Íåïðèÿòíîñòü: (λy. xy)[x := y] (y ∈ FV(N) â ÷åòâ¼ðòîì ïðàâèëå).
Ñîãëàøåíèå Áàðåíäðåãòà: Èìåíà ñâÿçàííûõ ïåðåìåííûõ
âñåãäà áóäåì âûáèðàòü òàê, ÷òîáû îíè îòëè÷àëèñü îò ñâî-
áîäíûõ ïåðåìåííûõ â òåðìå (òåðìàõ).
Íàïðèìåð, âìåñòî
y(λxy. xy z)
áóäåì ïèñàòü
y(λxy ′. xy ′ z)
Òîãäà ìîæíî èñïîëüçîâàòü ïîäñòàíîâêó áåç îãîâîðêè î ñâî-
áîäíûõ è ñâÿçàííûõ ïåðåìåííûõ.
15
Ëåììà ïîäñòàíîâêè
Ëåììà ïîäñòàíîâêè.
Ïóñòü M,N,L ∈ Λ. Ïðåäïîëîæèì x 6≡ y è x 6∈ 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 6∈ FV(L).
16
Èç Ïèðñà
Äîêàçàòåëüñòâà ïðîãðàìì íàñòîëüêî ñêó÷íû, ÷òî ñîöèàëü-
íûå ìåõàíèçìû ìàòåìàòèêè íà íèõ íå ðàáîòàþò.
Ðè÷àðä Äå Ìèëëî, Ðè÷àðä Ëèïòîí è Àëàí Ïåðëèñ, 1979
...Ïîýòîìó ïðè âåðèôèêàöèè íå ñòîèò ðàññ÷èòûâàòü íà ñîöè-
àëüíûå ìåõàíèçìû.
Äýâèä Äèëë, 1999
17
Ëåììà ïîäñòàíîâêè (2)
4. M = PQ. Èìååì IH: äëÿ P è Q ëåììà âåðíà.
(PQ)[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]])
= (PQ)[y := L][x := N[y := L]].
5. M = λz.P. Èìååì IH: äëÿ P ëåììà âåðíà.
I 5(a). z 6∈ 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]].
I 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 ′ ⇒ MZ =M ′Z; M =M ′ ⇒ ZM = ZM ′;
M =M ′ ⇒ λx.M = λx.M ′ (ïðàâèëî ξ).
• Åñëè M = N äîêàçóåìî â λ-èñ÷èñëåíèè, ïèøóò λ `M = N.
19
Ïðåîáðàçîâàíèÿ (êîíâåðñèè): α è η
Èíîãäà ââîäÿò:
• ñõåìó àêñèîì α-ïðåîáðàçîâàíèÿ:
λx .M = λy .M[x := y] (α)
â ïðåäïîëîæåíèè, ÷òî y 6∈ FV(M);
• ñõåìó àêñèîì η-ïðåîáðàçîâàíèÿ:
λx .Mx =M (η)
â ïðåäïîëîæåíèè, ÷òî x 6∈ 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. xy) ↔ λ (λ 2 1)
λx. x (λy. xyy) ↔ λ 1 (λ 2 1 1)
Ïîäðîáíåå [ËÈÑÑ, Ïðèëîæåíèå C], [TAPL, 6]
22
Ïðåîáðàçîâàíèÿ (êîíâåðñèè): η
η-ïðåîáðàçîâàíèå îáåñïå÷èâàåò ïðèíöèï ýêñòåíñèîíàëüíî-
ñòè: äâå ôóíêöèè ñ÷èòàþòñÿ ýêñòåíñèîíàëüíî ýêâèâàëåíò-
íûìè, åñëè îíè äàþò îäèíàêîâûé ðåçóëüòàò ïðè îäèíàêîâîì
ââîäå:
∀x : F x = Gx.
Âûáèðàÿ y 6∈ FV(F) ∪ FV(G), ïîëó÷àåì (ξ, çàòåì η)
F y = Gy
λy. F y = λy.Gy
F = G
23
Òåðìîâûå óðàâíåíèÿ
Ñõåìà β-ðåäóêöèè äà¼ò íàì âîçìîæíîñòü ðåøàòü ïðîñòåéøèå
óðàâíåíèÿ íà òåðìû.
Ïðèìåð: íàéòè F, òàêîé ÷òî ∀M,N,L λ ` FMNL =ML (NL).
FMNL =ML (NL)
FMN = λz.Mz (Nz)
FM = λy. λz.Mz (y z)
F = λxy z. x z (y z)
À åñëè óðàâíåíèå ðåêóðñèâíîå, íàïðèìåð, FM =MF?
24
Òåîðåìà íåïîäâèæíîé òî÷êè (1)
Òåîðåìà. Äëÿ ëþáîãî λ-òåðìà F ñóùåñòâóåò íåïîäâèæíàÿ
òî÷êà:
∀F ∈ Λ ∃X ∈ Λ λ ` FX = X
Äîê-âî. Ââåäåì W ≡ λx. F (x x) è X ≡WW. Òîãäà
X ≡WW ≡ (λx. F(x x))W = F (WW) ≡ FX
Òåîðåìà. Ñóùåñòâóåò êîìáèíàòîð íåïîäâèæíîé òî÷êè
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))︸ ︷︷ ︸Y F
) ≡
F(Y F)
25
Òåîðåìà íåïîäâèæíîé òî÷êè (2)
Y-êîìáèíàòîð ïîçâîëÿåò ââåñòè ðåêóðñèþ â λ-èñ÷èñëåíèå.
Ôàêòîðèàë ðåêóðñèâíî:
FAC = λn. IIF (ISZRO n) 1 (MULT n (FAC (PRED n)))
Ïåðåïèñûâàåì â âèäå
FAC = (λfn. IIF (ISZRO n) 1 (MULT n (f (PRED n))))FAC
Îòñþäà âèäíî, ÷òî FAC íåïîäâèæíàÿ òî÷êà äëÿ ôóíêöèè
F ≡ λfn. 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 îáåñïå÷èâàåò FM = F. òåðì F òàêèì îáðàçîì, ÷òîáû äëÿ ëþáîãî M âûïîëíÿëîñü
FM =MF.
òåðì F òàêèì îáðàçîì, ÷òîáû äëÿ ëþáûõ òåðìîâ M è N
âûïîëíÿëîñü FMN = NF (NMF).
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