# HG changeset patch # User Yasutaka Higa # Date 1421933095 -32400 # Node ID 40344cc2c5908fb3f8e80afb11628606e2965477 # Parent 65391f6321a8791d3f9958d7e2b2bed702b6dd6a Add position by kono-teacher diff -r 65391f6321a8 -r 40344cc2c590 slide/slide.html --- a/slide/slide.html Thu Jan 22 10:49:27 2015 +0900 +++ b/slide/slide.html Thu Jan 22 22:24:55 2015 +0900 @@ -36,7 +36,7 @@ @@ -44,9 +44,8 @@ @@ -133,7 +132,7 @@
  • 集合, 論理, 関数, 自然演繹による証明
  • 型システム, Curry-Howard Isomorphism を通して Haskell, Agda で証明
  • Haskell : 自然演繹と lambda calculus
  • -
  • Agda : Data type に対する証明 (Product, Sum, List, Functor, Monad …)
  • +
  • Agda : Category, Data type の証明 (Product, Sum, List, Functor, Monad …)
  • Agda : SystemT を使った自然数に対する演算の証明
  • @@ -164,7 +163,7 @@
    -

    圏によるプログラムの形式化

    +

    圏によるプログラムの形式化 : Delta Monad

    @@ -184,7 +183,177 @@
    -

    学習コスト

    +

    ポジション(河野)

    +
    + + +
      +
    • 形式手法を学習するには
    • +
    • 形式手法とツール
    • +
    • 形式手法とワークフロー
    • +
    • 形式手法と証明
    • +
    • 形式手法の将来
    • +
    + + + +
    +
    + +
    +
    +
    +

    形式手法を学習するには

    +
    + + +
      +
    • 学習するには本や論文を読み、問題を一つ一つ解いていく必要がある +
        +
      • 長く手間がかかる作業
      • +
      • 一方でルールの適用なので誰がやっても結果は同じ
      • +
      • 難しいのはルールの適用から意味のある結果を得ること
      • +
      • そこが想像できないと「わからない」ということになる
      • +
      • わからないのではなくて、わかることに価値を見出せなくなる
      • +
      +
    • +
    + + + +
    +
    + +
    +
    +
    +

    形式手法とツール

    +
    + + +
      +
    • 実際の形式ツールを使うためには +
        +
      • どういうツールがあるのか調べる
      • +
      • 環境を作ってそのツールを理解する
      • +
      +
    • +
    • 使いこなすことでバグが取れたとして +
        +
      • その利益はどこにあるのか
      • +
      • 研究開発が速くなるのか, 質が良くなるのか
      • +
      +
    • +
    • 理解して使う必要がある
    • +
    + + + +
    +
    + +
    +
    +
    +

    形式手法とワークフロー

    +
    + + +
      +
    • 研究開発は分散版管理を用いて行なわれている +
        +
      • Pull Request, Project Management Tool などで研究状況を認識
      • +
      +
    • +
    • 分散版管理そのものは形式的に定義できると考えている +
        +
      • Delta Monad というものを提案している
      • +
      +
    • +
    • 学んで理解する教育手順そのものを研究室のワークフローとしたい +
        +
      • ツールを組み込んだワークフローが有効であることを示したい
      • +
      • 例) Pull Requeset 単位での model checking
      • +
      +
    • +
    + + + +
    +
    + +
    +
    +
    +

    形式手法と証明

    +
    + + +
      +
    • Agda は積極的に導入している +
        +
      • 時間がかかるので使いどころは限られる
      • +
      +
    • +
    • 形式手法を学んだり証明の見落しを調べるのに便利
    • +
    • 証明を研究開発の過程に組込むのは難しい +
        +
      • しかし方向性を示すのに用いることはできる
      • +
      +
    • +
    + + + +
    +
    + +
    +
    +
    +

    形式手法の将来

    +
    + + +
      +
    • 将来的にプログラムのかなりの部分は証明される +
        +
      • ライブラリもほとんど論文では証明が存在する
      • +
      • 形式手法で示すことは信頼性のにも繋がる
      • +
      • しかしプログラム全体に広めるのは時間がかかるしできるか不明
      • +
      +
    • +
    • 形式手法の基本を理解し、いくつかのツールを使える人材を企業に送りこむのが良い
    • +
    + + + +
    +
    + +
    +
    +
    +

    ポジション(比嘉)

    +
    + + +
      +
    • 講義などでつまづいたポイント
    • +
    • つまづきの解決策
    • +
    • どのような講義をするべきか?
    • +
    + + + +
    +
    + +
    +
    +
    +

    学習コスト

    @@ -201,10 +370,10 @@
    -
    +
    -

    つまづくポイント

    +

    つまづくポイント

    @@ -224,10 +393,10 @@
    -
    +
    -

    つまづきをどう解決するか

    +

    つまづきをどう解決するか

    @@ -251,10 +420,10 @@
    -
    +
    -

    他に講義に取りいれるもの?

    +

    他に講義に取りいれるもの?

    @@ -278,7 +447,7 @@
    -
    +

    データ構造 Delta の定義

    @@ -304,7 +473,7 @@
    -
    +

    Delta に対する Monad の instance 定義

    @@ -328,10 +497,10 @@
    -
    +
    -

    元のプログラムとプログラムの変更

    +

    元のプログラムとプログラムの変更

    @@ -342,7 +511,7 @@
    -
    +

    Delta によって記述されたプログラムの実行

    @@ -356,7 +525,7 @@
    -
    +

    Delta のメリット

    diff -r 65391f6321a8 -r 40344cc2c590 slide/slide.md --- a/slide/slide.md Thu Jan 22 10:49:27 2015 +0900 +++ b/slide/slide.md Thu Jan 22 22:24:55 2015 +0900 @@ -5,9 +5,8 @@ # Agenda * 大学ではどんなことをやっているか(講義, イベント, 研究) -* 講義などでつまづくポイント -* つまづきの解決策 -* どのような講義をするべきか? +* ポジション(河野) +* ポジション(比嘉) # 講義で使用している形式手法 * 仕様記述 @@ -33,7 +32,7 @@ * 集合, 論理, 関数, 自然演繹による証明 * 型システム, Curry-Howard Isomorphism を通して Haskell, Agda で証明 * Haskell : 自然演繹と lambda calculus -* Agda : Data type に対する証明 (Product, Sum, List, Functor, Monad ...) +* Agda : Category, Data type の証明 (Product, Sum, List, Functor, Monad ...) * Agda : SystemT を使った自然数に対する演算の証明 # Agda による証明を解説した例 @@ -42,13 +41,67 @@ * Agda で SystemT の Nat の加法の交換法則を解説 * 定義の解説にほとんどの時間を取られてしまう -# 圏によるプログラムの形式化 +# 圏によるプログラムの形式化 : Delta Monad * プログラムの変更を Monad で表す * プログラムの変更時に変更前のプログラムも残したまま変更する * 全てのバージョンのプログラムを同時に実行できる * デバッグやテストと組み合せることでバグを見付けたい * 実行系と検証系を同時に走らせることもできる +# ポジション(河野) +* 形式手法を学習するには +* 形式手法とツール +* 形式手法とワークフロー +* 形式手法と証明 +* 形式手法の将来 + +# 形式手法を学習するには +* 学習するには本や論文を読み、問題を一つ一つ解いていく必要がある + * 長く手間がかかる作業 + * 一方でルールの適用なので誰がやっても結果は同じ + * 難しいのはルールの適用から意味のある結果を得ること + * そこが想像できないと「わからない」ということになる + * わからないのではなくて、わかることに価値を見出せなくなる + +# 形式手法とツール +* 実際の形式ツールを使うためには + * どういうツールがあるのか調べる + * 環境を作ってそのツールを理解する +* 使いこなすことでバグが取れたとして + * その利益はどこにあるのか + * 研究開発が速くなるのか, 質が良くなるのか +* 理解して使う必要がある + +# 形式手法とワークフロー +* 研究開発は分散版管理を用いて行なわれている + * Pull Request, Project Management Tool などで研究状況を認識 +* 分散版管理そのものは形式的に定義できると考えている + * Delta Monad というものを提案している +* 学んで理解する教育手順そのものを研究室のワークフローとしたい + * ツールを組み込んだワークフローが有効であることを示したい + * 例) Pull Requeset 単位での model checking + +# 形式手法と証明 +* Agda は積極的に導入している + * 時間がかかるので使いどころは限られる +* 形式手法を学んだり証明の見落しを調べるのに便利 +* 証明を研究開発の過程に組込むのは難しい + * しかし方向性を示すのに用いることはできる + +# 形式手法の将来 +* 将来的にプログラムのかなりの部分は証明される + * ライブラリもほとんど論文では証明が存在する + * 形式手法で示すことは信頼性のにも繋がる + * しかしプログラム全体に広めるのは時間がかかるしできるか不明 +* 形式手法の基本を理解し、いくつかのツールを使える人材を企業に送りこむのが良い + + + +# ポジション(比嘉) +* 講義などでつまづいたポイント +* つまづきの解決策 +* どのような講義をするべきか? + # 学習コスト * 論理, 自然演繹 -> Haskell -> Agda * それぞれのステップに壁がある