Slide 1

Slide 1 text

Coq Ͱূ໌෇͖ Web ΞϓϦΛ࡞Δ @amutake @amutake_s

Slide 2

Slide 2 text

Coq? • ఆཧূ໌ࢧԉܥͷͻͱͭ • ؔ਺Λॻ͍ͯɺͦͷؔ਺ͷੑ࣭Λূ໌Ͱ͖Δ • ྫ: forall l : list A, reverse (reverse l) = l. • Coq ୯ମͰϓϩάϥϜͷ࣮ߦ͸Ͱ͖ͳ͍͕ɺ OCaml, Haskell, Scheme ʹม׵Մೳ

Slide 3

Slide 3 text

OCaml, Haskell, Scheme ʹม׵Մೳ

Slide 4

Slide 4 text

→ Coq Ͱ΋ Web ΞϓϦ͕ ࡞ΕΔʂ(΍ͬͨʔʂ)

Slide 5

Slide 5 text

࡞Γํᶃ • ෭࡞༻Λىؔ͜͢਺͸ Coq Ͱ͸ఆٛͰ͖ͳ͍ͷͰɺ७ਮͳ ෦෼͚ͩΛ Coq Ͱ࡞ͬͯɺ͏·͍͜ͱ OCaml ͱ࿈ܞ͢Δ

Slide 6

Slide 6 text

࡞Γํᶄ • Coq ͷ΄͏͸ Request -> Response ͷؔ ਺Λ࡞Δ͚ͩ

Slide 7

Slide 7 text

࡞Γํᶅ (Coq Λ஌͍ͬͯΔਓ޲͚) • Ͳ͏ͯ͠΋෭࡞༻Λىؔ͜͢਺͕࢖͍͍ͨ৔ ߹͸ Parameter (ܕ͚ͩͰ࣮ମ͕ະఆٛͳ஋) ͳͲΛ࢖͍ɺOCaml ͷؔ਺Λࢦఆ͢Δ Parameter read_file : string -> option string. Extract Constant read_file => “MyModule.read_file”.

Slide 8

Slide 8 text

࣮༻ྫ (clarus/coq-chick-blog) • https://github.com/clarus/coq-chick-blog • Coq ੡ϒϩάΤϯδϯ • http://coq-blog.clarus.me/ ← ͜ͷϒϩά Coq (͔Βม׵͞Εͨ OCaml) Ͱಈ͍ͯΔ

Slide 9

Slide 9 text

Ͳ͜Λূ໌͢Δͷ • ূ໌͍ͨ͠ਓ͸ͳΜ͔ద౰ʹ͢Ε͹͍͍Μ͡Ό ͳ͍Ͱ͠ΐ͏͔ • clarus/coq-chick-blog Ͱ͸ɺʮϩάΠϯ͠ ͍ͯͳ͍৔߹͸هࣄΛฤूͰ͖ͳ͍ʯΈͨ ͍ͳ͜ͱΛূ໌͍ͯ͠Δ

Slide 10

Slide 10 text

ࠓޙͷ՝୊ɾ·ͱΊ • ϥΠϒϥϦԽ͍ͨ͠ • OCaml ͷ෦෼͸͍͍ͩͨڞ௨ • Request -> Response ͚ͩॻ͚͹ಈ͘Α͏ʹ͍ͨ͠ • Coq ָ͍͠ͷͰ࢖ͬͯΈ͍ͯͩ͘͞ʂ • ͓͢͢Ίॳ৺ऀ޲͚: http://proofcafe.org/sf/

Slide 11

Slide 11 text

༨ஊ: @clarus ͞ΜͭΑ͍ • Coq Λ Real World Ͱ࢖͑ΔΑ͏ʹ͠Α͏ͱ͍ͯ͠Δਓ (Inria ͷ PhD student) • ࠷ۙ͸ io γϦʔζ (io, io-system, io-system-ocaml, …) Λ࡞͍ͬͯΔ • Coq ্Ͱ IO Effect Λදݱ͢ΔϥΠϒϥϦ܈ (coq-chick-blog ͷதͰ ࢖͍ͬͯΔ IO ෦෼ΛϥΠϒϥϦͱͯ͠੾Γग़ͨ͠΋ͷͬΆ͍) • OCaml ίʔυΛॻ͔ͣʹ Coq Λม׵ͯͦ͠ͷ··࣮ߦͰ͖ͨΓ • 3೔લ͸ Coq ͷόάΛ͍ͭͯ೚ҙͷ໋୊Λূ໌Ͱ͖ΔϥΠϒϥϦΛެ։͠ ͯͨ