狠狠撸

狠狠撸Share a Scribd company logo
有限モデル理論入門:?
MSOとオートマトン
RYOMA SIN’YA
AUTOMATA & LOGIC WORKSHOP @ AKITA-U. 27 MAR 2019
q0
q1
q2
q3
q4
q5
A
K
I
T
A
U
9A9B9C
0
B
B
B
B
B
B
B
B
@
8x
2
4
(A(x) ^ ?B(X) ^ ?C(x))
_(A(x) ^ ?B(X) ^ ?C(x))
_(A(x) ^ ?B(X) ^ ?C(x))
3
5
^
8x, y E(x, y) ! ?
2
4
(A(x) ^ A(y))
_(B(x) ^ B(y))
_(C(x) ^ C(y))
3
5
1
C
C
C
C
C
C
C
C
A
有限モデル理論入門:?
MSOとオートマトン
RYOMA SIN’YA
AUTOMATA & LOGIC WORKSHOP @ AKITA-U. 27 MAR 2019
q0
q1
q2
q3
q4
q5
A
K
I
T
A
U
9A9B9C
0
B
B
B
B
B
B
B
B
@
8x
2
4
(A(x) ^ ?B(X) ^ ?C(x))
_(A(x) ^ ?B(X) ^ ?C(x))
_(A(x) ^ ?B(X) ^ ?C(x))
3
5
^
8x, y E(x, y) ! ?
2
4
(A(x) ^ A(y))
_(B(x) ^ B(y))
_(C(x) ^ C(y))
3
5
1
C
C
C
C
C
C
C
C
A
の「ただならぬ関係」!
導入
本講演の概要
導入
本講演の概要
「タイプは芸術だ!」
導入
本講演の概要
「タイプは芸術だ!」
※この図の意味は後で説明します
導入
正規言語とは
? 正規表現(regular expression)で書ける言語
? オートマトンで受理できる言语
導入
正規言語とは
? 正規表現(regular expression)で書ける言語
? オートマトンで受理できる言语
? 例:a*(ba*b)*a*?
  = {ε, a, aa, bb, aaa, abb, bab, bba, … }?
  =「bの個数が偶数個の{a,b}上の文字列」?
  
導入
正規言語とは
? 正規表現(regular expression)で書ける言語
? オートマトンで受理できる言语
? 例:a*(ba*b)*a*?
  = {ε, a, aa, bb, aaa, abb, bab, bba, … }?
  =「bの個数が偶数個の{a,b}上の文字列」?
  
q0 q1
b
b
a a
導入
正規言語は多様な特徴づけを持つ
正規言語
(文字列の集合)
{ε, a, aa, bb, aaa, abb, bab, bbb, ...}
0
a
1
b
b
a
有限オートマトン
(計算モデル)
有限モノイド
(代数モデル)
単項二階述語論理
(論理式)
正規文法
(生成文法)
正規表現
(表現式)
a*(ba*ba*)*
Pro?nite words
上の開閉集合
(トポロジー)
? 非自明だが同値な定義
? 式,文法,計算モデル,
代数,論理式,トポロ
ジー, etc….
? 「普遍的な概念は多様な?
 特徴付けを持つ」
導入
正規言語は多様な特徴づけを持つ
正規言語
(文字列の集合)
{ε, a, aa, bb, aaa, abb, bab, bbb, ...}
0
a
1
b
b
a
有限オートマトン
(計算モデル)
有限モノイド
(代数モデル)
単項二階述語論理
(論理式)
正規文法
(生成文法)
正規表現
(表現式)
a*(ba*ba*)*
Pro?nite words
上の開閉集合
(トポロジー)
? 非自明だが同値な定義
? 式,文法,計算モデル,
代数,論理式,トポロ
ジー, etc….
? 「普遍的な概念は多様な?
 特徴付けを持つ」
導入
正規言語は多様な特徴づけを持つ
正規言語
(文字列の集合)
{ε, a, aa, bb, aaa, abb, bab, bbb, ...}
0
a
1
b
b
a
有限オートマトン
(計算モデル)
有限モノイド
(代数モデル)
単項二階述語論理
(論理式)
正規文法
(生成文法)
正規表現
(表現式)
a*(ba*ba*)*
Pro?nite words
上の開閉集合
(トポロジー)
? 非自明だが同値な定義
? 式,文法,計算モデル,
代数,論理式,トポロ
ジー, etc….
? 「普遍的な概念は多様な?
 特徴付けを持つ」
