Verification method of programs using Continuation based C
Yasutaka Higa
研究目的
動作するプログラムの信頼性を保証したい
検証を行ないやすい単位としてプログラムをコードセグメントとデータセグメントという単位で記述する
プログラムはコードセグメントという処理の集合として表され、相互に接続される
型検査器を導入することでコードセグメントが接続可能かどうかを判断する
また、コードセグメントの型から推論してデータセグメントの生成を行なう
研究内容
コードセグメントとデータセグメントを用いて記述する言語 Continuation based C に型を導入する
コードセグメント内部の演算と変数代入から型を推論する
接続可能かどうかをコンパイル時に判断し、必要なデータセグメントを型情報から生成する
近況報告
Gears の Stack の証明をこねてました
任意の Stack に対して n回 push した後に n回 pop したら元に戻る
空の Stack に対しても同様
Gears の型をどうするかのアイデア
Type of Gears
CodeSegment のは DataSegment -> DataSegment
DataSegment は制約か部分型
合成できるのならOK
全ての部分型を満たすものが最初の引数になるのでそれを生成できれば良い
関数合成部分を切り替え可能なメタ計算にする
Allocate とかも書けそう
問題点
どう書くか/書けるのか
goto の分岐
総称型に拡張可能かどうか
並列実行はどう書くのか
まだAPIが無い