# HG changeset patch # User Yasutaka Higa # Date 1424322892 -32400 # Node ID bcd56a757a1a3ae9fe1debf04a89d08f92e27f88 # Parent 751e83a23d820b0c65d8abad92bdad0f6dd0e247 Fix presentation diff -r 751e83a23d82 -r bcd56a757a1a presentation/slide.html --- a/presentation/slide.html Thu Feb 19 09:07:23 2015 +0900 +++ b/presentation/slide.html Thu Feb 19 14:14:52 2015 +0900 @@ -31,12 +31,12 @@
-

研究目的

+

研究目的 : プログラムの変更の形式化

@@ -58,7 +58,7 @@
-

研究目標

+

研究目的 : Monad を用いた変更の形式化

@@ -79,13 +79,13 @@
-

プログラムの変更の形式化

+

プログラムの変更の形式化

  • 形式手法とはソフトウェアの検証に数学や論理学を用いる手法
  • -
  • 論理と対応する lambda 計算を用いたプログラムの解析などがある
  • +
  • 論理と対応する lambda 計算を用いたプログラムの形式化などがある
  • Moggi らによれば圏論のMonad は関数とメタ計算を含む関数との対応
  • メタ計算として変更を定義することで形式的な定義を与える
  • 「過去の変更を全て保存する」メタ計算 Delta Monad を提案する
  • @@ -99,7 +99,7 @@
    -

    プログラムの定義

    +

    プログラムの定義

    @@ -194,7 +194,7 @@
      -
    • 関数の適用をメタ計算を行なう中置関数 >>= として定義
    • +
    • 関数の適用時にメタ計算を行なう中置関数 >>= として定義
    • return はメタ計算に値を対応させる関数
    @@ -273,7 +273,7 @@
    -

    異なるバージョンを同時に実行する

    +

    異なるバージョンを同時に実行する

    @@ -294,7 +294,7 @@
    -

    他の Monad との組み合せ

    +

    他の Monad との組み合せ

    @@ -302,6 +302,7 @@
  • Delta Monad 以外にもメタ計算は Monad として提供されている
  • 例外機構、ロギング、入出力など
  • 他の Monad と組み合せることにより変更に対する計算が定義できる
  • +
  • Delta Monad が他の Monad と組み合わせ可能であることは証明した
@@ -320,7 +321,7 @@
  • ログを取る Writer Monad と組み合せた numberCount の実行結果
  • -
    *Main> numberCountM 1000
    +
    *Main> numberCountM 10
     DeltaM (Delta (Writer (4, ["[1,2,3,4,5,6,7,8,9,10]",
                                "[2,3,5,7]",
                                "4"]))
    @@ -337,7 +338,7 @@
     
    -

    Delta による信頼性向上手法

    +

    Delta による信頼性向上

    @@ -360,14 +361,14 @@
    -

    まとめと課題

    +

    まとめと課題

    • メタ計算によってプログラムの変更を定義できた
    • メタ計算により信頼性の向上手法を提案できた
    • -
    • Monad であることを Agda によって示した
    • +
    • Delta Monad が Monad 則を満たすことを Agda によって示した
    • プログラムの変更を全て Delta Monad で記述できるか?
    • 形式的な視点からプログラムの変更とは?
        diff -r 751e83a23d82 -r bcd56a757a1a presentation/slide.md --- a/presentation/slide.md Thu Feb 19 09:07:23 2015 +0900 +++ b/presentation/slide.md Thu Feb 19 14:14:52 2015 +0900 @@ -3,14 +3,14 @@ profile : 琉球大学工学部
        情報工学科
        並列信頼研究室(河野研) lang: Japanese -# 研究目的 +# 研究目的 : プログラムの変更の形式化 * プログラムの信頼性を向上させる * 信頼性とはプログラムが正しく動く保証である * プログラムの信頼性はバグなどの原因で低下する * 信頼性が低下するきっかけにプログラムの変更がある * プログラムの変更を形式化することで信頼性を保証する -# 研究目標 +# 研究目的 : Monad を用いた変更の形式化 * Monad を用いてプログラムの変更を形式化する * プログラムにおける Monad はメタ計算を表現するために用いる * メタ計算とは計算を実現するための計算である @@ -20,7 +20,7 @@ # プログラムの変更の形式化 * 形式手法とはソフトウェアの検証に数学や論理学を用いる手法 -* 論理と対応する lambda 計算を用いたプログラムの解析などがある +* 論理と対応する lambda 計算を用いたプログラムの形式化などがある * Moggi らによれば圏論のMonad は関数とメタ計算を含む関数との対応 * メタ計算として変更を定義することで形式的な定義を与える * 「過去の変更を全て保存する」メタ計算 Delta Monad を提案する @@ -64,7 +64,7 @@ * 関数適用 : バージョンごとに関数適用する # Haskell における Monad の instance 定義 -* 関数の適用をメタ計算を行なう中置関数 ``>>=`` として定義 +* 関数の適用時にメタ計算を行なう中置関数 ``>>=`` として定義 * return はメタ計算に値を対応させる関数 ``` @@ -118,12 +118,13 @@ * Delta Monad 以外にもメタ計算は Monad として提供されている * 例外機構、ロギング、入出力など * 他の Monad と組み合せることにより変更に対する計算が定義できる +* Delta Monad が他の Monad と組み合わせ可能であることは証明した # Writer Monad と組み合せる * ログを取る Writer Monad と組み合せた numberCount の実行結果 ``` -*Main> numberCountM 1000 +*Main> numberCountM 10 DeltaM (Delta (Writer (4, ["[1,2,3,4,5,6,7,8,9,10]", "[2,3,5,7]", "4"])) @@ -132,7 +133,7 @@ "5"])))) ``` -# Delta による信頼性向上手法 +# Delta による信頼性向上 * 各トレースの比較によるデバッグ * 異なるバージョンの同時実行によるバージョン間互換 * 正常系と開発版を同時に実行できる @@ -142,7 +143,7 @@ # まとめと課題 * メタ計算によってプログラムの変更を定義できた * メタ計算により信頼性の向上手法を提案できた -* Monad であることを Agda によって示した +* Delta Monad が Monad 則を満たすことを Agda によって示した * プログラムの変更を全て Delta Monad で記述できるか? * 形式的な視点からプログラムの変更とは? * 同時実行は product, repository は colimit?