Macro Tree Transducer の 型検査アルゴリズム

Slides:



Advertisements
Similar presentations
プログラミング言語論 第3回 BNF 記法について(演習付き) 篠埜 功. 構文の記述 プログラミング言語の構文はどのように定式化できるか? 例1 : for ループの中に for ループが書ける。 for (i=0; i
Advertisements

Macro Tree Transducers and Their Complexity
プログラミング言語論 第10回(演習) 情報工学科 木村昌臣   篠埜 功.
計算の理論 I -言語とオートマトン- 月曜3校時 大月 美佳.
コンパイラ 2011年10月17日
計算の理論 I 決定性有限オートマトン(DFA) と 非決定性有限オートマトン(NFA)
データ構造と アルゴリズム 理工学部 情報システム工学科 新田直也.
5.チューリングマシンと計算.
5.チューリングマシンと計算.
木変換の 逆正規性保存 On Inverse Regularity Preservation 稲葉 一浩(国立情報学研究所)
計算の理論 II NP完全 月曜4校時 大月美佳.
計算の理論 I ー DFAとNFAの等価性 ー 月曜3校時 大月 美佳.
演習3 最終発表 情報科学科4年 山崎孝裕.
プログラミング言語論 第4回 式の構文、式の評価
東京工科大学 コンピュータサイエンス学部 亀田弘之
計算の理論 II 文脈自由文法と プッシュダウンオートマトン
動的ハフマン符号化の例 入力:ABCDEからなる文字列 出力:動的に作ったハフマン木.
データ構造と アルゴリズム 知能情報学部 新田直也.
スタック長の 特徴付けによる 言語の非DCFL性 証明
コンパイラ 2012年10月15日
米澤研究室 全体ミーティング 2010/12/22 M2 渡邊裕貴.
二分探索木によるサーチ.
チューリング機械 状態の有限集合 ヘッドの方向を表す。 L:1コマ左へ R:1コマ右へ テープ記号の有限集合 入力記号の有限集合 動作関数
第2章 「有限オートマトン」.
形式言語とオートマトン2013 ー有限オートマトンー 第5日目
形式言語とオートマトン Formal Languages and Automata 第4日目
形式言語とオートマトン Formal Languages and Automata 第4日目
形式言語とオートマトン2008 ー有限オートマトンー
XML Transformation Language Based On Monadic Second Order Logic
プログラミング言語論 第3回 BNF記法について(演習付き)
正則言語 2011/6/27.
形式言語の理論 5. 文脈依存言語.
東京工科大学 コンピュータサイエンス学部 亀田弘之
計算の理論 I ー 正則表現(今度こそ) ー 月曜3校時 大月 美佳.
計算の理論 I 正則表現 月曜3校時 大月 美佳 平成15年6月9日 佐賀大学知能情報システム学科.
計算の理論 I ー 正則表現 ー 月曜3校時 大月 美佳.
形式言語とオートマトン Formal Languages and Automata 第4日目
オートマトンとチューリング機械.
 型推論1(単相型) 2007.
計算の理論 II 言語とクラス 月曜4校時 大月美佳.
ATTAPL輪講 (第4回) 続 Dependent Types
計算の理論 II 時間量と領域量 月曜5校時 大月美佳 2019/4/10 佐賀大学理工学部知能情報システム学科.
平成20年10月5日(月) 東京工科大学 コンピュータサイエンス学部 亀田弘之
計算の理論 II 前期の復習 -有限オートマトン-
計算の理論 I ε-動作を含むNFA 月曜3校時 大月 美佳 平成15年6月2日 佐賀大学知能情報システム学科.
東京工科大学 コンピュータサイエンス学部 亀田弘之
東京工科大学 コンピュータサイエンス学部 亀田弘之
2007年度 情報数理学.
プログラミング言語論 第9回 情報工学科 木村昌臣 篠埜 功.
 型推論3(MLの多相型).
モデル検査(5) CTLモデル検査アルゴリズム
形式言語とオートマトン 中間試験解答例 2016年11月15実施 中島毅.
平成26年4月22日(火) 東京工科大学 コンピュータサイエンス学部 亀田弘之
計算の理論 I 決定性有限オートマトン(DFA) と 非決定性有限オートマトン(NFA)
計算の理論 I 非決定性有限オートマトン(NFA)
5.チューリングマシンと計算.
計算の理論 I -プッシュダウンオートマトン-
計算の理論 I プッシュダウンオートマトン 火曜3校時 大月 美佳 平成16年7月6日 佐賀大学知能情報システム学科.
形式言語とオートマトン 第14回 プッシュダウンオートマトンと全体のまとめ
4.プッシュダウンオートマトンと 文脈自由文法の等価性
計算の理論 I NFAとDFAの等価性 火曜3校時 大月 美佳 平成16年5月18日 佐賀大学理工学部知能情報システム学科.
計算の理論 I ー 正則表現 ー 月曜3校時 大月 美佳.
コンパイラ 2012年10月11日
形式言語とオートマトン2016 ー有限オートマトンー 第4日目
計算の理論 I ε-動作を含むNFAと等価なDFA
計算の理論 I ε-動作を含むNFA 火曜3校時 大月 美佳 平成16年5月25日 佐賀大学知能情報システム学科.
非決定性有限オートマトン 状態の有限集合 入力記号の有限集合 注意 動作関数 初期状態 受理状態の有限集合.
形式言語とオートマトン Formal Languages and Automata 第5日目
計算の理論 I プッシュダウンオートマトン 月曜3校時 大月 美佳 平成15年7月7日 佐賀大学知能情報システム学科.
計算の理論 II 多テープTuring機械 月曜4校時 大月美佳 平成16年11月29日 佐賀大学知能情報システム学科.
Presentation transcript:

Macro Tree Transducer の 型検査アルゴリズム POPLミーティング 2006/05/31 稲葉 一浩

Introduction XML変換言語 型チェック Macro Tree Transducer XMLからXML(木構造から木構造)への変換に特化した専用言語 型チェック 専用言語の特徴を使って、λ計算やMLなどの一般的な型検査よりも詳細な検査ができる(可能性がある)。 Macro Tree Transducer 木構造変換の形式化のひとつ

発表のながれ いろいろと定義 型チェック MTTの型検査アルゴリズム 参考資料 Tree Tree Automaton Macro Tree Transducer 型チェック Forward type inference Inverse type inference MTTの型検査アルゴリズム 参考資料

定義 : Tree ランクつきアルファベット Σ上のTreeを以下で帰納的に定義 Σ = {σ1, σ2, ..., σn } rank : Σ → Nat Σ上のTreeを以下で帰納的に定義 t ::= σ1 ( t1, ..., trank(σ1) ) | σ2 ( t1, ..., trank(σ2) ) ... | σn ( t1, ..., trank(σn) )

例 : Tree c c b a a a Σ = { a, b, c } rank(a)=0, rank(b)=1, rank(c)=2 c(c(a,a), b(a)) c c b a a a

定義 : 決定性Tree Automaton A B C D E トップダウン ボトムアップ {Q, q0, F, δ, Σ} δσ : Q → Qrank(σ) ボトムアップ {Q, F, δ, Σ} δσ : Qrank(σ) → Q q2 ∈F? A q3 q1 B C q1 q2 D E

Tree Automaton と Regularity 「決定性ボトムアップツリーオートマトンの受理する木の集合」というのは、非常によい性質を持っている Regular (正規) 等価なさまざまな定式化 Regular Tree Grammar, MSO, ... 木構造に対する「型」として一般的によく使われている → 本発表では、木の「型」はツリーオートマトンで与えることにする。

Macro Tree Transducer (MTT) Treeを入力としてTreeを出力するもの トップダウンツリーオートマトン + 出力付き + アキュムレータ付き

定義 : MTT {Q, q0, Σ, Δ, ξ} Q : 状態集合 q0 : 始状態 ∈ Q Σ : 入力木のアルファベット Δ : 出力木のアルファベット ξ : 変換規則

定義 : MTT : 変換規則 ξ : 以下の形の「変換規則」の集合 q ∈ Q σ ∈ Σ, n=rank(σ) 関数名 引数(Σ上の木) 引数(Δ上の木) mはq毎に固定 q(σ(x1,...,xn) )( y1, ..., ym ) ⇒ (Δ ∪ q(xi) ∪ yj) 上のTree 関数の値

例1 : MTT 入力 Σ= {a, c} rank(a)=2, rank(c)=0 出力 Δ= {a, b, c} rank(b)=2 q0( a(x,y) )() ⇒ a( q1(x)(), q1(y)() ) q0( c() )() ⇒ c() q1( a(x,y) )() ⇒ b( q0(x)(), q0(y)() ) q1( c() )() ⇒ c()

例2 : MTT 入力 Σ = {a,b,c} rank(a)=(b)=1, (c)=0 出力 Δ = {a,c} q0( a(x) )() ⇒ a( q0(x)() ) q0( b(x) )() ⇒ q0(x)() q0( c() )() ⇒ c()

例3 : MTT 入力 Σ = {a,b,c} rank(a)=(b)=1, (c)=0 出力 Δ = {a,b,c} q0( a(x) )() ⇒ q1(x)( a(q2(x)()) ) q0( b(x) )() ⇒ q1(x)( b(q2(x)()) ) q0( c() )() ⇒ c() q1( a(x) )(y) ⇒ q1(x)( a(y) ) q1( b(x) )(y) ⇒ q1(x)( b(y) ) q1( c() )(y) ⇒ y q2( a(x) )() => q2(x)() q2( b(x) )() => q2(x)() q2( c() )() => c() q2( d() )() => d()

MTTの表現力 1個だと「そこそこ」 有限個のMTTを組み合わせることで、かなり実用的な変換言語と同等の記述力 TL [Manethら, 2005] : 3個のMTT k-pebble tree transducer : k+1個のMTT higher order tree transducer : k個のMTT

問題:「型検査」 入力Treeの型 (RI) =ツリーオートマトン 変換プログラム(τ) =MTT 出力Treeの型 (RO) =ツリーオートマトン forall x. (x : RI ⇒ τ(x) : RO) ???

Forward Type Inference 入力の型 RI と変換MTT τ から、 実際に出力されうる木の型 RO’ を計算 RO’ ⊆ RO ならOK ダメ MTTはRegularityを保存しない コピー q(a(x))() ⇒ b(q(x), q(x))

Inverse Type Inference 出力の型 RO と変換MTT τ から、 入力として受け取れる木の型 RI’ を計算 RI ⊆ RI’ なら OK 大丈夫! MTTの逆変換はRegularityを保存する!

アルゴリズム 出力型を表すオートマトン RO 変換MTT τ から、入力として取り得る木の型を表すオートマトン RI’ を構築する RI ⊆ RI’ の判定アルゴリズムは既知なのでOK

RI’の構築 RO = {P, Pf, Δ, β} τ = {Q, q0, Σ, Δ, ξ} RI’ = {D, Df, Σ, α} where D = { d | d : Q→(Pm→P) } Df= { d | d(q0)(())∈Pf }

RI’の構築 RI’ = {D, Df, Σ, α} where D = { d | d : Q→(Pm→P) } Df= { d | d(q0)(())∈Pf } ルートのノード x が状態 d∈Df になる if and only if その木を変換 q0(x) すると、 出力木の状態は Pf に入る が成立するように遷移関数を定める

RI’の構築 RI’ = {D, Df, Σ, α} where D = { d | d : Q→(Pm→P) } Df= { d | d(q0)(())∈Pf } 入力木のノード x が状態 d になる if and only if そのノード以下の部分木を変換 q(x,ys) すると、出力木の状態は d(q)(β(ys)) になる が常に成立するように遷移関数を定める

MTTの変換規則 RI’ = {D, Df, Σ, α} where D = { d | d : Q→(Pm→P) } Df= { d | d(q0)(())∈Pf } 関数名 引数(Σ上の木) 引数(Δ上の木) mはq毎に固定 q0(σ(x1,...,xn) )( y1, ..., ym ) ⇒ a( q1(x2)(y1,y3), q2(x4)(), c ) 関数の値

具体例 : “b”を削除するMTT q( a(x) )() ⇒ a( q(x)() ) q( b(x) )() ⇒ q(x)() 入力 Σ = {a,b,c} rank(a)=(b)=1, (c)=0 出力 Δ = {a,c} Q = {q} 入力型 b*c 出力型 c  とすると型検査が通ることを確認 q( a(x) )() ⇒ a( q(x)() ) q( b(x) )() ⇒ q(x)() q( c() )() ⇒ c()

具体例 : “b”を削除 出力型 c のオートマトン {P,Pf,Δ,β} 変換を表すMTT {Q,q,Σ,Δ,ξ} β(c)() = p0 β(a)(p) = p1 Pf = {p0} P = {p0,p1} q( a(x) )() ⇒ a( q(x)() ) q( b(x) )() ⇒ q(x)() q( c() )() ⇒ c()

参考資料 “A Comparison of Pebble Tree Transducers with Macro Tree Transducers”, Joost Engelfriet and Sebastian Maneth, 2003 “XML Type Checking Using High-Level Tree Transducer”, Akihiko Tozawa, 2006

おわり