? 本資料ではオートマトンと?
単項二階述語論理の関係を学ぶ!
有限モデル理论入门:惭厂翱とオートマトン
目次
? 文字列(モデル)と论理式
? 一階述語論理式(FO) vs. 単項二階述語論理式(MSO)
? オートマトンとBüchiの定理(前半)
? オートマトンとBüchiの定理(後半)
文字列(モデル)と论理式
文字列(モデル)と论理式
文字列を構造として表す
? 有限長の文字列は有限の構造として次のように表現できる.
? Universe: 文字列のインデックス集合(自然数要素)
? 各文字 σ ∈ Σ に対してインデックスに対応する文字がσで
ある時のみ真となる1引数述語 Pσ ,及び
? インデックスの大小比較を行う二項関係 <
文字列(モデル)と论理式
文字列を構造として表す
? 以降,文字列 に対応する構造をMsと書く.
文字列
文字列(モデル)と论理式
文字列を構造として表す
? 以降,文字列 に対応する構造をMsと書く.
文字列
構造
文字列(モデル)と论理式
文字列を構造として表す
? 以降,文字列 に対応する構造をMsと書く.
文字列
構造
文字列の長さが6なので,
universeは1~6までの集合.
文字列(モデル)と论理式
文字列を構造として表す
? 以降,文字列 に対応する構造をMsと書く.
文字列
構造
文字列の長さが6なので,
universeは1~6までの集合.
インデックスと文字を紐付
ける述語.
文字列(モデル)と论理式
論理式で言語を記述する
? 正規表現が文字列の集合を記述する様に,論理式は自身を
充足する構造(文字列),すなわちモデルの集合を記述する.
? つまり,文字列を構造と見なす先ほどの表現を考えれば, 
論理式は「言語の記述」に他ならない.
? 論理式Φを満たす文字列の集合をL(Φ)と記述する:
L(Φ) = {s 2 ??
| Ms |= Φ}
文字列(モデル)と论理式
論理式で言語を記述する
? 正規表現が文字列の集合を記述する様に,論理式は自身を
充足する構造(文字列),すなわちモデルの集合を記述する.
? つまり,文字列を構造と見なす先ほどの表現を考えれば, 
論理式は「言語の記述」に他ならない.
? 論理式Φを満たす文字列の集合をL(Φ)と記述する:
L(Φ) = {s 2 ??
| Ms |= Φ}
この記号 |= はTeXでは models と書く.?
「ゲタ記号」などとも呼ばれる.
文字列(モデル)と论理式
論理式で言語を記述する(例)
文字列(モデル)と论理式
論理式で言語を記述する(例)
 の後ろに が来ないという論理式.
文字列(モデル)と论理式
論理式で言語を記述する(例)
 の後ろに が来ないという論理式.
とすると    なので
( )
文字列(モデル)と论理式
論理式で言語を記述する(例)
 の後ろに が来ないという論理式.
とすると    なので
( )
文字列(モデル)と论理式
論理式で言語を記述する(例)
 の後ろに が来ないという論理式.
とすると    なので
つまり は正規表現でいう所の  に他ならない!
( )
一階述語論理式(FO) VS.?
単項二階述語論理式(MSO)
9x : element vs. 9X : set
一階述語論理式(FO) VS. 単項二階述語論理式(MSO)
正規言語=一階述語論理式で定義可能?
? a*b*という正規表現は一階述語論理式で定義することがで
きた:
? では全ての正規表現は一階論理の範囲で記述できるのか?ま
たその逆はどうなのか?
一階述語論理式(FO) VS. 単項二階述語論理式(MSO)
正規言語=一階述語論理式で定義可能?
? a*b*という正規表現は一階述語論理式で定義することがで
きた:
? では全ての正規表現は一階論理の範囲で記述できるのか?ま
たその逆はどうなのか?
? 実は,一階論理で記述できる言語のクラスは正規言語のサブ
クラスにしかならない.つまり正規言語を記述するのに一階
論理では弱すぎる!
? では単純に二階に上がってみるとどうか?実際,一階で記述
できる範囲よりはるかに広い範囲で言語の記述できる
一階述語論理式(FO) VS. 単項二階述語論理式(MSO)
正規言語=二階述語論理式で定義可能?
? では単純に二階に上がってみるとどうか?実際,一階で記述
できる範囲よりはるかに広い範囲で言語の記述できる
一階述語論理式(FO) VS. 単項二階述語論理式(MSO)
正規言語=二階述語論理式で定義可能?
? しかし,実は,二階論理は正規言語より真に広い言語クラ
スを記述できる能力を持つ.?
つまり,正規言語を記述するのに二階論理では強すぎる!
? では単純に二階に上がってみるとどうか?実際,一階で記述
できる範囲よりはるかに広い範囲で言語の記述できる
一階述語論理式(FO) VS. 単項二階述語論理式(MSO)
正規言語=二階述語論理式で定義可能?
? しかし,実は,二階論理は正規言語より真に広い言語クラ
スを記述できる能力を持つ.?
つまり,正規言語を記述するのに二階論理では強すぎる!
例えば,以下の論理式は非正規言語?
「aとbの出現回数が等しい文字列の集合」?
を記述している.
? では単純に二階に上がってみるとどうか?実際,一階で記述
できる範囲よりはるかに広い範囲で言語の記述できる
一階述語論理式(FO) VS. 単項二階述語論理式(MSO)
正規言語=二階述語論理式で定義可能?
? しかし,実は,二階論理は正規言語より真に広い言語クラ
スを記述できる能力を持つ.?
つまり,正規言語を記述するのに二階論理では強すぎる!
例えば,以下の論理式は非正規言語?
「aとbの出現回数が等しい文字列の集合」?
を記述している.
? では単純に二階に上がってみるとどうか?実際,一階で記述
できる範囲よりはるかに広い範囲で言語の記述できる
一階述語論理式(FO) VS. 単項二階述語論理式(MSO)
正規言語=二階述語論理式で定義可能?
? しかし,実は,二階論理は正規言語より真に広い言語クラ
スを記述できる能力を持つ.?
つまり,正規言語を記述するのに二階論理では強すぎる!
例えば,以下の論理式は非正規言語?
「aとbの出現回数が等しい文字列の集合」?
を記述している.
二項関係を量化できるぐらい強いと「全単射の
存在」まで記述できる.そのため「集合の元の
個数が等しい」のようなモノが書けて正規言語
の範囲を超えてしまう.
? では単純に二階に上がってみるとどうか?実際,一階で記述
できる範囲よりはるかに広い範囲で言語の記述できる
一階述語論理式(FO) VS. 単項二階述語論理式(MSO)
正規言語=二階述語論理式で定義可能?
? しかし,実は,二階論理は正規言語より真に広い言語クラ
スを記述できる能力を持つ.?
つまり,正規言語を記述するのに二階論理では強すぎる!
例えば,以下の論理式は非正規言語?
「aとbの出現回数が等しい文字列の集合」?
を記述している.
二項関係を量化できるぐらい強いと「全単射の
存在」まで記述できる.そのため「集合の元の
個数が等しい」のようなモノが書けて正規言語
の範囲を超えてしまう.

