卒論キックオフ

Download Report

Transcript 卒論キックオフ

卒論キックオフ
2002年10月16日
理工学部情報学科4年
圷 弘明
検証が必要な理由

安全性


プログラムの性質の把握


実際に証明しなければ安全であるとはいえない
デバッグの際に役立つ
最適化への応用

コンパイラに検証系を用いる
項書き換えシステム


書き換え規則(単方向)の集合として定
義される
さまざまな分野で広く用いられている

自動定理証明 関数型、論理型言語
代数的仕様記述 記号処理など
項書き換えシステムの例

自然数の加算(自然数:0,s(0),s(s(0)),・・・)



初期状態 s(0)+s(s(0)) の場合


x+0 → x
x+s(y) → s(x+y)
(1+2)
s(0)+s(s(0)) → s(s(0)+s(0)) →
s(s(s(0)+0)) → s(s(s(0)))
停止性、合流性を満たす(完備性)
停止性・合流性

停止性を証明する手段(実際は決定不能)

データに対して自然数を返すある関数を定義し、デー
タにルールを1回適応するたびにその関数の値が単
調に減少するようにする


前例の場合は
Rank(n)=yに当てはまる数+1∨yに当てはまらない場合 0
合流性を証明する手段

Knuth-Bendixの合流条件

すべての危険対が収束する⇔合流性成立

前例の場合は危険対が存在しない
書き換えの合流性

乗算のルールを追加




x+0 → x
x+s(y) → s(x+y)
x*0 → 0
x*s(y) → (x*y)+x
(s(0)*0)+(s(0)+0)
0+(s(0)+0)
(s(0)*0)+s(0)
0+s(0)
s((s(0)*0)+0)
s(0+0)
s(s(0)*0)
s(0)

ルールの適応の仕方が何通りもある

合流性が自明でない
LMNtalの検証(やってみたこと)
append(X0,Y,Z0),c(A,X,X0) :c(A,Z,Z0),append(X,Y,Z)
append(X0,Y,Z0),n(X0) :- Y=Z0
a
1
2
3
4
c
c
c
c
c
c
c
n
5
6
7
n
appendの検証
初期状態
a(c(1,c(2,c(3,c(4,n)))),c(5,c(6,c(7,n))))
書き換え規則
{
a(c(A,X),Y) → c(a(X,Y),A)
a(n,Y) → Y
※ これは自然数の加算の書き換えシステムと
同じである
{
n+x → x
C(z,x)+y → c(z,x+y)
2次元グリッド

grid(X,Y,*,*),grid(*,n,X,*),grid(n,*,*,Y) →
grid(X,Y,*,*),grid(*,A,X,*),grid(B,*,*,Y),grid(n,n,B,A)
※nはNILLへのリンクを表す略記、*は重要でないリンクの略記
書き換え規則
目的状態
初期状態
2次元グリッドの検証

停止性証明のためのデータの定量化が難しい



要素の数で考えると失敗する
危険対が存在するので合流性は自明でない
うまく定量化する方法を検討中
 なるべくグラフであるという点を生かしたい
卒論のテーマ




LMNtalにおいて停止性や合流性の一般的な
検証方法を模索する
appendの結合則などの数学的に難しい証明
型体系の理論
わかりやすい証明
参考文献

Termination of CHR Constraint Solvers
Thom Fruhwirth (1999)


プログラム検証論 情報数学講座8 共立出版
林晋
完備化による等式証明 人工知能学会誌16巻5号
外山芳人