view slides/20141205/slide.html @ 68:ae20b978b159

auto-Update generated slides by script
author Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
date Thu, 29 Jan 2015 16:59:59 +0900
parents e67049879154
children d4e4ecc1c347
line wrap: on
line source

<!DOCTYPE HTML>

<html lang="Japanese">
<head>
	<title>Categorical Formalization for Program Modification</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="Yasutaka Higa">
	<link rel="stylesheet" href="themes/ribbon/styles/style.css">
</head>
<body class="list">
	<header class="caption">
		<h1>Categorical Formalization for Program Modification</h1>
		<p>Yasutaka Higa</p>
	</header>
	<div class="slide cover" id="Cover"><div>
		<section>
			<header>
				<h2>Categorical Formalization for Program Modification</h2>
				<h3 id="author">Yasutaka Higa</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="categorical-formalization-for-program-modification">研究目的 (Categorical Formalization for Program Modification)</h1>
			</header>
			<!-- === begin markdown block ===

      generated by markdown 1.1.1 on Ruby 2.1.5 (2014-11-13) [x86_64-darwin13.0]
                on 2014-12-05 10:58:29 +0900 with Markdown engine kramdown (1.4.2)
                  using options {}
  -->

<!-- _S9SLIDE_ -->

<ul>
  <li>プログラムの信頼性を向上させたい</li>
  <li>プログラムの信頼性が変化するのはプログラムを変更した時である</li>
  <li>プログラムを変更する際に信頼性を保ったまま変更するための手法を確立させたい</li>
  <li>プログラムとその変更を表すモデルとして、圏を用いる</li>
</ul>



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

<div class="slide" id="3"><div>
		<section>
			<header>
				<h1 id="parallel-debugger">研究目的 (Parallel Debugger)</h1>
			</header>
			<!-- _S9SLIDE_ -->

<ul>
  <li>本研究ではプログラムの変更を Monad として定義する</li>
  <li>Monad とは meta computation と対応付けられたデータ構造である</li>
  <li>Monad の性質を用いて、異なるバージョンを同時に実行するデータ構造Deltaを定義する</li>
  <li>異なるバージョンの実行結果を比較することによってデバッグを支援する手法を提案する</li>
</ul>



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

<div class="slide" id="4"><div>
		<section>
			<header>
				<h1 id="section">近況報告</h1>
			</header>
			<!-- _S9SLIDE_ -->

<ul>
  <li>業務連絡 : プロシン申し込みました</li>
  <li>無限の変更を表せる Delta の証明ができました
    <ul>
      <li>Category の方の Monad則</li>
    </ul>
  </li>
</ul>



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

<div class="slide" id="5"><div>
		<section>
			<header>
				<h1 id="section-1">業務連絡 : プロシン申し込み</h1>
			</header>
			<!-- _S9SLIDE_ -->

<ul>
  <li>プロシン申し込みました</li>
  <li>事務から書類貰ってきました
    <ul>
      <li>講座への振込依頼書</li>
    </ul>
  </li>
  <li>12/9 - 12/11 なので 12/8 - 12/11 の予定です</li>
</ul>



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

<div class="slide" id="6"><div>
		<section>
			<header>
				<h1 id="prove-monad-laws-in-category-for-delta">Prove monad laws in Category for Delta</h1>
			</header>
			<!-- _S9SLIDE_ -->

<ul>
  <li>とりあえずベタに書きました
    <ul>
      <li>record とか使ってない</li>
      <li>Functor, Natural Transformation</li>
    </ul>
  </li>
  <li>先週話を聞いた後にいけそうなのでつっ走りました</li>
</ul>



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

<div class="slide" id="7"><div>
		<section>
			<header>
				<h1 id="delta-">Delta の証明のキモ</h1>
			</header>
			<!-- _S9SLIDE_ -->

<ul>
  <li>bind : (Delta a) -&gt; (a -&gt; Delta b) -&gt; (Delta b)</li>
  <li>f と x のバージョン数が違うかもしれないので合わせる必要がある</li>
  <li>bind そのものは
    <ul>
      <li>関数のバージョン数</li>
      <li>適用する変数のバージョン数</li>
    </ul>
  </li>
  <li>が分からないけれど合わせないといけない</li>
</ul>



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

<div class="slide" id="8"><div>
		<section>
			<header>
				<h1 id="delta---x--1--f--1">Delta の証明のキモ : x = 1 , f = 1</h1>
			</header>
			<!-- _S9SLIDE_ -->

<ul>
  <li>bind : (Delta a) -&gt; (a -&gt; Delta b) -&gt; (Delta b)</li>
