Slide 1

Slide 1 text

ϥϜμܭࢉೖ໳ ܕษڧձ #2 2017/08/09

Slide 2

Slide 2 text

ࢀߟจݙ: TAPL

Slide 3

Slide 3 text

ϥϜμܭࢉ • ͢΂ͯͷܭࢉ͕ؔ਺ఆٛͱؔ਺ద༻ʹؼண͞ΕΔମܥ • ߏจ͸ɺม਺ɺϥϜμந৅ (ແ໊ؔ਺)ɺؔ਺ద༻ͷ
 3ͭͷ߲ͷΈ͔Βߏ੒͞ΕΔ • ؔ਺ܕݴޠͷΞηϯϒϦͱݺ͹ΕͯΔΒ͍͠ • ࠓճ͸ܕແ͠ϥϜμܭࢉΛઆ໌͠·͢
 (୯७ܕ෇͖ϥϜμܭࢉ͸࣍ճ……ʁ)

Slide 4

Slide 4 text

t ::= x λx. t t t ม਺ ϥϜμந৅ ؔ਺ద༻ λx. λy. x (λz. x z) y ྫ:

Slide 5

Slide 5 text

Q ਅِ஋ͱ͔਺஋ͱ͔͕ແ͍……ʁ

Slide 6

Slide 6 text

Q ਅِ஋ͱ͔਺஋ͱ͔͕ແ͍……ʁ A ϥϜμந৅Ͱදݱ͢Ε͹͍͍͡Όͳ͍

Slide 7

Slide 7 text

ਅِ஋ͷදݱ tru = λt. λf. t fls = λt. λf. f → true ͱΈͳͤΔ → false ͱΈͳͤΔ

Slide 8

Slide 8 text

ྫ͑͹ if ࣜͬΆ͍ϥϜμந৅Λ͜ͷΑ͏ʹఆٛͰ͖Δ test = λl. λm. λn. l m n e.g. test t v w 
 t ͕ tru ͷ࣌ v Λɺfls ͷ࣌ w Λฦ͢

Slide 9

Slide 9 text

ɹ test tru v w → (λl. λm. λn. l m n) tru v w → (λm. λn. tru m n) v w → (λn. tru v n) w → tru v w → (λt. λf. t) v w → (λf. v) w → v t = tru ͷ࣌ͷධՁͷྲྀΕ

Slide 10

Slide 10 text

੔਺஋ͷදݱ c0 = λs. λz. z c1 = λs. λz. s z c2 = λs. λz. s (s z) c3 = λs. λz. s (s (s z)) … → 0 → 1 → 2 → 3

Slide 11

Slide 11 text

plus = λm. λn. λs. λz. m s (n s z) ଍͠ࢉΛ͢ΔϥϜμந৅

Slide 12

Slide 12 text

ɹ plus c1 c3 → (λm. λn. λs. λz. m s (n s z)) c1 c3 → (λn. λs. λz. c1 s (n s z)) c3 → λs. λz. c1 s (c3 s z) → λs. λz. (λs’. λz’. s’ z’) s (c3 s z) → λs. λz. (λz’. s z’) (c3 s z) → λs. λz. s (c3 s z) → λs. λz. s ((λs’’. λz’’. s’’ (s’’ (s’’ z’’)) s z) → λs. λz. s ((λz’’. s (s (s z’’)) z) → λs. λz. s (s (s (s z))) → c4 ධՁͷྲྀΕ

Slide 13

Slide 13 text

β-؆໿ • [x → t2] t12 ͸ t12 தͷ x ͷࣗ༝ͳग़ݱΛ͢΂ͯ t2 Ͱஔ͖׵ ͑Δ͜ͱʹΑͬͯಘΒΕΔ߲ • ͭ·Γؔ਺ద༻ͷධՁ (λx. t12) t2 → [x → t2] t12

Slide 14

Slide 14 text

α-ม׵ • ม਺໊ΛҟͳΔม਺໊ʹม׵͢Δ͜ͱ • ม਺໊͸ॏཁͰ͸ͳ͍ͷͰม׵ޙ΋ಉҰͷ߲ͱͳΔ • ͨͩ͠ผͷม਺໊ͱ͔ͿΒͳ͍Α͏ʹม׵͠ͳ͍ͱ
 ҎԼͷྫͷΑ͏ʹม׵લޙͰҟͳͬͯ͠·͏ • ز͔ͭͷίϯύΠϥ͸ม਺ΛҰҙʹ͢ΔͨΊʹα-ม׵Λߦ͏ λx. x x → λy. y y λx. x y → λy. y y

Slide 15

Slide 15 text

߲ͷ໊ແ͠දݱ • ม਺໊͸ͳΜͰ΋ྑ͍ • ͦΕͳΒ࠷ॳ͔ΒҰҙʹͳΔදݱΛબ୒͢Ε͹ྑ͍ • ࣗવ਺ k ΛɺͦΕΛғΉ k ൪໨ͷ λ ʹΑͬͯଋറ͞ΕΔ ม਺ͱ͢Δ λx. x (λy. x y) → λ. 0 (λ. 1 0)

Slide 16

Slide 16 text

࣮૷ͯ͠Έͨ https://github.com/ktsn/lambda-calculus