Slide 1

Slide 1 text

෼ Ͱ Θ ͔ Δ C u r r y – H o w a rd ಉ ܕ ର Ԡ 2 0 1 7 - 0 5 - 2 8 ୈ 6 ճ O U CC LT ձ

Slide 2

Slide 2 text

͓ લ ͸ ୭ ͩ susisu / @susisu2413 • JavaScript • Haskell • きんいろモザ イク

Slide 3

Slide 3 text

࿩͢͜ͱ ୯७ܕ෇͖ϥϜμܭࢉ ࣗવԋ៷ʢ໋୊࿦ཧʣ Curry–HowardಉܕରԠ System F ࿩ͤͳ͍͜ͱʢ࣌ؒతʹʣ w ϥϜμܭࢉͷৄࡉ w ड़ޠ࿦ཧ w ݹయ࿦ཧͱ௚؍ओٛ࿦ཧ

Slide 4

Slide 4 text

୯ ७ ܕ ෇ ͖ ϥϜ μ ܭ ࢉ

Slide 5

Slide 5 text

୯ ७ ܕ ෇ ͖ ϥϜ μ ܭ ࢉ w ϥϜμܭࢉʜ୯७ͳϓϩάϥϛϯάݴޠΈ͍ͨͳͷ w ม਺ w ؔ਺ w ؔ਺ద༻ͷͭͷΈ w ؔ਺ܕϓϩάϥϛϯάͷཧ࿦తͳج൫ w ୯७ܕ෇͖ϥϜμܭࢉ͸ͦΕʹܕΛ͚ͭͨ΋ͷͷ಺ɺ ࠷΋؆୯ͳ΋ͷ

Slide 6

Slide 6 text

୯ ७ ܕ ෇ ͖ ϥϜ μ ܭ ࢉ t ::= -- ߲ x -- ม਺ λx: T. t -- λந৅ʢؔ਺ʣ t t -- ؔ਺ద༻ T ::= -- ܕ X -- ܕม਺ T → T -- ؔ਺ͷܕ

Slide 7

Slide 7 text

୯ ७ ܕ ෇ ͖ ϥϜ μ ܭ ࢉ w ܕ෇͚نଇ͸࣍ͷΑ͏ͳܗͰॻ͘ ʮલఏ͕͢΂ͯ੒Γཱͭͱ͖ɺ݁࿦΋੒Γཱͭʯ w લఏ΍݁࿦͸࣍ͷΑ͏ͳܗࣜ ʮจ຺ΓͷԼͰɺ߲ t͸Tͱ͍͏ܕΛ΋ͭʯ ৈଥ (0 ڎΤࣣ) ٗ໼ ` t : T

Slide 8

Slide 8 text

୯ ७ ܕ ෇ ͖ ϥϜ μ ܭ ࢉ x : A 2 ` x : A , x : A ` t : B ` x : A. t : A ! B ` t1 : A ! B ` t2 : A ` t1 t2 : B

Slide 9

Slide 9 text

ࣗ વ ԋ ៷

Slide 10

Slide 10 text

ࣗ વ ԋ ៷ w ࿦ཧֶͷܗࣜମܥͷͻͱͭ w ࿦ཧతʹਖ਼໋͍͠୊ʢఆཧʣ จ຺ʹΑΒͣ߃ʹਅͳ໋୊ w ܗࣜମܥ͸ͦͷΑ͏ͳఆཧΛಋͨ͘Ίͷ΋ͷ w ͳΜ͔ࣗવͬΆ͍ʢਓ͕ؒߦ͏ਪ࿦ʹࣅ͍ͯΔʣ w ͜ͷεϥΠυͰ͸໋୊࿦ཧͷൣғΈߟ͑·͢

Slide 11

Slide 11 text

ࣗ વ ԋ ៷ P ::= -- ໋୊ X -- ໋୊ม਺ P → P -- ࿦ཧแؚʮͳΒ͹ʯ P ∧ P -- ࿦ཧੵʮ͔ͭʯ P ∨ P -- ࿦ཧ࿨ʮ·ͨ͸ʯ ¬P -- ൱ఆ

Slide 12

Slide 12 text

ࣗ વ ԋ ៷ w ಋग़نଇ͸࣍ͷΑ͏ͳܗͰॻ͘ ʮલఏ͕͢΂ͯ੒Γཱͭͱ͖ɺ݁࿦΋੒Γཱͭʯ w લఏ΍݁࿦͸࣍ͷΑ͏ͳܗࣜ ʮจ຺ΓͷԼͰɺP͸߃ʹਅʯ ৈଥ (0 ڎΤࣣ) ٗ໼ ` P

Slide 13

Slide 13 text

ࣗ વ ԋ ៷ A 2 ` A , A ` B ` A ! B ` A ! B ` A ` B

Slide 14

Slide 14 text

ࣗ વ ԋ ៷ A 2 ` A , A ` B ` A ! B ` A ! B ` A ` B x : A 2 ` x : A , x : A ` t : B ` x : A. t : A ! B ` t1 : A ! B ` t2 : A ` t1 t2 : B ୯ ७ ܕ ෇ ͖ ϥϜ μ ܭ ࢉ

Slide 15

Slide 15 text

ࣗ વ ԋ ៷ A 2 ` A , A ` B ` A ! B ` A ! B ` A ` B x : A 2 ` x : A , x : A ` t : B ` x : A. t : A ! B ` t1 : A ! B ` t2 : A ` t1 t2 : B ୯ ७ ܕ ෇ ͖ ϥϜ μ ܭ ࢉ ໋୊㱻ܕ

Slide 16

Slide 16 text

