2011/11/05 LL.




Coq/Gallina


    mzp /




            1
2011/11/05 LL.




Coq/Gallina


    mzp /




            2
@mzp /

LL

‣


         →


         3
Coq
        INRIA


OCaml




                4
LL   ?
Gallina : Coq




                5
(2011/09/17)
                 Coq    by

‣ http://www.slideshare.net/ltf14/
  coq-9306231
Q
    ...



                 6
(   )
(1)



Goal forall (A B C: Prop),
 (A -> B) -> (B -> C) -> A -> C.




                 8
SNS




 9
(2)



Goal forall A (xs : list A),
 reverse (reverse xs) = xs.



          1
      ?


                 10
(   )
‣        ↑

‣            ↑↑




    12
(1)




Goal forall A (xs : list A),
 reverse xs = reverse_iter [] xs.




                 13
(2)


    JSON    Base64



Goal forall (s : string),
 decode (encode s) = s.




                 14
‣        ?

‣            ?


    15
“      ”


                       Coq


    ‣                   OK
Goal forall A (xs : list A),
 reverse xs = reverse_iter [] xs.
                 16
CompCert
‣                        C

iZE Smart Desktop
‣   D-Bus JSON

Msgpack for OCaml
‣

OCamltter
‣   Twitter

‣   Base64

                    17
Coq

‣ http://www.iij-ii.co.jp/lab/techdoc/
  coqt/
Software Foundation
‣ http://proofcafe.org/sf/
Proof Cafe


                 18
Coq




      19

Gallinaによる証明駆動開発の魅力

Editor's Notes

  • #2 \n
  • #3 \n
  • #4 \n
  • #5 \n
  • #6 ・2008年の本家LLイベント『LL Future』で発表されてた。\n・レキシカルLLのそもそもの発端\n
  • #7 ・「プログラミングCoq」\n・発表がおわったあとの質問があった\n・これだ! と思ったので\n
  • #8 ・ 例での説明\n・Coqでの証明はコンパイルに相当する。つまりコンパイルを通ったら開発おわり\n
  • #9 \n
  • #10 \n
  • #11 \n
  • #12 ・ちょっと進むとでてくる例\n・ちょっとおもしろい\n・疑問がいっぱいでてきて、あんまり楽しめない\n
  • #13 \n
  • #14 ・この「重要な性質がある」というのが大事\n
  • #15 \n
  • #16 \n
  • #17 \n
  • #18 ・有限個で性質を保証できるように、工夫がいる\n
  • #19 \n
  • #20 \n
  • #21 \n
  • #22 \n