なら単項関係,つまり集合の量化のみに制限し
た二階論理ならばいけるのでは(直感)?
一階述語論理式(FO) VS. 単項二階述語論理式(MSO)
正規言語=単項二階述語論理式で定義可能!
( J.R. Büchi, 1960)
言語 が正規言語である ? は単項二階論理
(Monadic Second Order Logic, MSO)で記述
可能である.
? 「正規言語 ? MSO記述可能」は簡単.?
オートマトンをシミュレートする論理式を素直にMSOで記述すること
が出来る(定理の前半).
? その逆「MSO記述可能?正規言語」がやや難しい(定理の後半).
一階述語論理式(FO) VS. 単項二階述語論理式(MSO)
FO VS. MSO
? FO(一階論理)で記述できなくてMSOで記述できる言語,す
なわちFOで記述できないのはどういう言語か?
? 例えば(ab)*はFOで記述できるが,(aa)*はFOでは記述でき
ない!
? この事実は一階論理とオートマトンの代数的性質の対応,
あるいはEhrenfeucht–Fra?ssé gameなどの有限モデル理論
の道具を用いて示せるが本講演では紹介しない.
一階述語論理式(FO) VS. 単項二階述語論理式(MSO)
MSOはFOより真に強い
(aa)* = 「偶数個の”a”の繰り返し」は以下のMSO式で表せる:
?X
?
?
?x (?rst(x) → X(x))
∧ ?x (last(x) → ?X(x))
∧ ?x?y succ<(x, y) → (X(x) ? ?X(y))
?
? ,
where ?rst(x) stands for ?y (y ≥ x), last(x) stands for ?y (y ≤ x), and
succ<(x, y) stands for (x < y) ∧ ??z (x < z ∧ z < y).
オートマトンとB?CHIの定理
(前半)
q0
q1
q2
q3
q4
q5
A
K
I
T
A
U
オートマトンとB?CHIの定理
(前半)
q0
q1
q2
q3
q4
q5
A
K
I
T
A
U
9X09X1 · · · 9Xm?1 'part ^ 'start ^ 'trans ^ 'accept
オートマトンとB?CHIの定理(前半)
正規言語=単項二階述語論理式で定義可能!
? 「正規言語 ? MSO記述可能」は簡単.?
オートマトンをシミュレートする論理式を素直にMSOで記述すること
が出来る(定理の前半).
? その逆「MSO記述可能?正規言語」がやや難しい(定理の後半).
( J.R. Büchi, 1960)
言語 が正規言語である ? は単項二階論理
(Monadic Second Order Logic, MSO)で記述
可能である.
オートマトンとB?CHIの定理(前半)
「正規言語 ? MSO記述可能」を示す
A = (Q, q0, F, δ)        を状態集合Q,初期状態 q0,受理状態集合F,?
遷移関数δ: Q × Σ → Q とする決定性オートマトン,でm個の?
状態があるとする: .Q = {q0, . . . , qm?1}
オートマトンとB?CHIの定理(前半)
「正規言語 ? MSO記述可能」を示す
A = (Q, q0, F, δ)        を状態集合Q,初期状態 q0,受理状態集合F,?
遷移関数δ: Q × Σ → Q とする決定性オートマトン,でm個の?
状態があるとする: .
L(A)が以下のMSO論理式で表せられることを示す.
Q = {q0, . . . , qm?1}
ΦA = 9X09X1 · · · 9Xm?1 'part ^ 'start ^ 'trans ^ 'accept.
オートマトンとB?CHIの定理(前半)
「正規言語 ? MSO記述可能」を示す
A = (Q, q0, F, δ)        を状態集合Q,初期状態 q0,受理状態集合F,?
遷移関数δ: Q × Σ → Q とする決定性オートマトン,でm個の?
状態があるとする: .
L(A)が以下のMSO論理式で表せられることを示す.
Q = {q0, . . . , qm?1}
ざっくり直感を言うとこの論理式はオートマトンAによる計
算をシミュレートしており,各Xiに対してx ∈ Xi は?
「x番目の文字を呼んで状態qiに遷移する」を表している.
ΦA = 9X09X1 · · · 9Xm?1 'part ^ 'start ^ 'trans ^ 'accept.
オートマトンとB?CHIの定理(前半)
ΦA = 9X09X1 · · · 9Xm?1 'part ^ 'start ^ 'trans ^ 'accept.
A = (Q, q0, F, δ) where Q = {q0, . . . , qm?1}
オートマトンとB?CHIの定理(前半)
ΦA = 9X09X1 · · · 9Xm?1 'part ^ 'start ^ 'trans ^ 'accept.
A = (Q, q0, F, δ) where Q = {q0, . . . , qm?1}
オートマトンとB?CHIの定理(前半)
ΦA = 9X09X1 · · · 9Xm?1 'part ^ 'start ^ 'trans ^ 'accept.
A = (Q, q0, F, δ) where Q = {q0, . . . , qm?1}
オートマトンとB?CHIの定理(前半)
ΦA = 9X09X1 · · · 9Xm?1 'part ^ 'start ^ 'trans ^ 'accept.
A = (Q, q0, F, δ) where Q = {q0, . . . , qm?1}
φpartは各 X0, X1, …, Xm-1がインデックス集合の分割になっている
ことを表している:
オートマトンとB?CHIの定理(前半)
ΦA = 9X09X1 · · · 9Xm?1 'part ^ 'start ^ 'trans ^ 'accept.
A = (Q, q0, F, δ) where Q = {q0, . . . , qm?1}
φpartは各 X0, X1, …, Xm-1がインデックス集合の分割になっている
ことを表している:
?x
m?1
i=0
Xi(x) ∧
j?=i
?Xj(x)'part =
オートマトンとB?CHIの定理(前半)
ΦA = 9X09X1 · · · 9Xm?1 'part ^ 'start ^ 'trans ^ 'accept.
A = (Q, q0, F, δ) where Q = {q0, . . . , qm?1}
オートマトンとB?CHIの定理(前半)
ΦA = 9X09X1 · · · 9Xm?1 'part ^ 'start ^ 'trans ^ 'accept.
A = (Q, q0, F, δ) where Q = {q0, . . . , qm?1}
φstartは分割の先頭が初期状態からの状態遷移と等しいことを表
している:
オートマトンとB?CHIの定理(前半)
ΦA = 9X09X1 · · · 9Xm?1 'part ^ 'start ^ 'trans ^ 'accept.
A = (Q, q0, F, δ) where Q = {q0, . . . , qm?1}
φstartは分割の先頭が初期状態からの状態遷移と等しいことを表
している:
?x
a∈Σ
Pa(x) ∧ ?y (y ≥ x) → Xδ(q0,a)(x)'start =
オートマトンとB?CHIの定理(前半)
ΦA = 9X09X1 · · · 9Xm?1 'part ^ 'start ^ 'trans ^ 'accept.
A = (Q, q0, F, δ) where Q = {q0, . . . , qm?1}
オートマトンとB?CHIの定理(前半)
ΦA = 9X09X1 · · · 9Xm?1 'part ^ 'start ^ 'trans ^ 'accept.
A = (Q, q0, F, δ) where Q = {q0, . . . , qm?1}
φtransは各 X0, X1, …, Xm-1がオートマトンの状態遷移δに従ってい
ることを表している:
オートマトンとB?CHIの定理(前半)
ΦA = 9X09X1 · · · 9Xm?1 'part ^ 'start ^ 'trans ^ 'accept.
A = (Q, q0, F, δ) where Q = {q0, . . . , qm?1}
φtransは各 X0, X1, …, Xm-1がオートマトンの状態遷移δに従ってい
ることを表している:
?x?y
m?1
i=0 a∈Σ
(x ? y) ∧ Xi(x) ∧ Pa(y) → Xδ(qi,a)(y)
'trans =
オートマトンとB?CHIの定理(前半)
ΦA = 9X09X1 · · · 9Xm?1 'part ^ 'start ^ 'trans ^ 'accept.
A = (Q, q0, F, δ) where Q = {q0, . . . , qm?1}
オートマトンとB?CHIの定理(前半)
ΦA = 9X09X1 · · · 9Xm?1 'part ^ 'start ^ 'trans ^ 'accept.
A = (Q, q0, F, δ) where Q = {q0, . . . , qm?1}
φacceptは最後の状態が受理状態であることを表している:
オートマトンとB?CHIの定理(前半)
ΦA = 9X09X1 · · · 9Xm?1 'part ^ 'start ^ 'trans ^ 'accept.
A = (Q, q0, F, δ) where Q = {q0, . . . , qm?1}
φacceptは最後の状態が受理状態であることを表している:
?x ?y (y ≤ x) →
qi∈F
Xi(x)'accept =
オートマトンとB?CHIの定理(前半)
ΦA = 9X09X1 · · · 9Xm?1 'part ^ 'start ^ 'trans ^ 'accept.
A = (Q, q0, F, δ) where Q = {q0, . . . , qm?1}
オートマトンとB?CHIの定理(前半)
ΦA = 9X09X1 · · · 9Xm?1 'part ^ 'start ^ 'trans ^ 'accept.
A = (Q, q0, F, δ) where Q = {q0, . . . , qm?1}
φpart,φstart,φtrans,φaccept のそれぞれの定義より
であることは明らか.
L(A) = L(ΦA) = {s 2 ??
| Ms |= ΦA}
オートマトンとB?CHIの定理(前半)
正規言語=単項二階述語論理式で定義可能!
? 「正規言語 ? MSO記述可能」は簡単.?
オートマトンをシミュレートする論理式を素直にMSOで記述する
ことが出来る(定理の前半).
( J.R. Büchi, 1960)
言語 が正規言語である ? は単項二階論理
(Monadic Second Order Logic, MSO)で記述
可能である.
? 実際,ここでの証明から「正規言語??MSO記述可能」
となることがわかる.
オートマトンとB?CHIの定理
(後半)
オートマトンとB?CHIの定理(後半)
正規言語=単項二階述語論理式で定義可能!
? 「正規言語 ? MSO記述可能」は簡単.?
オートマトンをシミュレートする論理式を素直にMSOで記述すること
が出来る(定理の前半).
? その逆「MSO記述可能?正規言語」がやや難しい(定理の後半).
( J.R. Büchi, 1960)
言語 が正規言語である ? は単項二階論理
(Monadic Second Order Logic, MSO)で記述
可能である.
オートマトンとB?CHIの定理(後半)
「MSO記述可能?正規言語」を示す
? そのためには量化ランク(quanti?er rank, qr) とタイプ(type)
と呼ばれる概念を導入する必要がある.
? タイプの概念はモデル理論においても重要であるが,?
有限モデル理論においても重要となる.
? ただし,特にBüchiの定理の証明においては使われ方が普
通のモデル理論における使われ方と異なる(多分.モデル
理論詳しくないけど).
オートマトンとB?CHIの定理(後半)
量化ランク
? 量化ランクはMSO論理式φに対して帰納的に定義される
次の値qr(φ)である.
qr(9x') = qr(8x') = qr(') + 1
qr(9X') = qr(8X') = qr(') + 1
qr(x = y) = qr(x < y) = qr(Pa(x)) = qr(x 2 X) = 0
qr(?') = qr(')
qr('1 _ '2) = qr('1 ^ '2) = max(qr('1), qr('2))
オートマトンとB?CHIの定理(後半)
量化ランク
? 量化ランクはMSO論理式φに対して帰納的に定義される
次の値qr(φ)である.
qr(9x') = qr(8x') = qr(') + 1
qr(9X') = qr(8X') = qr(') + 1
qr(x = y) = qr(x < y) = qr(Pa(x)) = qr(x 2 X) = 0
qr(?') = qr(')
qr('1 _ '2) = qr('1 ^ '2) = max(qr('1), qr('2))
? つまりqr(φ)は「φの量化子のネストの最大値」を表す.
オートマトンとB?CHIの定理(後半)
量化ランク
? 量化ランクがたかだかkであるような自由変数の無い
MSO論理式(つまりMSOセンテンス)の集合をMSO[k]で
表す.
オートマトンとB?CHIの定理(後半)
量化ランク
? 量化ランクがたかだかkであるような自由変数の無い
MSO論理式(つまりMSOセンテンス)の集合をMSO[k]で
表す.
? 重要な点は,MSO[k]は(論理的同値で割ると)たかだか?
有限個の論理式しか含まないということである.
? これは論理式の量化ランクと自由変数の個数に対する帰
納法で簡単に示すことができる.
オートマトンとB?CHIの定理(後半)
タイプ
? MSO[k]の部分集合Tがconsistentな場合,すなわちある
文字列 s ∈ Σ* で?
?
となる(モデルを持つ)場合にTをk-タイプと呼ぶ.あるい
はTを文字列sのk-タイプと呼ぶ.
T = {Φ 2 MSO[k] | Ms |= Φ}
オートマトンとB?CHIの定理(後半)
タイプ
? MSO[k]の部分集合Tがconsistentな場合,すなわちある
文字列 s ∈ Σ* で?
?
となる(モデルを持つ)場合にTをk-タイプと呼ぶ.あるい
はTを文字列sのk-タイプと呼ぶ.
T = {Φ 2 MSO[k] | Ms |= Φ}
例
T = {Φ 2 MSO[1] | M" |= Φ}
オートマトンとB?CHIの定理(後半)
タイプ
? MSO[k]の部分集合Tがconsistentな場合,すなわちある
文字列 s ∈ Σ* で?
?
となる(モデルを持つ)場合にTをk-タイプと呼ぶ.あるい
はTを文字列sのk-タイプと呼ぶ.
T = {Φ 2 MSO[k] | Ms |= Φ}
例
T = {Φ 2 MSO[1] | M" |= Φ}
は空文字列 ε ∈ {a,b}*の1-タイプ
= {8x (x = x), 8x ?(x = x),
8x Pa(x), 8x Pb(x), 8x Pa(x) _ 8x Pb(x)}
オートマトンとB?CHIの定理(後半)
タイプ
? MSO[k]は文字列の集合を有限個のタイプに分割する:
{a, b}?
オートマトンとB?CHIの定理(後半)
タイプ
? MSO[k]は文字列の集合を有限個のタイプに分割する:
8x (Pa(x))
{a, b}?
オートマトンとB?CHIの定理(後半)
タイプ
? MSO[k]は文字列の集合を有限個のタイプに分割する:
8x (Pa(x))
true
false
{a, b}?
オートマトンとB?CHIの定理(後半)
タイプ
? MSO[k]は文字列の集合を有限個のタイプに分割する:
8x (Pa(x))
aaa true
false
{a, b}?
オートマトンとB?CHIの定理(後半)
タイプ
? MSO[k]は文字列の集合を有限個のタイプに分割する:
8x (Pa(x))
aaa
aba
true
false
{a, b}?
オートマトンとB?CHIの定理(後半)
タイプ
? MSO[k]は文字列の集合を有限個のタイプに分割する:
8x (Pa(x))
aaa
aba
true
false
{a, b}?
9x(Pb(x))
true
false
オートマトンとB?CHIの定理(後半)
タイプ
? MSO[k]は文字列の集合を有限個のタイプに分割する:
8x (Pa(x))
aaa
aba
true
false
{a, b}?
ΦaA? = 9x(8y(x ? y) ) Pa(x))
9x(Pb(x))
true
false
オートマトンとB?CHIの定理(後半)
タイプ
? MSO[k]は文字列の集合を有限個のタイプに分割する:
8x (Pa(x))
aaa
aba
true
false
{a, b}?
ΦaA? = 9x(8y(x ? y) ) Pa(x))
ΦaA?
true
false
9x(Pb(x))
true
false
オートマトンとB?CHIの定理(後半)
タイプ
? MSO[k]は文字列の集合を有限個のタイプに分割する:
8x (Pa(x))
aaa
aba
true
false
{a, b}?
ΦaA? = 9x(8y(x ? y) ) Pa(x))
ΦaA?
true
false
9x(Pb(x))
true
false
abbab
オートマトンとB?CHIの定理(後半)
タイプ
? MSO[k]は文字列の集合を有限個のタイプに分割する:
8x (Pa(x))
aaa
aba
true
false
{a, b}?
ΦaA? = 9x(8y(x ? y) ) Pa(x))
ΦaA?
true
false
9x(Pb(x))
true
false
abbab
bbab
オートマトンとB?CHIの定理(後半)
タイプ
? MSO[k]は文字列の集合を有限個のタイプに分割する:
8x (Pa(x))
aaa
aba
true
false
{a, b}?
ΦaA? = 9x(8y(x ? y) ) Pa(x))
ΦaA?
true
false
9x(Pb(x))
true
false
abbab
bbab
オートマトンとB?CHIの定理(後半)
タイプ
? MSO[k]は文字列の集合を有限個のタイプに分割する:
8x (Pa(x))
aaa
aba
true
false
{a, b}?
ΦaA? = 9x(8y(x ? y) ) Pa(x))
ΦaA?
true
false
9x(Pb(x))
true
false
abbab
bbab
オートマトンとB?CHIの定理(後半)
タイプ
? MSO[k]は文字列の集合を有限個のタイプに分割する:
8x (Pa(x))
aaa
aba
true
false
{a, b}?
ΦaA? = 9x(8y(x ? y) ) Pa(x))
ΦaA?
true
false
9x(Pb(x))
true
false
abbab
bbab
オートマトンとB?CHIの定理(後半)
タイプ
? MSO[k]は文字列の集合を有限個のタイプに分割する:
8x (Pa(x))
aaa
aba
true
false
{a, b}?
ΦaA? = 9x(8y(x ? y) ) Pa(x))
ΦaA?
true
false
9x(Pb(x))
true
false
abbab
bbab
オートマトンとB?CHIの定理(後半)
タイプ
? MSO[k]は文字列の集合を有限個のタイプに分割する:
8x (Pa(x))
aaa
aba
true
false
{a, b}?
ΦaA? = 9x(8y(x ? y) ) Pa(x))
ΦaA?
true
false
9x(Pb(x))
true
false
abbab
bbab
オートマトンとB?CHIの定理(後半)
タイプ
? MSO[k]は文字列の集合を有限個のタイプに分割する:
8x (Pa(x))
aaa
aba
true
false
{a, b}?
ΦaA? = 9x(8y(x ? y) ) Pa(x))
ΦaA?
true
false
9x(Pb(x))
true
false
abbab
bbab
オートマトンとB?CHIの定理(後半)
タイプ
? MSO[k]は文字列の集合を有限個のタイプに分割する:
8x (Pa(x))
aaa
aba
true
false
{a, b}?
ΦaA? = 9x(8y(x ? y) ) Pa(x))
ΦaA?
true
false
9x(Pb(x))
true
false
abbab
bbab
オートマトンとB?CHIの定理(後半)
タイプ
? MSO[k]は文字列の集合を有限個のタイプに分割する:
8x (Pa(x))
aaa
aba
true
false
{a, b}?
ΦaA? = 9x(8y(x ? y) ) Pa(x))
ΦaA?
true
false
9x(Pb(x))
true
false
"
abbab
bbab
オートマトンとB?CHIの定理(後半)
cf. Wassily Kandinsky “circles in a circle” (1923)
オートマトンとB?CHIの定理(後半)
cf. Wassily Kandinsky “circles in a circle” (1923)
「タイプは芸術だ!」
オートマトンとB?CHIの定理(後半)
タイプ
? MSO[k]は文字列の集合を有限個のタイプに分割する:
8x (Pa(x))
aaa
aba
true
false
{a, b}?
ΦaA? = 9x(8y(x ? y) ) Pa(x))
ΦaA?
true
false
9x(Pb(x))
true
false
"
abbab
bbab
オートマトンとB?CHIの定理(後半)
(改めて)「MSO記述可能?正規言語」を示す
Φ 2 MSO[k]
L(Φ) = {s 2 ??
| Ms |= Φ} = L(A)                となるオートマトンAを
構成する.このとき,Aはタイプを用いて次のように構成でき
る:        ここでA = (Q, T0, F, δ)
オートマトンとB?CHIの定理(後半)
(改めて)「MSO記述可能?正規言語」を示す
Φ 2 MSO[k]
L(Φ) = {s 2 ??
| Ms |= Φ} = L(A)                となるオートマトンAを
構成する.このとき,Aはタイプを用いて次のように構成でき
る:        ここでA = (Q, T0, F, δ)
T0 = T" = {φ 2 MSO[k] | M" |= φ}は空文字列のk-タイプ
オートマトンとB?CHIの定理(後半)
(改めて)「MSO記述可能?正規言語」を示す
Φ 2 MSO[k]
L(Φ) = {s 2 ??
| Ms |= Φ} = L(A)                となるオートマトンAを
構成する.このとき,Aはタイプを用いて次のように構成でき
る:        ここでA = (Q, T0, F, δ)
T0 = T" = {φ 2 MSO[k] | M" |= φ}は空文字列のk-タイプ
Q = {T0, . . . , Tm}は全てのk-タイプの集合
オートマトンとB?CHIの定理(後半)
(改めて)「MSO記述可能?正規言語」を示す
Φ 2 MSO[k]
L(Φ) = {s 2 ??
| Ms |= Φ} = L(A)                となるオートマトンAを
構成する.このとき,Aはタイプを用いて次のように構成でき
る:        ここでA = (Q, T0, F, δ)
T0 = T" = {φ 2 MSO[k] | M" |= φ}は空文字列のk-タイプ
Q = {T0, . . . , Tm}は全てのk-タイプの集合
F ? QはΦとconsistentなk-タイプの集合
オートマトンとB?CHIの定理(後半)
(改めて)「MSO記述可能?正規言語」を示す
Φ 2 MSO[k]
L(Φ) = {s 2 ??
| Ms |= Φ} = L(A)                となるオートマトンAを
構成する.このとき,Aはタイプを用いて次のように構成でき
る:        ここでA = (Q, T0, F, δ)
T0 = T" = {φ 2 MSO[k] | M" |= φ}は空文字列のk-タイプ
Q = {T0, . . . , Tm}は全てのk-タイプの集合
F ? QはΦとconsistentなk-タイプの集合
δ(Ts, a) = Tsa i? Tsはある文字列sのk-タイプ?
  かつTsaはsaのk-タイプ
