20110224 systems of_typed_lambda_calculi_moskvin_lecture02

30
λ

Transcript of 20110224 systems of_typed_lambda_calculi_moskvin_lecture02

Page 1: 20110224 systems of_typed_lambda_calculi_moskvin_lecture02

Ñèñòåìû òèïèçàöèè ëÿìáäà-èñ÷èñëåíèÿ

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

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

27.02.2011

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

1

Page 2: 20110224 systems of_typed_lambda_calculi_moskvin_lecture02

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

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

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

FX

Ïðîãðàìèñòñêèé âçãëÿä:

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

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

2

Page 3: 20110224 systems of_typed_lambda_calculi_moskvin_lecture02

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

Àáñòðàêöèÿ (Abstraction):

Ïóñòü M ≡M[x] âûðàæåíèå, ñîäåðæàùåå x. Òîãäà

λx.M

îáîçíà÷àåò ôóíêöèþ

x 7→M[x],

òî åñòü êàæäîìó x ñîïîñòàâëÿåòñÿ M[x].

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

ñî çíà÷åíèåì M.

3

Page 4: 20110224 systems of_typed_lambda_calculi_moskvin_lecture02

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

Page 5: 20110224 systems of_typed_lambda_calculi_moskvin_lecture02

Òåðìû (1)

Ìíîæåñòâî λ-òåðìîâ Λ ñòðîèòñÿ èç ïåðåìåííûõ V = x,y, z, . . .

c ïîìîùüþ ïðèìåíåíèÿ è àáñòðàêöèè:

x ∈ V ⇒ x ∈ ΛM,N ∈ Λ ⇒ (MN) ∈ Λ

M ∈ Λ, x ∈ V ⇒ (λx.M) ∈ Λ

 àáñòðàêòíîì ñèíòàêñèñå

Λ ::= V | (ΛΛ) | (λV.Λ)

Ñîãëàøåíèå. Ïðîèçâîëüíûå òåðìû ïèøåì çàãëàâíûìè áóê-

âàìè, ïåðåìåííûå ñòðî÷íûìè.

5

Page 6: 20110224 systems of_typed_lambda_calculi_moskvin_lecture02

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

Page 7: 20110224 systems of_typed_lambda_calculi_moskvin_lecture02

Òåðìû (3)

Ñîãëàøåíèÿ:

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

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

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

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

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

7

Page 8: 20110224 systems of_typed_lambda_calculi_moskvin_lecture02

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

Page 9: 20110224 systems of_typed_lambda_calculi_moskvin_lecture02

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

Page 10: 20110224 systems of_typed_lambda_calculi_moskvin_lecture02

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

Page 11: 20110224 systems of_typed_lambda_calculi_moskvin_lecture02

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

Page 12: 20110224 systems of_typed_lambda_calculi_moskvin_lecture02

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

