最内書換えに基づく項書換え系の完全な書換え戦略
Download
Report
Transcript 最内書換えに基づく項書換え系の完全な書換え戦略
最内書換えに基づく項書換え系の
完全な書換え戦略
名古屋大学大学院情報科学研究科
岡本 晃治 酒井 正彦 坂部 俊樹
1
項書換え系(TRS)
関数型言語の計算モデル
書換え規則で項を書き換え計算
例:自然数の加算のTRS
R=
Add(s(x), y) → s(Add(x, y))
Add(0, y) → y
Add(s(0), s(s(0)))
1 + 2
2
項書換え系(TRS)
関数型言語の計算モデル
書換え規則で項を書き換え計算
例:自然数の加算のTRS
R=
Add(s(x), y) → s(Add(x, y))
Add(0, y) → y
書換え規則が適用不能
な項(正規形)に到達
Add(s(0), s(s(0))) → s(Add(0, s(s(0)))) → s(s(s(0)))
1 + 2
=
3
3
TRSの書換え戦略
書換え規則を適用する場所の選び方
Ex:
R=
f (x)
g(x)
h(x)
→ x
→ s(x)
f (g(h(0)))
→ x
4
TRSの書換え戦略
書換え規則を適用する場所の選び方
Ex:
R=
f (x)
g(x)
h(x)
→ x
→ s(x)
f (g(h(0)))
→ x
書換え規則を適用可
能な位置が3つ存在
5
TRSの書換え戦略
書換え規則を適用する場所の選び方
Ex:
R=
g(h(0))
f (x)
g(x)
h(x)
x=g(h(0))
→ x
→ s(x)
f (g(h(0)))
→ x
関数記号 f の位置に
f(x) → xの規則を適用
6
TRSの書換え戦略
書換え規則を適用する場所の選び方
Ex:
R=
g(h(0))
f (x)
g(x)
h(x)
x=h(0)
→ x
→ s(x)
f (g(h(0)))
→ x
f (s(h(0)))
関数記号 g の位置に g(x)
→ s(x)の規則を適用
7
TRSの書換え戦略
書換え規則を適用する場所の選び方
Ex:
R=
g(h(0))
f (x)
g(x)
h(x)
x=0
→ x
→ s(x)
f (g(h(0)))
→ x
f (s(h(0)))
f (g(0))
関数記号 h の位置に h(x)
→ xの規則を適用
8
TRSの書換え戦略
書換え規則を適用する場所の選び方
Ex:
R=
g(h(0))
f (x)
g(x)
h(x)
→ x
→ s(x)
f (g(h(0)))
→ x
f (s(h(0)))
f (g(0))
書換え可能な最も
内側の位置を書換え
最内戦略
9
TRSの完全な書換え戦略
与えた項の全ての正規形に到達可能な戦略
Ex:
R=
f (g(x)) → x
f (x) →
s(x)
h(x) → x
s(g(0))
f (g(h(0)))
0
h(0)
f (g(0))
s(g(0))
10
TRSの完全な書換え戦略
与えた項の全ての正規形に到達可能な戦略
Ex:
R=
f (g(x)) → x
f (x) →
s(x)
h(x) → x
s(g(0))
f (g(h(0)))
0
h(0)
f (g(0))
s(g(0))
:最内戦略の書換え
Rにおいて最内戦略は完全な書換え戦略
11
研究背景・目的[1/2]
複数の解を持つ問題を扱うTRSは一般的に
合流性を持たない
Ex:逆関数の計算
合流性:任意の項に対してどのような順序で書換え規
則を適用しても同一の正規形に到達
特定の書換え戦略に従って全ての正規形が
求まるTRSの条件を明らかにする
特定の書換え戦略に従うことで冗長な
書換えの枝刈りが可能
12
研究背景・目的[2/2]
R=
H(0) → 0
H(s2(0))
H(0) → s(0)
U(H(s(0)))
H(s(x)) → U(H(x))
U(x) → s(s(x)) s2(H(s(0)))
U2(H(0))
H:自然数を1/2倍
する関数の逆関数
U2(0
)
s2(U(0)
)
s2(U(H(0))
)
U(s2(0))
s4(0)
U(s2(H(0)))
s4(H(0))
U2(s(0)
)
s2(U(s(0)))
U(s3(0))
s5(0)
深さ優先探索で37ステップの書換えが必要
13
研究背景・目的[2/2]
R=
H(0) → 0
H(s2(0))
H(0) → s(0)
U(H(s(0)))
H(s(x)) → U(H(x))
U(x) → s(s(x)) s2(H(s(0)))
U2(H(0))
H:自然数を1/2倍
する関数の逆関数
U2(0
)
s2(U(0)
)
:最内書換え
s2(U(H(0))
)
U(s2(0))
s4(0)
U(s2(H(0)))
s4(H(0))
U2(s(0)
)
s2(U(s(0)))
U(s3(0))
s5(0)
8ステップの最内書換えで全正規形に到達可能14
これまでの結果
定理 [酒井, 岡本, 坂部 : ‘03]
TRS Rが
t1→t2→t3→・・・といった無限
の書換えが存在しない
停止性を持つ
右線形
左辺の先頭でのみ規則の重なりをもつ(オーバーレイ)
であるとき
最内戦略が完全な書換え戦略となる
15
これまでの結果
定理 [酒井, 岡本, 坂部 : ‘03]
TRS Rが
f (x)→g(x,x)など右辺に同じ
変数が2度以上出現しない
停止性を持つ
右線形
左辺の先頭でのみ規則の重なりをもつ(オーバーレイ)
であるとき
最内戦略が完全な書換え戦略となる
16
これまでの結果
定理 [酒井, 岡本, 坂部 : ‘03]
TRS Rが
停止性を持つ
右線形
左辺の先頭でのみ規則の重なりをもつ(オーバーレイ)
であるとき
最内戦略が完全な書換え戦略となる
17
オーバーレイTRS
どの2つの規則も左辺の先頭以外で重なり
を持たないようなTRS
先頭以外での重なり:規則l1→r1,l2→r2に対してl1の真部分項とl2
が等しくなるような代入が存在
Ex:
R1=
f (g(x)) → x
f (x)
→
s(x)
h(x)
→ x
R2=
2つの規則が左辺の先頭より下で重な
f (g(x)) → x
g(x) → s(x) っているためR2はオーバーレイではない
h(x) → x
18
2つの規則が左辺の先頭で重な
っているためR1はオーバーレイ
TRSのクラスの拡張
オーバーレイという条件を拡張
inside left-to-right joinable
項s に対して t1 ←
s→
t2 ならば t1 → t2 が成立
*
t1 → t2 :0回以上の書換えでt1からt2に到達可能
*
Ex:
R=
f (x) → b
f (a) → b
a → c
Rはオーバーレイではない
f (a)
f (c)
b
Rはinside left-to-right joinable
19
定理
TRS Rが
停止性を持つ
右線形
inside left-to-right jonable
であるとき
最内戦略が完全な書換え戦略となる
20
例
Ex:
R=
f (x)
f (a)
f (d)
a
b
→
→
→
→
→
f (f (f (a)))
b
b
e
c
d
深さ優先探索で
65ステップの書換
えが必要
f (f (f (c)))
f (b)
f (f (b)))
f (d)
f (f (d)))
b
f (e)
d
e
21
例
Ex:
R=
f (x)
f (a)
f (d)
a
b
→
→
→
→
→
f (f (f (a)))
b
b
e
c
d
11ステップの最内
書換えで全正規
形に到達可能
f (f (f (c)))
f (b)
f (f (b)))
f (d)
f (f (d)))
b
f (e)
d
e
22
non-erasing TRSへの拡張
停止性の条件の拡張
各々の規則の左辺と右辺に現れる変数が等しい
Ex:
R1=
f (g(x) , y) → k(x,y)
h(x)
→ x
R2=
f (g(x) , y) → j(x)
h(x)
→ x
左辺と右辺に現れる変数が
等しいので non-erasing
左辺と右辺の変数が
異なる
23
non-erasing TRSでの例
Ex:
R=
f (g(x)) → f (x)
g(a) → c
a
→ a
c
→ a
f (a) → b
f
(g(a))
: 最内戦略
• non-erasing (かつ停止性を持たない)
• 右線形
• innermost left-to-right joinable
を満たすTRS
f
(a)
f
(g(a))
k
f
(g(a))
最内戦略が完全な戦略にならない
24
non-erasing TRSでの例
Ex:
R=
f (g(x)) → f (x)
g(a) → c
a
→ a
c
→ a
f (a) → b
• non-erasing (かつ停止性を持たない)
• 右線形
• 弱オーバーレイ
を満たすTRS
項 s に対して t1 ←
s→
t2 ならば t1≡t2 が成立
*
( t1 → t2ならば inside left-to-right joinable)
最内戦略が完全な戦略になる
25
まとめ
最内戦略に基づく書換え戦略が完全な戦
略になるようなTRSのクラスについて,
inside left-to-right joinable という性質を与
え拡張を行った
今後の課題
右線形・停止性という他の2つのTRSの条件
に対するさらなる拡張
26