オートマトンとB?CHIの定理(後半)
タイプ
? MSO[k]は文字列の集合を有限個のタイプに分割する:
8x (Pa(x))
aaa
aba
true
false
{a, b}?
ΦaA? = 9x(8y(x ? y) ) Pa(x))
ΦaA?
true
false
9x(Pb(x))
true
false
"
abbab
bbab
オートマトンとB?CHIの定理(後半)
タイプ
? MSO[k]は文字列の集合を有限個のタイプに分割する:
8x (Pa(x))
aaa
aba
true
false
{a, b}?
ΦaA? = 9x(8y(x ? y) ) Pa(x))
ΦaA?
true
false
9x(Pb(x))
true
false
abbab
bbab
オートマトンとB?CHIの定理(後半)
タイプ
? MSO[k]は文字列の集合を有限個のタイプに分割する:
8x (Pa(x))
aaa
aba
true
false
{a, b}?
ΦaA? = 9x(8y(x ? y) ) Pa(x))
ΦaA?
true
false
9x(Pb(x))
true
false
abbab
bbab
q0
オートマトンとB?CHIの定理(後半)
タイプ
? MSO[k]は文字列の集合を有限個のタイプに分割する:
8x (Pa(x))
aaa
aba
true
false
{a, b}?
ΦaA? = 9x(8y(x ? y) ) Pa(x))
ΦaA?
true
false
9x(Pb(x))
true
false
abbab
bbab
q0 q1
オートマトンとB?CHIの定理(後半)
タイプ
? MSO[k]は文字列の集合を有限個のタイプに分割する:
8x (Pa(x))
aaa
aba
true
false
{a, b}?
ΦaA? = 9x(8y(x ? y) ) Pa(x))
ΦaA?
true
false
9x(Pb(x))
true
false
abbab
bbab
q0 q1q2
オートマトンとB?CHIの定理(後半)
タイプ
? MSO[k]は文字列の集合を有限個のタイプに分割する:
8x (Pa(x))
aaa
aba
true
false
{a, b}?
ΦaA? = 9x(8y(x ? y) ) Pa(x))
ΦaA?
true
false
9x(Pb(x))
true
false
abbab
bbab
q0 q1q2
q3
オートマトンとB?CHIの定理(後半)
タイプ
? MSO[k]は文字列の集合を有限個のタイプに分割する:
8x (Pa(x))
aaa
aba
true
false
{a, b}?
ΦaA? = 9x(8y(x ? y) ) Pa(x))
ΦaA?
true
false
9x(Pb(x))
true
false
abbab
bbab
q0 q1q2
q3
q4
オートマトンとB?CHIの定理(後半)
タイプ
? MSO[k]は文字列の集合を有限個のタイプに分割する:
8x (Pa(x))
aaa
aba
true
false
{a, b}?
ΦaA? = 9x(8y(x ? y) ) Pa(x))
ΦaA?
true
false
9x(Pb(x))
true
false
abbab
bbab
q0 q1q2
q3
q4 q5
オートマトンとB?CHIの定理(後半)
タイプ
? MSO[k]は文字列の集合を有限個のタイプに分割する:
8x (Pa(x))
aaa
aba
true
false
{a, b}?
ΦaA? = 9x(8y(x ? y) ) Pa(x))
ΦaA?
true
false
9x(Pb(x))
true
false
abbab
bbab
q0 q1q2
q3
q4 q5
q6
オートマトンとB?CHIの定理(後半)
タイプ
? MSO[k]は文字列の集合を有限個のタイプに分割する:
8x (Pa(x))
aaa
aba
true
false
{a, b}?
ΦaA? = 9x(8y(x ? y) ) Pa(x))
ΦaA?
true
false
9x(Pb(x))
true
false
abbab
bbab
q0 q1q2
q3
q4 q5
q6 q7
オートマトンとB?CHIの定理(後半)
タイプ
? MSO[k]は文字列の集合を有限個のタイプに分割する:
8x (Pa(x))
aaa
aba
true
false
{a, b}?
ΦaA? = 9x(8y(x ? y) ) Pa(x))
ΦaA?
true
false
9x(Pb(x))
true
false
abbab
bbab
q0 q1q2
q3
q4 q5
q6 q7
この様に各タイプを状態みなし,?
「適切に」初期状態,状態遷移,?
受理状態集合を定めてやれば元の?
論理式 Φ ∈ MSO[k] に対し L(Φ) = Aとなる?
(決定性)オートマトンAが構成できる!
オートマトンとB?CHIの定理(後半)
正規言語=単項二階述語論理式で定義可能!
? その逆「MSO記述可能?正規言語」がやや難しい(定理の後
半).
? 量化ランクを制限しタイプを有限にすることで,元の論
理式からオートマトンが構成できた!
( J.R. Büchi, 1960)
言語 が正規言語である ? は単項二階論理
(Monadic Second Order Logic, MSO)で記述
可能である.
有限モデル理論入門:?
MSOとオートマトン
RYOMA SIN’YA
AUTOMATA & LOGIC WORKSHOP @ AKITA-U. 27 MAR 2019
q0
q1
q2
q3
q4
q5
A
K
I
T
A
U
9A9B9C
0
B
B
B
B
B
B
B
B
@
8x
2
4
(A(x) ^ ?B(X) ^ ?C(x))
_(A(x) ^ ?B(X) ^ ?C(x))
_(A(x) ^ ?B(X) ^ ?C(x))
3
5
^
8x, y E(x, y) ! ?
2
4
(A(x) ^ A(y))
_(B(x) ^ B(y))
_(C(x) ^ C(y))
3
5
1
C
C
C
C
C
C
C
C
A
の「ただならぬ関係」!
おまけ
正規言語は多様な特徴づけを持つ
正規言語
(文字列の集合)
{ε, a, aa, bb, aaa, abb, bab, bbb, ...}
0
a
1
b
b
a
有限オートマトン
(計算モデル)
有限モノイド
(代数モデル)
単項二階述語論理
(論理式)
正規文法
(生成文法)
正規表現
(表現式)
a*(ba*ba*)*
Pro?nite words
上の開閉集合
(トポロジー)
? 非自明だが同値な定義
? 式,文法,計算モデル,
代数,論理式,トポロ
ジー, etc….
? 本資料では解説しなかった
が,多様体(variety)の概念
を通じて言語と論理と代数
は美しい対応を見せる.
おまけ
正規言語は多様な特徴づけを持つ
正規言語
(文字列の集合)
{ε, a, aa, bb, aaa, abb, bab, bbb, ...}
0
a
1
b
b
a
有限オートマトン
(計算モデル)
有限モノイド
(代数モデル)
単項二階述語論理
(論理式)
正規文法
(生成文法)
正規表現
(表現式)
a*(ba*ba*)*
Pro?nite words
上の開閉集合
(トポロジー)
? 非自明だが同値な定義
? 式,文法,計算モデル,
代数,論理式,トポロ
ジー, etc….
? 本資料では解説しなかった
が,多様体(variety)の概念
を通じて言語と論理と代数
は美しい対応を見せる.
おまけ
宣伝:正規言語と言語と代数と論理の対応
/sinya8282/an-introduction-to-eilenbergs-variety-theorem
おまけ
宣伝:正規言語と言語と代数と論理の対応
/sinya8282/an-introduction-to-eilenbergs-variety-theorem
有限モデル理論の
(大変読みやすい)?
入門書
Written by Leonid Libkin
代数的オートマトン
理論の素晴らしい
入門書.
言語の多様体の話
やEILENBERG’S VARIETY
THEOREMの証明も載っ
てる.
Written by Mark Lawson

More Related Content

有限モデル理论入门:惭厂翱とオートマトン