ࣗ વ ԋ ៷ A 2 ` A , A ` B ` A ! B ` A ! B ` A ` B x : A 2 ` x : A , x : A ` t : B ` x : A. t : A ! B ` t1 : A ! B ` t2 : A ` t1 t2 : B ୯ ७ ܕ ෇ ͖ ϥϜ μ ܭ ࢉ Curry–Howard ಉܕରԠ

Slide 17

Slide 17 text

ࣗ વ ԋ ៷ A 2 ` A , A ` B ` A ! B ` A ! B ` A ` B x : A 2 ` x : A , x : A ` t : B ` x : A. t : A ! B ` t1 : A ! B ` t2 : A ` t1 t2 : B ୯ ७ ܕ ෇ ͖ ϥϜ μ ܭ ࢉ ͱΜ͔ͭDJ

Slide 18

Slide 18 text

C u r r y – H o w a rd ಉ ܕ ର Ԡ ଞͷ࿦ཧԋࢉࢠʹؔͯ͠ରԠΛߟ͑Δ͜ͱ΋Ͱ͖Δ ࣗ વ ԋ ៷ ୯ ७ ܕ ෇ ͖ ϥϜ μ ܭ ࢉ ໋ ୊ ܕ ఆ ཧ ߲ ͕ ଘ ࡏ ͢ Δ ܕ ࿦ ཧ แ ؚ → ؔ ਺ ͷ ܕ →

Slide 19

Slide 19 text

C u r r y – H o w a rd ಉ ܕ ର Ԡ ϥϜμܭࢉͰɺ͋Δܕͷ߲͕ଘࡏ͢Δ͜ͱΛࣔ͢ ରԠ͢Δ໋୊ʢఆཧʣͷূ໌ → ূ໌ࢧԉγεςϜʢ$PRͳͲʣ ϥϜμܭࢉͷ߲ʢϓϩάϥϜʣΛॻ͘ ίϯϐϡʔλʔ͕ܕΛ֬ೝ ఆཧ͕ূ໌Ͱ͖ͨ

Slide 20

Slide 20 text

Sy s t e m F

Slide 21

Slide 21 text

Sy s t e m F w ֊ͷܕ෇͖ϥϜμܭࢉ ୯७ܕ෇͖ϥϜμܭࢉܕʹؔ͢Δந৅ w ໋୊࿦ཧͷൣғΛશͯΧόʔͰ͖Δ ܕʹؔ͢Δந৅Ͱ࿦ཧԋࢉࢠΛΤϯίʔυՄೳ

Slide 22

Slide 22 text

Sy s t e m F t ::= -- ߲ x -- ม਺ λx: T. t -- λந৅ʢؔ਺ʣ t t -- ؔ਺ద༻ ΛX. t -- ܕʹؔ͢Δந৅ʢؔ਺ʣ t [T] -- ܕ΁ͷద༻ T ::= -- ܕ X -- ܕม਺ T → T -- ௨ৗͷؔ਺ͷܕ ∀X. T -- શশྔԽ͞Εͨܕ

Slide 23

Slide 23 text

Sy s t e m F , X ` t : A ` ⇤X. t : 8X. A ` t : 8X. A ` t [B] : [X 7! B]A

Slide 24

Slide 24 text

Sy s t e m F ֤छ࿦ཧԋࢉࢠͷΤϯίʔυ͸ҎԼͷͱ͓Γ A ^ B ⌘ 8X. ((A ! B ! X) ! X) ! X A _ B ⌘ 8X. ((A ! X) ! (B ! X) ! X) ! X ? ⌘ 8X. X ¬A ⌘ A ! ? 9X. A ⌘ 8Y. (8X. A ! Y ) ! Y

Slide 25

Slide 25 text

Sy s t e m F w ূ໌ࢧԉγεςϜͬΆ͍ͷΛ࣮૷ͯ͠Έͨ IUUQTHJUIVCDPNTVTJTVTZTUFNGKTJNQM w σϞʢ͕࣌ؒ͋Ε͹ʣʢͨͿΜ࣌ؒͳ͍ʣ

Slide 26

Slide 26 text

· ͱ Ί

Slide 27

Slide 27 text

· ͱ Ί w Curry–HowardಉܕରԠ͸࿦ཧֶͱϓϩάϥϜͷؒͷ ରԠؔ܎ w System FΛ࣮૷͢Δͷָ͔ͬͨ͠ʢंྠͷ࠶ൃ໌ʣ ࣗ વ ԋ ៷ ܕ ෇ ͖ ϥϜ μ ܭ ࢉ ໋ ୊ ܕ ఆ ཧ ߲ ͕ ଘ ࡏ ͢ Δ ܕ

Slide 28

Slide 28 text

λ→ λ2 λω λ ω λP λPω λP2 λC

Slide 29

Slide 29 text

λ→ λ2 λω λ ω λP λPω λP2 λC ୯७ܕ෇͖ϥϜμܭࢉ System F System Fω (Haskell) CoC (Coq)

Slide 30

Slide 30 text

λ→ λ2 λω λ ω λP λPω λP2 λC ୯७ܕ෇͖ϥϜμܭࢉ System F System Fω (Haskell) CoC (Coq) :zenzenyowai:

Slide 31

Slide 31 text

ࢀ ߟ จ ݙ • ஜ೾େֶͷܭࢉ࿦ཧֶͷߨٛࢿྉ http://www.cs.tsukuba.ac.jp/~kam/complogic/ • ޒेཛྷ ३, ϓϩάϥϛϯάݴޠͷجૅ֓೦, αΠΤϯε ࣾ, 2011 • B. C. Pierce, Types and Programming Languages, The MIT press, 2002 ʢ೔ຊޠ༁΋͋Δʣ