</ul>

<pre><code>var  = [x]
func = [f]

func(var) = [f(x)]
</code></pre>



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

<div class="slide" id="9"><div>
		<section>
			<header>
				<h1 id="delta---x--2--f--1">Delta の証明のキモ : x = 2 , f = 1</h1>
			</header>
			<!-- _S9SLIDE_ -->

<ul>
  <li>bind : (Delta a) -&gt; (a -&gt; Delta b) -&gt; (Delta b)</li>
</ul>

<pre><code>var  = [x, y]
func = [f]

func(var) = [f(x), f(y)]
</code></pre>



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

<div class="slide" id="10"><div>
		<section>
			<header>
				<h1 id="delta---x--1--f--2">Delta の証明のキモ : x = 1 , f = 2</h1>
			</header>
			<!-- _S9SLIDE_ -->

<ul>
  <li>bind : (Delta a) -&gt; (a -&gt; Delta b) -&gt; (Delta b)</li>
</ul>

<pre><code>var  = [x]
func = [f, g]

func(var) = [f(x), g(x)]
</code></pre>



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

<div class="slide" id="11"><div>
		<section>
			<header>
				<h1 id="delta---x--2--f--2">Delta の証明のキモ : x = 2 , f = 2</h1>
			</header>
			<!-- _S9SLIDE_ -->

<ul>
  <li>bind : (Delta a) -&gt; (a -&gt; Delta b) -&gt; (Delta b)</li>
</ul>

<pre><code>var  = [x, y]
func = [f, g]

func(var) = [[f(x), g(x)],
             [f(y), g(y)]]
</code></pre>



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

<div class="slide" id="12"><div>
		<section>
			<header>
				<h1 id="delta---x--3--f--2">Delta の証明のキモ : x = 3 , f = 2</h1>
			</header>
			<!-- _S9SLIDE_ -->

<ul>
  <li>bind : (Delta a) -&gt; (a -&gt; Delta b) -&gt; (Delta b)</li>
</ul>

<pre><code>var  = [x, y, z]
func = [f, g]

func(var) = [[f(x), g(x)],
             [f(y), g(y)],
             [f(z), g(z)]]
</code></pre>



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

<div class="slide" id="13"><div>
		<section>
			<header>
				<h1 id="delta---x--2--f--3">Delta の証明のキモ : x = 2 , f = 3</h1>
			</header>
			<!-- _S9SLIDE_ -->

<ul>
  <li>bind : (Delta a) -&gt; (a -&gt; Delta b) -&gt; (Delta b)</li>
</ul>

<pre><code>var  = [x, y]
func = [f, g, h]

func(var) = [[f(x), g(x), h(x)],
             [f(y), g(y), h(y)]]
</code></pre>



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

<div class="slide" id="14"><div>
		<section>
			<header>
				<h1 id="delta---x--n--f--n">Delta の証明のキモ : x = n , f = n</h1>
			</header>
			<!-- _S9SLIDE_ -->

<pre><code>bind (Mono x)    f = f x
bind (Delta x d) f = Delta (headDelta (f x))
                           (bind d (tailDelta . f))
</code></pre>

<ul>
  <li>自然数回分だけ tailDelta が行なわれる</li>
  <li>tailDelta の回数を自然数回適用する equiv を定義したらいけました
    <ul>
      <li>発想が出たのは展開するごとに tailDelta が増えるのを見たので</li>
    </ul>
  </li>
</ul>



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

<div class="slide" id="15"><div>
		<section>
			<header>
				<h1 id="delta---monad-laws">Delta の証明 : Monad-laws</h1>
			</header>
			<!-- _S9SLIDE_ -->

<ul>
  <li>特に TTT に対する Monad-law
    <ul>
      <li>mu (mu TTT) == mu (fmap mu TTT)</li>
    </ul>
  </li>
  <li>先程のやつの三次元版
    <ul>
      <li>足りない情報は bind で埋める</li>
      <li>どこからなぞっても unique ってことと同義に思える</li>
    </ul>
  </li>
</ul>



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

<div class="slide" id="16"><div>
		<section>
			<header>
				<h1 id="todo">TODO</h1>
			</header>
			<!-- _S9SLIDE_ -->

<ul>
  <li>ポジションペーパ
    <ul>
      <li>どっちを書こうか</li>
      <li>parallel debuggerだと思ってます</li>
    </ul>
  </li>
  <li>(P) Monad-laws in Haskell</li>
  <li>(P) MonadTransform</li>
  <li>(C) Universal Mapping Problem</li>
  <li>(C) Functor with Save Limit</li>
</ul>

<!-- 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>