Øîíôèíêåëü (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

Page 13: 20110224 systems of_typed_lambda_calculi_moskvin_lecture02

Òîæäåñòâåííîå ðàâåíñòâî òåðìîâ

Èìåíà ñâÿçàííûõ ïåðåìåííûõ íå âàæíû. Ïåðåèìåíóåì 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

Page 14: 20110224 systems of_typed_lambda_calculi_moskvin_lecture02

Ïîäñòàíîâêà (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

Page 15: 20110224 systems of_typed_lambda_calculi_moskvin_lecture02

Ïîäñòàíîâêà (2)

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

Ñîãëàøåíèå Áàðåíäðåãòà: Èìåíà ñâÿçàííûõ ïåðåìåííûõ

âñåãäà áóäåì âûáèðàòü òàê, ÷òîáû îíè îòëè÷àëèñü îò ñâî-

áîäíûõ ïåðåìåííûõ â òåðìå (òåðìàõ).

Íàïðèìåð, âìåñòî

y(λxy. xy z)

áóäåì ïèñàòü

y(λxy ′. xy ′ z)

Òîãäà ìîæíî èñïîëüçîâàòü ïîäñòàíîâêó áåç îãîâîðêè î ñâî-

áîäíûõ è ñâÿçàííûõ ïåðåìåííûõ.

15

Page 16: 20110224 systems of_typed_lambda_calculi_moskvin_lecture02

Ëåììà ïîäñòàíîâêè

Ëåììà ïîäñòàíîâêè.

Ïóñòü 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

Page 17: 20110224 systems of_typed_lambda_calculi_moskvin_lecture02

Èç Ïèðñà

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

íûå ìåõàíèçìû ìàòåìàòèêè íà íèõ íå ðàáîòàþò.

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

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

àëüíûå ìåõàíèçìû.

Äýâèä Äèëë, 1999

17

Page 18: 20110224 systems of_typed_lambda_calculi_moskvin_lecture02

Ëåììà ïîäñòàíîâêè (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

Page 19: 20110224 systems of_typed_lambda_calculi_moskvin_lecture02

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

• Îñíîâíàÿ ñõåìà àêñèîì äëÿ λ-èñ÷èñëåíèÿ: äëÿ ëþáûõ

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

Page 20: 20110224 systems of_typed_lambda_calculi_moskvin_lecture02

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

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

• ñõåìó àêñèîì α-ïðåîáðàçîâàíèÿ:

λx .M = λy .M[x := y] (α)

â ïðåäïîëîæåíèè, ÷òî y 6∈ FV(M);

• ñõåìó àêñèîì η-ïðåîáðàçîâàíèÿ:

λx .Mx =M (η)

â ïðåäïîëîæåíèè, ÷òî x 6∈ FV(M).

20

Page 21: 20110224 systems of_typed_lambda_calculi_moskvin_lecture02

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

Äëÿ ðàññóæäåíèé äîñòàòî÷íî ñîãëàøåíèÿ Áàðåíäðåãòà, íî

äëÿ êîìïüþòåðíîé ðåàëèçàöèè α-ïðåîáðàçîâàíèå ïîëåçíî:

Ïóñòü ω ≡ λ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

Page 22: 20110224 systems of_typed_lambda_calculi_moskvin_lecture02

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

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

òèâíûé ñïîñîá ïðåäñòàâëåíèÿ òåðìîâ.

Ïåðåìåííûå íå èìåíóþòñÿ, à íóìåðóþòñÿ (èíäåêñèðóþòñÿ),

èíäåêñ ïîêàçûâàåò, ñêîëüêî ëÿìáä íàçàä ïåðåìåííàÿ áûëà

ñâÿçàíà:

λx. (λy. xy) ↔ λ (λ 2 1)

λx. x (λy. xyy) ↔ λ 1 (λ 2 1 1)

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

22

Page 23: 20110224 systems of_typed_lambda_calculi_moskvin_lecture02

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

η-ïðåîáðàçîâàíèå îáåñïå÷èâàåò ïðèíöèï ýêñòåíñèîíàëüíî-

ñòè: äâå ôóíêöèè ñ÷èòàþòñÿ ýêñòåíñèîíàëüíî ýêâèâàëåíò-

íûìè, åñëè îíè äàþò îäèíàêîâûé ðåçóëüòàò ïðè îäèíàêîâîì

ââîäå:

∀x : F x = Gx.

Âûáèðàÿ y 6∈ FV(F) ∪ FV(G), ïîëó÷àåì (ξ, çàòåì η)

F y = Gy

λy. F y = λy.Gy

F = G

23

Page 24: 20110224 systems of_typed_lambda_calculi_moskvin_lecture02

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

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

óðàâíåíèÿ íà òåðìû.

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

Page 25: 20110224 systems of_typed_lambda_calculi_moskvin_lecture02

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

Page 26: 20110224 systems of_typed_lambda_calculi_moskvin_lecture02

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

Page 27: 20110224 systems of_typed_lambda_calculi_moskvin_lecture02

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

Page 28: 20110224 systems of_typed_lambda_calculi_moskvin_lecture02

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

Äîêàæèòå,

÷òî S K K = I, B = S (K S)K.

÷òî ïðèìåíåíèå íåêîììóòàòèâíî è íåàññîöèàòèâíî.

Çàâåðøèòå äîêàçàòåëüñòâî ëåììû ïîäñòàíîâêè.

Ðåàëèçóéòå àëãîðèòì ïîäñòàíîâêè íà êàêîì-ëèáî ßÏ.

Ñêîíñòðóèðóéòå

¾ïîæèðàòåëü¿, òî åñòü òàêîé òåðì F, êîòîðûé äëÿ ëþáîãî

M îáåñïå÷èâàåò FM = F. òåðì F òàêèì îáðàçîì, ÷òîáû äëÿ ëþáîãî M âûïîëíÿëîñü

FM =MF.

òåðì F òàêèì îáðàçîì, ÷òîáû äëÿ ëþáûõ òåðìîâ M è N

âûïîëíÿëîñü FMN = NF (NMF).

28

Page 29: 20110224 systems of_typed_lambda_calculi_moskvin_lecture02

Ëèòåðàòóðà (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

Page 30: 20110224 systems of_typed_lambda_calculi_moskvin_lecture02

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

I2FP ãë. 2

John Harrison, Introduction to Functional Programming

ËÈÑÑ ãë. 2

Õ. Áàðåíäðåãò, Ëàìáäà-èñ÷èñëåíèå, åãî ñèíòàêñèñ è ñåìàí-

òèêà, Ì:Ìèð, 1985

30