プログラムのデバッグ支援(仮)

Yasutaka Higa

プログラムのデバッグ支援(仮)

研究目的(仮)

  • プログラミングにおいて、ソースコードを改変するとプログラムの挙動も変わる
  • 挙動は予想されていた挙動と異なる場合があり、それはバグとなる
  • ソースコードの改変前と改変後の挙動を比較することで、デバッグの支援になるのでは無いか
  • 異なるバージョンのプログラムを同時に実行できるデバッグ支援ツールを開発する

近況報告

  • Parallel debugger sample session
    • テコ入れ下さい
  • ソフトウェア工学の質問とか答えてたりしました
  • Notions of computation and monads

ソフトウェア工学

  • 数日前から質問来てました(締切前?)
  • Functor の eta の記述がおかしい気がします
    • T -> 1 になってる
    • eta は 1 -> T な気がします
  • ここの etaT のところ

Notions of computation and monads

  • proving Equivalence of programs
    • beta-eta conversion wipes out
      • non-termination, non-determinisim, side-effects
  • follows monads
    • Categorical Semantics of computations based on monads
  • T is notion of computation

Many Sorted Monadic Equational Language ?

  • Kleisli triples との対応
    • (T, eta, mu) と (T, eta, _ * )
    • このあたりはソフトウェア工学でやったところなのでどうにか
  • Many Sorted Monadic Equational Launguage くらいから謎
    • page6-7 とか
    • 確実に引数を1つ持つ関数どうしの Equation?

Notions of computation and monads : ながれ

  • あとは流し読み
  • Many sorted Monadic Equational Language -> The Simple metalanguage
    • (let とか。) 1Monad を複数回適用可能?
  • A Simple Programming Language
    • existential とかが導入されるらしいですが……

Notions of computation and monads : ながれ

  • Extending the simple metalanguage
    • Strong Monad (A x T B) -> T A B
  • Interpretation and formal system
  • Strong monads over a topos
    • location, if とかが が入る

Monad for CbC?

  • Monad は codomain が 2つある
    • A と T A
    • なので A と T A 間での identitiy はきちんと取る必要がありそう
  • f : A -> T B
    • f x の場合は x : A
    • f =« x の場合は x : T A