Ìîñêîâñêèé ôèçèêî-òåõíè÷åñêèé èíñòèòóò Ôàêóëüòåò èííîâàöèé è âûñîêèõ òåõíîëîãèé Ìàòåìàòè÷åñêàÿ ëîãèêà, âåñíà 2012 Ëÿìáäà-èñ÷èñëåíèå Ïðèâåäèòå ïðèìåð λ-òåðìà, ê êîòîðîìó ìîæíî ïðèìåíèòü β -ðåäóêöèþ òîëüêî ïîñëå íåêîòîðîãî ÷èñëà α-êîíâåðñèé. (Ïðè íåïîñðåäñòâåííîì ïðèìåíåíèè β -ðåäóêöèè äîëæåí ïîëó÷àòüñÿ íåêîððåêòíûé ðåçóëüòàò). 2. Ïðèâåäèòå ê íîðìàëüíîé ôîðìå λ-òåðì ((λa.(λb.ba)c)b)((λc.(cb))(λa.a)). 3. Ïðèâåäèòå ïðèìåð çàìêíóòîãî λ-òåðìà (êîìáèíàòîðà), íå èìåþùåãî íîðìàëüíîé ôîðìû. 4. Ïðèâåäèòå ïðèìåð çàìêíóòîãî λ-òåðìà, êîòîðûé ïðèâîäèòñÿ ê íîðìàëüíîé ôîðìå ïðè îäíîì ïîðÿäêå β -ðåäóêöèé, íî íå ïðèâîäèòñÿ ïðè äðóãîì ïîðÿäêå. 5. Îáîçíà÷èì Θ êîìáèíàòîð (λxy.y(xxy))(λxy.y(xxy)). Äîêàæèòå, ÷òî äëÿ ëþáîãî êîìáèíàòîðà F âûïîëíåíî ðàâåíñòâî ΘF = F (ΘF ) (ò.î., êîìáèíàòîð (ΘF ) ÿâëÿåòñÿ íåïîäâèæíîé òî÷êîé äëÿ F ). 6. Äîêàæèòå, ÷òî êîìáèíàòîð λf.(λx.f (xx))(λx.f (xx)) òîæå ÿâëÿåòñÿ êîìáèíàòîðîì íåïîäâèæíîé òî÷êè. 7. Îáîçíà÷èì ÷åðåç L êîìáèíàòîð 1. λabcdef ghijklmnopqstuvwxyzr.r(thisisaf ixedpointcombinator) Äîêàæèòå, ÷òî êîìáèíàòîð LLLLLLLLLLLLLLLLLLLLLLLLLL (ïðîèçâåäåíèå 26 êîïèé L) ÿâëÿåòñÿ êîìáèíàòîðîì íåïîäâèæíîé òî÷êè. Óêàçàíèå: Îáðàòèòå âíèìàíèå íà ïåðåìåííóþ r. Íóìåðàëàìè ×¼ð÷à äëÿ íàòóðàëüíûõ ÷èñåë 0, 1, 2, 3, . . . íàçûâàþòñÿ êîìáèíàòîðû 0 = λf x.x, 1 = λf x.f x, 2 = λf x.f (f x), 3 = λf x.f (f (f x)), . . . 8. 9. ò.å. Ïðèâåäèòå ê íîðìàëüíîé ôîðìå êîìáèíàòîðû (2 3) è (3 2). Íàéäèòå êîìáèíàòîð F , ÿâëÿþùèéñÿ íåïîäâèæíîé òî÷êîé êàæäîãî íóìåðàëà n, nF = F äëÿ âñåõ íàòóðàëüíûõ n. 10. Ïîñòðîéòå λ-òåðì F , äëÿ êîòîðîãî âûïîëíåíî ðàâåíñòâî F = xF (ãäå x ïåðåìåííàÿ). Ïðèâîäèòñÿ ëè äàííûé òåðì F ê íîðìàëüíîé ôîðìå? Ãîâîðÿò, ÷òî êîìáèíàòîð A ïðåäñòàâëÿåò ôóíêöèþ f : Nk → N, åñëè äëÿ ëþáûõ ÷èñåë n1 , . . . , nk êîìáèíàòîð (An1 n2 . . . nk ) ðàâåí íóìåðàëó ×¼ð÷à äëÿ ÷èñëà f (n1 , . . . , nk ), åñëè f (n1 , . . . , nk ) îïðåäåëåíî, è íå èìååò íîðìàëüíîé ôîðìû â ïðîòèâíîì ñëó÷àå. Ïîñòðîéòå êîìáèíàòîðû, êîòîðûå ïðåäñòàâëÿþò ñëåäóþùèå ôóíêöèè íàòóðàëüíûõ ÷èñåë: 11. 1 a) b) c) d) e) f) g) h) n 7→ n + 1; (n, m) 7→ n + m; (n, m) 7→ n · m; (n, m) 7→ nm (×åìó ïîëó÷èëîñü ðàâíî 00 ?); n 7→ (n + 3)2 ; (n, m)√7→ max{n, m}; n 7→ b√nc; n 7→ d n e. 12. Ïðèâåäèòå ê íîðìàëüíîé ôîðìå λ-òåðìû: a) (λxy.x(xxy))((λxy.x(xxy))(λxy.x(xy))), b) (λxy.x(xy))((λxy.x(xxxy))(λxy.x(xy))), c) (λxy.x(xy))(λxy.x(xxxy))(λxy.x(xy)). Ïîñòðîéòå êîìáèíàòîð äëèíû íå áîëåå 40, ÷èñëî ñèìâîëîâ â íîðìàëüíîé ôîðìå êîòîðîãî ïðåâûøàåò ÷èñëî ýëåêòðîíîâ â âèäèìîé ÷àñòè Âñåëåííîé. 14. Ïîñòðîéòå êîìáèíàòîðû, êîòîðûå ïðåäñòàâëÿþò ñëåäóþùèå ôóíêöèè íàòóðàëüíûõ ÷èñåë: n − 1, åñëè n ≥ 1, a) n 7→ 0, åñëè n = 0, b) (n, m) 7→ max{n − m, 0}. 13. 15. ÷òî Îáîçíà÷àåì False = λxy.y è True = λxy.x. Ïîñòðîéòå êîìáèíàòîð IsZero òàêîé, True, åñëè n = 0, IsZero(n) = False, èíà÷å. Ïîñòðîéòå êîìáèíàòîðû, êîòîðûå ïðåäñòàâëÿþò ñëåäóþùèå ôóíêöèè íàòóðàëüíûõ ÷èñåë: 16. a) b) c) d) n 7→ n! (ôàêòîðèàë ÷èñëà), n 7→ dlog ne, îñòàòîê îò äåëåíèÿ n íà m, íåïîëíîå ÷àñòíîå îò äåëåíèÿ n íà m. Ïðÿìûì âû÷èñëåíèåì ïðèâåäèòå ê íîðìàëüíîé ôîðìå Fac 2 è Fac 3, ãäå Fac êîìáèíàòîð, ïðåäñòàâëÿþùèé ôóíêöèþ n! 18. Ïîñòðîéòå êîìáèíàòîðû, êîòîðûå ïî íóìåðàëó ×¼ð÷à äëÿ ÷èñëà n âû÷èñëÿþò íóìåðàë ×¼ð÷à äëÿ ÷èñëà ϕn , ãäå 0, åñëè n = 0, 1, åñëè n = 1, (÷èñëà Ôèáîíà÷÷è) a) ϕn = ϕ + ϕ , åñëè n > 1; n−2 n−1 0, åñëè n = 0, 1, åñëè n = 1, (÷èñëà Ôèáîíà÷÷è ïî ìîäóëþ 3) b) ϕn = ϕn−1 + ϕn−2 mod 3, åñëè n ≥ 2; 17. 2 c) ϕn = d) ϕn = 19. 1 åñëè n = 0, 0 åñëè n = 1, 2ϕn−1 + ϕn−2 åñëè n > 1; 2 åñëè n = 0, 3 åñëè n = 1, ϕn−1 · ϕn−2 åñëè n > 1. Ïîñòðîéòå êîìáèíàòîð, ïðåäñòàâëÿþùèé â λ-èñ÷èñëåíèè ôóíêöèþ ÷¼òíîñòè: True, åñëè n ÷¼òíî, Even(n) = False, åñëè n íå÷¼òíî. Ïîñòðîéòå êîìáèíàòîðû GT, LE, EQ òàêèå, ÷òî True, åñëè n > m, a) GT n m = False, èíà÷å; True, åñëè n ≤ m, b) LE n m = False, èíà÷å; True, åñëè n = m, c) EQ n m = False, èíà÷å. 20. Ïîñòðîéòå êîìáèíàòîð choose, êîòîðûé ïðåäñòàâëÿåò ôóíêöèþ äâóõ àðãóìåíòîâ (÷èñëî ñî÷åòàíèé èç n ïî k ), îïðåäåë¼ííóþ äëÿ n ≥ k . Íå çàáóäüòå ïðîâåðèòü, ÷òî ïðè n < k òåðì (choose n k) íå èìååò íîðìàëüíîé ôîðìû. 22. Ïîñòðîéòå êîìáèíàòîð Prime òàêîé, ÷òî True, åñëè ÷èñëî n ïðîñòîå, Prime n = False, èíà÷å 21. Cnk (ïðîâåðêà ÷èñëà íà ïðîñòîòó). 23. Ïîñòðîéòå êîìáèíàòîð NthPrime, êîòîðûé ïî íóìåðàëó ×¼ð÷à n íàõîäèò n-îå ïðîñòîå ÷èñëî. (Äëÿ îïðåäåë¼ííîñòè ïîòðåáóåì, ÷òîáû NthPrime 0 = 1.) 24. Íàéäèòå êàêóþ-íèáóäü íåïîäâèæíóþ òî÷êó êîìáèíàòîðà ïðèáàâëåíèÿ åäèíèöû Inc. Åñòü ëè ó íå¼ íîðìàëüíàÿ ôîðìà? 25.  ñòðåëî÷íîé íîòàöèè Êíóòà äëÿ ïîëîæèòåëüíûõ öåëûõ ÷èñåë a, b èñïîëüçóþòñÿ îáîçíà÷åíèÿ a ↑ b = ab (a â ñòåïåíè b), a ↑↑ b = a ↑ (a ↑ (. . . ↑ a) . . .), {z } | b ðàç a ↑↑ . . . ↑ b = a ↑↑ . . . ↑(a ↑↑ . . . ↑(. . . ↑↑ . . . ↑ a) . . .); | {z } | {z } | {z } | {z } n n−1 n−1 n−1 | {z } a âñòðå÷àåòñÿ b ðàç n-ûì ÷èñëîì Àêêåðìàíà íàçûâàþò Ackn = n ↑↑ . . . ↑ n. Âû÷èñëèòå ïåðâûå òðè ÷èñëà | {z } n Àêêåðìàíà. Ïîñòðîéòå êîìáèíàòîð Ack, êîòîðûé ïðåîáðàçóåò íóìåðàë n (äëÿ n > 0) â íóìåðàë, âûðàæàþùèé n-îå ÷èñëî Àêêåðìàíà. 3