項書き換え系への変換に基づく メタ項書き換え計算の停止性 情報システム学専攻 坂部研究室 蛸島 洋明 1 項書き換え系(TRS) 関数型プログラミング言語の計算モデル 左辺項と右辺項からなる書き換え規則の有限集合 (例)自然数の加算を定義するTRS add(0, x) x add(s(x),y) s(add(x,y)) s(x): x 1 入力項 出力項 add(s(0),s(0)) s(add(0,s(0))) s(s(0)) 2 メタ項書き換え計算(MRC) TRSの記述・実行・検証を目的として提案された 計算モデル 等式定理の帰納法による証明の自動化などに 応用可能 (例) •TRSの等価性証明 •オブジェクト指向言語の抽象機械の実行系の実現 [山本’98] •Knuth-Bendix完備化アルゴリズムの実現[亀井’98] 3 メタ項とその書き換え x.f(x) a bxb a f(c) 規則中に規則を含規則 項 x.f(x) a bxb aa bc むことが可能 x.f(x) a bxb aa ac メタ項の書き換えの特徴 •規則によって有効な範囲の相違 •規則を別の規則で書き換え可能 4 目的 メタ項の停止性を示すことができると ・自動証明の結果が取得可能 ・他の性質の調査が容易 一般にメタ項の停止性は決定不能 メタ項の停止性証明法の提案 5 研究成果 単純メタ項:規則中に規則を含まないメタ項 動的左辺正規なメタ項の停止性証明法の提案 a bc dd 左辺正規性: 動的左辺正規なメタ項の任意の部分項の停止性 左単純メタ項:規則の左辺に規則を含まないメタ項 規則の左辺が書き換えられない性質 証明法の提案[夏のLA’04] 動的左辺正規性: a b cf(b)b dg(a) 書き換えても左辺正規性を保ち続ける性質 非左辺正規な単純メタ項の停止性証明法の提案 f(a) cg(b) f(a)b [冬のLA’05] f(a) cg(b) cb 非左辺正規な左単純メタ項への拡張[冬のLA’05] 6 動的左辺正規なメタ項の停止性証明法 φ(M)が停止性を持つ Mが停止性を持つ TRS φ(M)の停止性:TRSの停止性証明法を利用 a b a b M a b c b c b c a d cb d bb d cb 変換 φ(M) {a b, c a, d c} 変換 {a b, c b, d c} 変換 {a b, c b, d b} 7 動的左辺正規なメタ項の停止性証明定理 定理 Mを動的左辺正規なメタ項とする。 TRS φ(M)が停止性を持つならば Mは停止性を持つ。 8 動的左辺正規なメタ項の手法の問題点 問題点:メタ項の左辺の書き換えに未対応 非左辺正規なメタ項 M a ba bb 変換 φ(M) a b a bb bb 変換 a b,b b φM は停止性を持つがMは停止性を持たない。 b b という規則を追加させる変換法が必要 9 非左辺正規な単純メタ項の停止性証明法 単純メタ項 M 変換、部分評価 TRS (M) (M) が停止性を持つ Mが停止性を持つ 10 単純メタ項に対するTRSへの変換と部分 評価 変換:TRSに変換して規則を階層化 部分評価:上の階層の規則で下の規則の左辺を書き換える a b a b M a b b c b c a c b d c d (M) b d d d d {a b, a c, b d} {a b, a c,b c, b d} {a b, a c,b c, b d, c d} メタ項の左辺の書き換えに対応 11 非左辺正規な単純メタ項の停止性証明 定理 定理 Mを単純メタ項とする。 (M) TRS が有限で停止性を持つ ならばMは停止性を持つ。 左辺正規な単純メタ項の手法の一般化 無限集合の場合TRSは停止性を持たない。 12 左単純メタ項への拡張 対象となる左単純メタ項 •規則中の規則の左辺の保護 a bf(b) a/a caa da 左単純メタ項 M aは書き換え不可 変換、部分評価 問題点:規則中の規則の扱い ˆ ) TRS (M ˆ ) が停止性を持つ (M Mが停止性を持つ 13 左単純メタ項に対するTRSへの変換 変換:TRSに変換して規則を階層化 規則中の規則の 階層の位置は? M a bx.f(x) a/a cxf(a da) a bx.f(x) a/a cxa/a ca da {a b, f(x) a/a cx, a c, a d} f(x) a/a cx の後 a d の前に出現 f(x) a/a cx と同じ階層 14 左単純メタ項に対するTRSの部分評価 部分評価:上の階層の規則で下の規則の 左辺(規則中の規則以外)を書き換える {a b, f(x) a/a cx, a/a c, a d,b d, c d } 保護演算により 書き換え不可 ˆ ) 停止性を持つ (M M a bx.f(x) a/a cxf(a da) 停止性を持つ 15 非左辺正規な左単純メタ項の停止性証明 定理 定理 Mを左単純メタ項とする。 TRS (Mˆ )が有限で停止性を持つ ならばMは停止性を持つ。 左辺正規な左単純メタ項、非左辺正規な単 純メタ項に対する手法の一般化 16 まとめ 動的左辺正規なメタ項の停止性証明法の提案 動的左辺正規なメタ項の任意の部分項の 停止性証明法の提案 非左辺正規な単純メタ項の停止性証明法の 提案 非左辺正規な左単純メタ項への拡張 17 今後の課題 停止性証明が可能なメタ項のクラスの拡張 ・規則中の規則の左辺を保護していないメタ項 停止性証明法の改善 ・変換したTRSが停止性を持たず、メタ項が停止性 を持つ場合を減らす。 18 応用例 [u.ENV(u) [EQ(TRS1(0), TRS2(0)) TRUE] [x.y.EQ(TRS1(s(x)), TRS2(s(y))) EQ(TRS1(x), TRS2(y))] [x.y.AND(TRUE,[x y]TRUE) TRUE]u] [u.TRS1(u) [d(0) 0] TRSの等価 [x.d(s(x)) s(s(d(x)))]u] 性を自動証明 [u.TRS2(u) [x.d(x) if(x,0, s(s(d(x s(0)))))] するメタ項 [y.z.if(0, y, z) y] [x.y.z.if(s(x),y, z) z] [x.x 0 x] [x.y.s(x) s(y) x y]u] ENV(AND(EQ(TRS1(d(0)), TRS2(d(0))), [EQ(TRS1(d(p)), TRS2(d(p))) TRUE] EQ(TRS1(d(s(p))),TRS2(d(s(p)))) TRUEになれば 証明成功 19
© Copyright 2024 ExpyDoc