title: Verification of programs using Continuation based C author: Yasutaka Higa profile: lang: Japanese # 研究目的 * コードセグメントとデータセグメントという単位を用いてプログラムを記述する手法を提案する * プログラムはコードセグメントという処理の集合として表され、相互に接続される * 個々のコードセグメントを検証し、検証されたコードセグメントどうしの組み合わせによりプログラム全体を検証する # 研究内容 * コードセグメントとデータセグメントを用いたプログラムに対し、検証を行なう * コードセグメントどうしの接続の間にメタ計算として検証機構を導入する * コードを検証用に変更することなく、仕様を満たすか検証する * 検証の対象として Gears OS のデータ構造を用いる # 近況報告 * clang の revision を 111 に変更 * tip は 112 * cbmc で検証するコードを書いた * どうやら cbmc では上手く検証できない様子 # cbmc での検証 * goto を return に変更して assert を使って bounded model check * 素直に実行すると終わらない * --property で特定の property のみをチェック * loop をどのくらい展開するかのオプション --unwind がある * --unwind 1 ではチェックできず * array too large for flattening * どのくらいの深さをチェックするかのオプション --depth がある * --depth 400 くらいでチェックできず * array too large for flattening # depth 400 以下でのチェックは有効なのか * 木に挿入する要素は8 * llrb のコードにバランスを乱すようにわざとバグを仕込む * akasha では反例が返る * cbmc では verification successful と出る * ので cbmc では llrb はチェックできなさそう # あとやること * (doing) 仮に書いている C function を全部 cs に変換する * 速度計測? * 論文作成 * 論文提出締切: 2016/07/08