Categorical Semantics for Program Modification

Yasutaka Higa

Categorical Semantics for Program Modification

Yasutaka Higa

研究目的

  • プログラミングにおいてプログラムの変更に共ない実行結果なども変更される
  • プログラムの変更に対応する圏を構築し、その変更の構造を調べる
  • 圏の構造から導出される性質からソフトウェア開発に有用な仕組みを提案する
  • 本研究ではプログラムの変更をMonadとして定義し、Monad によって構成される圏を解析する

近況報告

  • 当面のクリアするべき目標
  • 無限の変更を表す Delta を定義しました
  • Sample : Bubble Sort
  • Agda での証明がだいぶ詰まっています

研究の方向性と卒研

  • Technical English Presentation でもうスライドを作り始めます
  • あとポジションペーパが12月
  • そういう意味で卒論とかの流れも確定させていきたい
    • 特に研究目的

当面のクリアするべき目標

  • Delta によってプログラムの全ての変更が表現できるか?
    • Functor なのでいけると思ってます
  • 無限の変更を Delta によって書けるか
    • 定義してみました( mono と delta )
  • Delta によって構成される limit とは何か
    • 先生とやりました

Sample : Bubble Sort

  • prime count も bubble sort も動いてます
*Main>  primeCount 10
Delta 4 (Mono 5)

*Main> deltaFromList [10, 20, 30] >>= primeCount
Delta 4 (Delta 10 (Mono 15))

limit of delta monad

  • 先生と対応を考えてました
  • limit
    • index category の形状は preorderd sets だと思ってます
    • has id, has pull back

equalizer, product of delta monnad

  • pull back があるので equalizer もある
    • おそらく mercurial の merge の non-conflict 部分
  • id があるので product もある
    • 任意の変更段階を対にできる
    • parallel debugger の理論的背景 -> これを卒研の提案1にする
  • and more?
    • indexed category のパターンを調べようかと思ってます

Agda での証明につまってます

  • functor 則は ok
  • monad 則がとんでも
    • mu (fmap mu) m = mu (mu m)
  • 金曜からずっと悩み続けてます

状況

  • pattern match 全部展開 -> 無理
    • (mono or delta) で TTT なので 2^3 くらいかなと
    • delta を展開すると増えるので状態が爆発
    • 安直にスクリプトで展開したけれど refl では押し切れない
  • ≡-Reasoning で展開
    • headDelta, tailDelta, deltaAppend と mu が natural transformation である証明とかが必要そう
    • 今これでやってますが尋常じゃなく長い