view slide/slide.html @ 51:6972867ea8f4

Mini fixes
author Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
date Wed, 21 Jan 2015 17:26:23 +0900
parents ba3003b56804
children 780eab85e724
line wrap: on
line source

<!DOCTYPE HTML>

<html lang="Japanese">
<head>
	<title>形式手法を広めるには</title>
	<meta charset="UTF-8">
	<meta name="viewport" content="width=1274, user-scalable=no">
	<meta name="generator" content="Slide Show (S9)">
	<meta name="author" content="河野真治 <br> 比嘉健太">
	<link rel="stylesheet" href="themes/ribbon/styles/style.css">
	<link rel="stylesheet" href="slide.css">
</head>
<body class="list">
	<header class="caption">
		<h1>形式手法を広めるには</h1>
		<p>河野真治 <br> 比嘉健太</p>
	</header>
	<div class="slide cover" id="Cover"><div>
		<section>
			<header>
				<h2>形式手法を広めるには</h2>
				<h3 id="author">河野真治 <br> 比嘉健太</h3>
				<h3 id="profile">琉球大学工学部情報工学科</h3>
			</header>
		</section>
	</div></div>

<!-- todo: add slide.classes to div -->
<!-- todo: create slide id from header? like a slug in blogs? -->

<div class="slide" id="2"><div>
		<section>
			<header>
				<h1 id="agenda">Agenda</h1>
			</header>
			<!-- === begin markdown block ===

      generated by markdown 1.1.1 on Ruby 2.2.0 (2014-12-25) [x86_64-darwin13]
                on 2015-01-21 17:26:16 +0900 with Markdown engine kramdown (1.4.2)
                  using options {}
  -->

<!-- _S9SLIDE_ -->

<ul>
  <li>大学ではどんなことをやっているか(講義, イベント, 研究)</li>
  <li>講義などでつまづくポイント</li>
  <li>つまづきの解決策</li>
</ul>



		</section>
</div></div>

<div class="slide" id="3"><div>
		<section>
			<header>
				<h1 id="section">講義で紹介する形式手法</h1>
			</header>
			<!-- _S9SLIDE_ -->

<ul>
  <li>model checking 的なアプローチ</li>
  <li>証明的なアプローチ</li>
</ul>



		</section>
</div></div>

<div class="slide" id="4"><div>
		<section>
			<header>
				<h1 id="model-checking-">model checking 的なアプローチ</h1>
			</header>
			<!-- _S9SLIDE_ -->

<ul>
  <li>Operationg System の講義</li>
  <li>Process/Thread Scheduling を考えた時に</li>
  <li>Dead Lock を起こすような Scheduling を実際に書いて実行させる</li>
  <li>Java Path Finder で Thread の実行順序を網羅的に実行する</li>
</ul>



		</section>
</div></div>

<div class="slide" id="5"><div>
		<section>
			<header>
				<h1 id="section-1">証明的なアプローチ</h1>
			</header>
			<!-- _S9SLIDE_ -->

<ul>
  <li>ソフトウェア工学 の講義</li>
  <li>集合, 論理, 関数, 自然演繹による証明</li>
  <li>型システム, Curry-Howard Isomorphism を通して Haskell, Agda で証明</li>
  <li>Haskell : 自然演繹と lambda calculus</li>
  <li>Agda    : Data type に対する証明 (Product, Sum, List, Functor, Monad …)</li>
  <li>Agda    : SystemT を使った自然数に対する演算の証明</li>
</ul>



		</section>
</div></div>

<div class="slide" id="6"><div>
		<section>
			<header>
				<h1 id="agda-">Agda による証明を解説した例</h1>
			</header>
			<!-- _S9SLIDE_ -->

<ul>
  <li>Open Source Conference</li>
  <li>ソフトウェア工学で学んだ Agda の使い方を発表</li>
  <li>Agda で SystemT の Nat の加法の交換法則を解説</li>
  <li>ほとんどが定義の解説に時間を取られてしまう</li>
</ul>



		</section>
</div></div>

<div class="slide" id="7"><div>
		<section>
			<header>
				<h1 id="section-2">圏によるプログラムの形式化</h1>
			</header>
			<!-- _S9SLIDE_ -->

<ul>
  <li>プログラムの変更を Monad で表す</li>
  <li>プログラムの変更時に変更前のプログラムも残したまま変更する</li>
  <li>全てのバージョンのプログラムを同時に実行できる</li>
  <li>デバッグやテストと組み合せることでバグ</li>
  <li>実行系と検証系を同時に走らせることもできる</li>
</ul>



		</section>
</div></div>

<div class="slide" id="8"><div>
		<section>
			<header>
				<h1 id="section-3">学習コスト</h1>
			</header>
			<!-- _S9SLIDE_ -->

<ul>
  <li>論理, 自然演繹 -&gt; Haskell -&gt; Agda</li>
  <li>それぞれのステップに壁がある</li>
  <li>自然演繹では解けるけれど lambda term で書き直す</li>
  <li>Haskell では定義できるけれど Agda で証明できない</li>
</ul>



		</section>
</div></div>

<div class="slide" id="9"><div>
		<section>
			<header>
				<h1 id="section-4">つまづくポイント</h1>
			</header>
			<!-- _S9SLIDE_ -->

<ul>
  <li>Haskell -&gt; Agda の壁を考える</li>
  <li>コードを書いてる人なら型を合わせることは分かる</li>
  <li>型によって証明を書くことに繋げるには?
    <ul>
      <li>プログラムと論理の対応を把握してもらう必要がある</li>
      <li>どうしたら把握してもらえるか?</li>
    </ul>
  </li>
</ul>



		</section>
</div></div>

<div class="slide" id="10"><div>
		<section>
			<header>
				<h1 id="section-5">つまづきをどう解決するか</h1>
			</header>
			<!-- _S9SLIDE_ -->

<ul>
  <li>書き続ける</li>
  <li>論理とプログラムの対応を見えるようにする
    <ul>
      <li>Agda は対話的に項を書き換えることができる</li>
      <li>どこでつまづいても情報が手に入るようにしたい</li>
      <li>対話的に情報を引き出す手段そのものを学ぶ</li>
    </ul>
  </li>
</ul>

<style>
.slide.cover H2 {
    margin-top:72px;
    font-size:72px;
}
.slide.cover H3#author {
    margin-top:72px;
    font-size:42px;
}
</style>

<!-- vim: set filetype=markdown.slide: -->
<!-- === end markdown block === -->

		</section>
</div></div>


	<script src="scripts/script.js"></script>
	<!-- Copyright © 2010–2011 Vadim Makeev, http://pepelsbey.net/ -->
</body>
</html>