view slides/20141205/slide.html @ 125:00f4dd1d2e55

auto-Update generated slides by script
author Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
date Tue, 28 Jun 2016 18:27:42 +0900
parents d4e4ecc1c347
children
line wrap: on
line source

<!DOCTYPE html>
<html>
<head>
   <meta http-equiv="content-type" content="text/html;charset=utf-8">
   <title>Categorical Formalization for Program Modification</title>

<meta name="generator" content="Slide Show (S9) v2.5.0 on Ruby 2.3.0 (2015-12-25) [x86_64-darwin14]">
<meta name="author"    content="Yasutaka Higa" >

<!-- style sheet links -->
<link rel="stylesheet" href="s6/themes/projection.css"   media="screen,projection">
<link rel="stylesheet" href="s6/themes/screen.css"       media="screen">
<link rel="stylesheet" href="s6/themes/print.css"        media="print">
<link rel="stylesheet" href="s6/themes/blank.css"        media="screen,projection">

<!-- JS -->
<script src="s6/js/jquery-1.11.3.min.js"></script>
<script src="s6/js/jquery.slideshow.js"></script>
<script src="s6/js/jquery.slideshow.counter.js"></script>
<script src="s6/js/jquery.slideshow.controls.js"></script>
<script src="s6/js/jquery.slideshow.footer.js"></script>
<script src="s6/js/jquery.slideshow.autoplay.js"></script>

<!-- prettify -->
<link rel="stylesheet" href="scripts/prettify.css">
<script src="scripts/prettify.js"></script>

<script>
  $(document).ready( function() {
    Slideshow.init();

    $('code').each(function(_, el) {
      if (!el.classList.contains('noprettyprint')) {
        el.classList.add('prettyprint');
        el.style.display = 'block';
      }
    });
    prettyPrint();
  } );

  
</script>

<!-- Better Browser Banner for Microsoft Internet Explorer (IE) -->
<!--[if IE]>
<script src="s6/js/jquery.microsoft.js"></script>
<![endif]-->



</head>
<body>

<div class="layout">
  <div id="header"></div>
  <div id="footer">
    <div align="right">
      <img src="s6/images/logo.svg" width="200px">
    </div>
  </div>
</div>

<div class="presentation">

  <div class='slide cover'>
    <table width="90%" height="90%" border="0" align="center">
      <tr>
        <td>
          <div align="center">
            <h1><font color="#808db5">Categorical Formalization for Program Modification</font></h1>
          </div>
        </td>
      </tr>
      <tr>
        <td>
          <div align="left">
            Yasutaka Higa
            
            <hr style="color:#ffcc00;background-color:#ffcc00;text-align:left;border:none;width:100%;height:0.2em;">
          </div>
        </td>
      </tr>
    </table>
  </div>

<div class='slide '>
<!-- === begin markdown block ===

      generated by markdown/1.2.0 on Ruby 2.3.0 (2015-12-25) [x86_64-darwin14]
                on 2016-03-29 18:58:23 +0900 with Markdown engine kramdown (1.9.0)
                  using options {}
  -->

<!-- _S9SLIDE_ -->
<h1 id="categorical-formalization-for-program-modification">研究目的 (Categorical Formalization for Program Modification)</h1>
<ul>
  <li>プログラムの信頼性を向上させたい</li>
  <li>プログラムの信頼性が変化するのはプログラムを変更した時である</li>
  <li>プログラムを変更する際に信頼性を保ったまま変更するための手法を確立させたい</li>
  <li>プログラムとその変更を表すモデルとして、圏を用いる</li>
</ul>


</div>
<div class='slide '>
<!-- _S9SLIDE_ -->
<h1 id="parallel-debugger">研究目的 (Parallel Debugger)</h1>
<ul>
  <li>本研究ではプログラムの変更を Monad として定義する</li>
  <li>Monad とは meta computation と対応付けられたデータ構造である</li>
  <li>Monad の性質を用いて、異なるバージョンを同時に実行するデータ構造Deltaを定義する</li>
  <li>異なるバージョンの実行結果を比較することによってデバッグを支援する手法を提案する</li>
</ul>


</div>
<div class='slide '>
<!-- _S9SLIDE_ -->
<h1 id="section">近況報告</h1>
<ul>
  <li>業務連絡 : プロシン申し込みました</li>
  <li>無限の変更を表せる Delta の証明ができました
    <ul>
      <li>Category の方の Monad則</li>
    </ul>
  </li>
</ul>


</div>
<div class='slide '>
<!-- _S9SLIDE_ -->
<h1 id="section-1">業務連絡 : プロシン申し込み</h1>
<ul>
  <li>プロシン申し込みました</li>
  <li>事務から書類貰ってきました
    <ul>
      <li>講座への振込依頼書</li>
    </ul>
  </li>
  <li>12/9 - 12/11 なので 12/8 - 12/11 の予定です</li>
</ul>


</div>
<div class='slide '>
<!-- _S9SLIDE_ -->
<h1 id="prove-monad-laws-in-category-for-delta">Prove monad laws in Category for Delta</h1>
<ul>
  <li>とりあえずベタに書きました
    <ul>
      <li>record とか使ってない</li>
      <li>Functor, Natural Transformation</li>
    </ul>
  </li>
  <li>先週話を聞いた後にいけそうなのでつっ走りました</li>
</ul>


</div>
<div class='slide '>
<!-- _S9SLIDE_ -->
<h1 id="delta-">Delta の証明のキモ</h1>
<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>


</div>
<div class='slide '>
<!-- _S9SLIDE_ -->
<h1 id="delta---x--1--f--1">Delta の証明のキモ : x = 1 , f = 1</h1>
<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>


</div>
<div class='slide '>
<!-- _S9SLIDE_ -->
<h1 id="delta---x--2--f--1">Delta の証明のキモ : x = 2 , f = 1</h1>
<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>


</div>
<div class='slide '>
<!-- _S9SLIDE_ -->
<h1 id="delta---x--1--f--2">Delta の証明のキモ : x = 1 , f = 2</h1>
<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>


</div>
<div class='slide '>
<!-- _S9SLIDE_ -->
<h1 id="delta---x--2--f--2">Delta の証明のキモ : x = 2 , f = 2</h1>
<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>


</div>
<div class='slide '>
<!-- _S9SLIDE_ -->
<h1 id="delta---x--3--f--2">Delta の証明のキモ : x = 3 , f = 2</h1>
<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>


</div>
<div class='slide '>
<!-- _S9SLIDE_ -->
<h1 id="delta---x--2--f--3">Delta の証明のキモ : x = 2 , f = 3</h1>
<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>


</div>
<div class='slide '>
<!-- _S9SLIDE_ -->
<h1 id="delta---x--n--f--n">Delta の証明のキモ : x = n , f = n</h1>
<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>


</div>
<div class='slide '>
<!-- _S9SLIDE_ -->
<h1 id="delta---monad-laws">Delta の証明 : Monad-laws</h1>
<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>


</div>
<div class='slide '>
<!-- _S9SLIDE_ -->
<h1 id="todo">TODO</h1>
<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 === -->
</div>


</div><!-- presentation -->
</body>
</html>