様相論理と時相論理 -...

Preview:

Citation preview

様相論理と時相論理

Kripke構造

• K = ⟨S, R, L⟩S: 状態の集合(無限かもしれない)

R: 状態間の遷移関係

R ⊆ S×SL: 状態から命題記号の集合への写像

L(s) は、状態 s∈S において成り立つ

命題記号の集合を与える。

Kripke構造

• K = ⟨S, R, L⟩• G = ⟨S, R⟩

有向グラフ

Kripke構造

• K = ⟨S, R, L⟩• L : S→2Atom

Atom : 命題記号の

全体P

Q

Q

Q

P, Q P

Atom = {P, Q}

様々なKripke構造

• 木

• 森

• 無限木

P

Q

Q Q

P, Q

Q P

Q P,Q

様相論理式

ϕ, ψ ::= P 命題記号

| ¬ϕ 否定

| ϕ∧ψ 連言

| ϕ∨ψ 選言

| □ϕ 必然

| ◇ϕ 可能

意味論

s |= P iff P ∈ L(s)s |= ¬ϕ iff not s |= ϕs |= ϕ∧ψ iff s |= ϕ and s |= ψs |= ϕ∨ψ iff s |= ϕ or s |= ψs |= □ϕ iff t |= ϕ for any t s.t. R(s, t)s |= ◇ϕ iff t |= ϕ for some t s.t. R(s, t)

◇ϕ は ¬□¬ϕ に同値。

意味論

□Q◇(P∧Q)□◇P

P

Q

Q

Q

P, Q P

★で成り立っているのは?

P

Q

Q

Q

P, Q P

1. □Q2. ◇(P∧Q)3. □◇P

★で成り立っているのは?

P

Q

Q

Q

P, Q P

1. □Q2. ◇(P∧Q)3. □◇P

★で □Q は成り立っている?

P

Q

Q

Q

P, Q P Y

es No

0%0%

1. Yes2. No

様々な様相論理

• 以上は最小様相論理 K• 遷移関係を限定

– 反射的 T / 推移的 K4• 再帰的な命題

– 計算木論理・様相µ計算

• 多重の様相・様相(遷移関係)の演算– ブール論理・動的論理

• グラフ上の経路による解釈– 線形時間時相論理

• グラフを木に限定

充足可能性と有限モデル性

• 様相論理式ϕが充足可能

– あるKripke構造 K とその状態 s が存在して、

s |= ϕ– K を ϕ のモデルという。

• 最小論理においては、

充足可能な論理式は有限モデルを持つ。

• しかも、有限の木モデルを持つ。

様相論理の木モデル性

• 一般に、Kripke構造(グラフ)をノード s から

展開すると(無限の)木が得られる。

• s において論理式が充足可能ならば、

展開した木の根においても充足可能。P

Q

Q Q

P, Q

Q P

Q P,QP

Q

Q

Q

P, QP

ss

s

時相論理(Temporal Logic)• 状態の遷移や時間の経過の観点より

システムの性質を記述するための論理体系

• 線形時間時相論理

– LTL(Linear Time Temporal Logic)• 分岐時間時相論理

– CTL(Computation Tree Logic)

– μ計算(µ-Calculus)• モデル検査

– 時相論理で表現された性質を

システムが満たすかどうかを検査すること

例:Petersonのアルゴリズム

me = 0, 1you = 1, 0for (;;) {

flags[me] = true;turn = you;while (flags[you] == true) {

if (turn != you) break;}// the critical sectionflags[me] = false;// the idle part

}

Petersonのアルゴリズム

0: flags[me] = true;1: turn = you;2: if (flags[you] != true) goto 4;3: if (turn != you) goto 4; else goto 2;4: critical section;5: flags[me] = false;6: either goto 6 or goto 0;

• 状態:(pc0, pc1, flags[0], flags[1], turn)– pc0, pc1: 0..6– flags[0], flags[1]: {true, false}– turn: {0, 1}

(pc0, pc1, flags[0], flags[1], turn) = (2,2,t,t,1)から遷移可能な状態は?

0: flags[me] = true;1: turn = you;2: if (flags[you] != true) goto 4;3: if (turn != you) goto 4; else goto 2;4: critical section;5: flags[me] = false;6: either goto 6 or goto 0; (2

,4,t,t

,1)

(3,2,

t,t,1)

(4,2,

t,t,1)

0% 0%0%

1. (2,4,t,t,1)2. (3,2,t,t,1)3. (4,2,t,t,1)

(pc0, pc1, flags[0], flags[1], turn) = (3,2,t,t,1)から遷移可能な状態は?

0: flags[me] = true;1: turn = you;2: if (flags[you] != true) goto 4;3: if (turn != you) goto 4; else goto 2;4: critical section;5: flags[me] = false;6: either goto 6 or goto 0; (2

,2,t,t

,1)

(3,4,

t,t,1)

(4,2,

t,t,1)

0% 0%0%

1. (2,2,t,t,1)2. (3,4,t,t,1)3. (4,2,t,t,1)

状態遷移系について検証すべき性質

• 安全性(safety)

好ましくないことが決して起こらないこと

• 活性(liveness)好ましいことが必ず起こること

• 活性が成り立つためには公平性が必要

公平性が成り立たないと、

特定のプロセスばかり実行されてしまう。

• 公平性(fairness)の仮定

– 無条件の公平性(unconditional fairness)– 弱い公平性(weak fairness)– 強い公平性(strong fairness)

次のうち活性はどれか?

デッドロックが起こらない。

開こうとするファイル...

開いたファイルは必ず...

配列のインデックスは...

0% 0%0%0%

1. デッドロックが起こらない。

2. 開こうとするファイルは必ず存在する。

3. 開いたファイルは必ず閉じられる。

4. 配列のインデックスは常にその範囲内に納まっている。

Petersonのアルゴリズムの場合• 安全性

二つのプロセスが同時にはcritical sectionに入らない。

pc0=pc1=4にはならない。

• 活性(飢餓が起きないこと)

プロセスがヘッダ部に入ったら、

必ずいつかはcritical sectionに入ることができる。

• 活性が成り立つためには公平性が必要

どちらのプロセスも必ず進んでいなければならない。

ここでは,critical sectionで無限ループに陥らないと仮定。

• 公平性(fairness)の仮定

どちらのプロセスも無限回実行される。

無条件の公平性

Petersonのアルゴリズムの正当性の時相論理による表現

• 安全性

– LTL(Linear Time Temporal Logic)G(¬(pc0=4 ∧ pc1=4))

– CTL(Computation Tree Logic)

AG(¬(pc0=4 ∧ pc1=4))

• 活性(飢餓が起きないこと)

– LTL G(pc0=0 ⊃ F(pc0=4))– CTL AG(pc0=0 ⊃ AF(pc0=4))

• 公平性(fairness)の仮定

– LTL G(pc0=0 ⊃ F(pc0=1)) ∧ ...– LTLならば書けるが、CTLでは書けない。

公平性(fairness)の仮定

• 無条件の公平性(unconditional fairness)– どのプロセスもいつかは必ず実行される。

• 弱い公平性(weak fairness)– 実行可能であり続けるプロセスは、

いつかは必ず実行される。

– 実行されないにもかかわらず、

連続的に実行可能で有り続けることはない。

• 強い公平性(strong fairness)– 実行されないにもかかわらず、

断続的にも実行可能で有り続けることはない。

Javaの場合public class LockTest extends Thread {

static Object lock = new Object ();public void run () {

while ( true ) {requestLock ();synchronized ( lock ) {

acquireLock ();}}}}

public static void main ( String [] args ) {LockTest th1 = new LockTest ();LockTest th2 = new LockTest ();th1 . start ();th2 . start ();

}static public void requestLock () {}static public void acquireLock () {}}

どちらのスレッドも ackquireLock を呼べるためには?

弱い公平性で十分である

強い公平性が必要である

無条件の公平性が要...

0% 0%0%

1. 弱い公平性で十分である

2. 強い公平性が必要である

3. 無条件の公平性が要請される

計算木論理(Computation Tree Logic)

ϕ, ψ ::= ...| AGϕ globally on any path

| AFϕ finally on any path

| EGϕ globally on some path

| EFϕ finally on some path

□はAX、◇はEXと書く。

• 分岐時間時相論理(branching-time temporal logic)の一種

経路(path)について

• 計算木論理では、無限の経路を考える。

• 行き止まりの状態があると面倒なので、

どの状態からも次の状態があると仮定。

• たとえば、終了状態には、便宜上、

自分自身への遷移を付加する。

意味論

s |= AGϕ iffs から到達できる任意の状態 t において

t |= ϕs |= AFϕ iff

s から始まる任意の経路上に、

t |= ϕ を満たす状態 t が存在する。

★で成り立っているのは?

P

Q

Q

Q

P, Q P, Q

1. AG P2. AG ¬P3. AF Q4. AF ¬Q

意味論

s |= EFϕ iffs から到達できる状態 t が存在して

t |= ϕs |= EGϕ iff

s から始まる経路が存在して、

その経路上の任意の状態 t において

t |= ϕ

★で成り立っているのは?

P

Q

Q

Q

P, Q P, Q

1. EF (P∧¬Q)2. EF AG P3. EG Q4. EG ¬Q

★で AF AG Q は成り立っている?

P

Q

Q

Q

P, Q P, Q Y

es No

0%0%

1. Yes2. No

状態集合の計算• 大域的なモデル検査

• [[φ]] = {s∈S | s |= φ } とおく。

– [[P]] = { s∈S | P∈L(s) }– [[¬ϕ]] = S − [[ϕ]]– [[ϕ∧ψ]] = [[ϕ]] ∩ [[ψ]]– [[ϕ∨ψ]] = [[ϕ]] ∪ [[ψ]]– [[□ϕ]] = { s∈S | 任意の t∈S に対して

R(s,t) ならば t∈[[φ]] }– [[◇ϕ]] = { s∈S | ある t∈S が存在して

R(s,t) かつ t∈[[φ]] }

状態集合の計算

• [[EFφ]] の計算

X := ∅loop

Y := [[φ]] ∪{ s∈S | ある t∈S が存在し R(s,t) かつ t∈X }

if Y==X then breakX := Y

end• Y := の右辺を f(X) とおいたとき、

X = f(X) を満たす最小の X を求めている。

EF P

P

Q

Q

Q

P, Q P, Q

EF P

P

Q

Q

Q

P, Q P, Q

EF P

P

Q

Q

Q

P, Q P, Q

状態集合の計算

• [[EGφ]] の計算

X := Sloop

Y := [[φ]] ∩{ s∈S | ある t∈S が存在し R(s,t) かつ t∈X }

if Y==X then breakX := Y

end• Y := の右辺を f(X) とおいたとき、

X = f(X) を満たす最大の X を求めている。

EG Q

P

Q

Q

Q

P, Q P, Q

EG Q

P

Q

Q

Q

P, Q P, Q

状態集合の計算

• [[AGφ]] の計算

X := Sloop

Y := [[φ]] ∩{ s∈S | 任意の t∈S は R(s,t) ならば t∈X }

if Y==X then breakX := Y

end• Y := の右辺を f(X) とおいたとき、

X = f(X) を満たす最大の X を求めている。

AG Q

P

Q

Q

Q

P, Q P, Q

AG Q

P

Q

Q

Q

P, Q P, Q

AG Q

P

Q

Q

Q

P, Q P, Q

状態集合の計算

• [[AFφ]] の計算

X := ∅loop

Y := [[φ]] ∪{ s∈S | 任意の t∈S は R(s,t) ならば t∈X }

if Y==X then breakX := Y

end• Y := の右辺を f(X) とおいたとき、

X = f(X) を満たす最小の X を求めている。

AF AG Q

P

Q

Q

Q

P, Q P, Q

AF AG Q

P

Q

Q

Q

P, Q P, Q

AF AG Q

P

Q

Q

Q

P, Q P, Q

AF AG Q

P

Q

Q

Q

P, Q P, Q

まとめ

• [[EFφ]] = [[φ ∨ ◇EFφ]]– 最小

• [[EGφ]] = [[φ ∧ ◇EGφ]]– 最大

• [[AGφ]] = [[φ ∧ □AGφ]]– 最大

• [[AFφ]] = [[φ ∨ □AFφ]]– 最小

まとめ

• [[EFφ]] = [[φ ∨ ◇EFφ]]– 最小

• [[EGφ]] = [[φ ∧ ◇EGφ]]– 最大

• [[AGφ]] = [[φ ∧ □AGφ]]– 最大

• [[AFφ]] = [[φ ∨ □AFφ]]– 最小

まとめ

• [[EFφ]] = [[φ ∨ ◇EFφ]]– 最小

• [[EGφ]] = [[φ ∧ ◇EGφ]]– 最大

• [[AGφ]] = [[φ ∧ □AGφ]]– 最大

• [[AFφ]] = [[φ ∨ □AFφ]]– 最小

様相µ計算(modal µ-calculus)• 命題変数に対する再帰的定義が可能。

X = ϕ∨◇X最小不動点か最大不動点か?

• 最小不動点の場合

µX. ϕ∨◇X EFϕ に一致

• 最小不動点の場合

恒真になってしまう。

• 最大不動点の例

νX. ϕ∧□X AGϕ に一致

AFφ を表すのは?

1. µX. ϕ∧◇X2. µX. ϕ∨◇X3. νX. ϕ∧◇X4. νX. ϕ∨◇X5. µX. ϕ∧□X6. µX. ϕ∨□X7. νX. ϕ∧□X8. νX. ϕ∨□X

線形時間時相論理(linear-time temporal logic)

• Kripke構造上の経路において

論理式を解釈する。

• 計算木論理においても、部分的に

経路の概念が入っている。

ここから先はずっと線形時間時相論理の話。

Kripke構造

• K = ⟨S, R, L⟩S: 状態の集合

R: 状態間の遷移関係

R ⊆ S×SL: 状態から原子論理式の集合への写像

L(s) は、状態 s∈S において成り立つ

原子論理式の集合を与える。

状態の無限列 --- 実行経路

• π=π0,π1,π2,…πi ∈ S (∀i≥0)R(πi, πi+1) (∀i≥0)

• suffixπi =πi,πi+1,πi+2,…

論理式

ϕ, ψ ::= P 命題記号

| ¬ϕ 否定

| ϕ∧ψ 連言

| ϕ∨ψ 選言

| ○ϕ (Xϕ)

| □ϕ (Gϕ)

| ◇ϕ (Fϕ)untilは、ここでは、考えない。

意味論

π |= P iff P ∈ L(π0)π |= ¬ϕ iff not π |= ϕπ |= ϕ∧ψ iff π |= ϕ and π |= ψπ |= ϕ∨ψ iff π |= ϕ or π |= ψπ |= ○ϕ iff π1 |= ϕπ |= □ϕ iff πi |= ϕ for any i≥0π |= ◇ϕ iff πi |= ϕ for some i≥0

π |= ϕ --- π は ϕ のモデルである。ϕ は π において成り立つ。

○ と ◇ の意味が、これまでと違うことに注意。

この経路で成り立っているのは?

P

Q

Q

Q

P, Q P, Q

1. □P2. □¬P3. ◇(P∧Q)4. ◇(P∧¬Q)

◇□Q は成り立っているか?

P

Q

Q

Q

P, Q P, Q Y

es No

0%0%

1. Yes2. No

◇□P は成り立っているか?

P

Q

Q

Q

P, Q P, Q Y

es No

0%0%

1. Yes2. No

□◇P は成り立っているか?

P

Q

Q

Q

P, Q P, Q Y

es No

0%0%

1. Yes2. No

□◇P

• π |= □◇P が成り立っていると

π |= ◇P なので、πi |= P を満たす i が存在。

• π |=□◇P なので πi+1 |= ◇P が成り立ち、

πj |= P を満たす j>i が存在。

• 同様にして、 πi |= P を満たす

無限個の i が存在することがわかる。

• 逆に、 πi |= P を満たす無限個の i が

存在すれば、 π |= □◇P が成り立つ。

公平性の表現

• E をあるプロセスが実行可能であること、

R をそのプロセスが実行されていることを

表す。

• 無条件の公平性

□◇R• 弱い公平性

□◇(¬Ε ∨ R) □◇(Ε ⊃ R)• 強い公平性

¬□◇Ε ∨ □◇ R □◇Ε ⊃ □◇ R

□ と ◇ と ¬

π |= ¬□ϕ iff π |= ◇¬ϕπ |= ¬◇ϕ iff π |= □¬ϕ

論理式(正形式)

ϕ, ψ ::= P| ¬P| ϕ∧ψ| ϕ∨ψ| ○ϕ| □ϕ| ◇ϕ

任意の論理式に対して、それと同値な正形式が存在する。

¬□(a ⊃ ◇b) と同値な正形式は?

1. □(a ∧ ◇¬b)2. □(a ∨ ◇¬b)3. ◇(a ∧ □¬b)4. ◇(a ∨ □¬b)5. □(¬a ∧ ◇b)6. □(¬a ∨ ◇b)7. ◇(¬a ∧ □b)8. ◇(¬a ∨ □b)

□ と ◇ と ○

π |= □ϕ iff π |= ϕ∧○□ϕπ |= ◇ϕ iff π |= ϕ∨○◇ϕ

cl(ϕ0): ϕ0の閉包

以下の性質を満たす最小の(論理式の)集合

• ϕ0∈cl(ϕ0)• ϕ1∧ϕ2∈cl(ϕ0) ならば、 ϕ1∈cl(ϕ0) かつ ϕ2∈ cl(ϕ0)• ϕ1∨ϕ2∈cl(ϕ0) ならば、 ϕ1∈cl(ϕ0) かつ ϕ2∈ cl(ϕ0)• ○ϕ∈cl(ϕ0) ならば、 ϕ∈cl(ϕ0)• □ϕ∈cl(ϕ0) ならば、 ϕ∧○□ϕ∈cl(ϕ0)• ◇ϕ∈cl(ϕ0) ならば、 ϕ∨○◇ϕ∈cl(ϕ0)• 「 ¬P∈cl(ϕ0) ならば、 P∈cl(ϕ0)」という条件は

なくてもよい。

• ϕ0 = ◇(a ∧ □¬b)• cl(ϕ0) :

◇(a ∧ □¬b)(a ∧ □¬b) ∨ ○◇(a ∧ □¬b)a ∧ □¬b○◇(a ∧ □¬b)a□¬b¬b ∧ ○□¬b¬b○□¬b

ϕ0型

• Γ⊆cl(ϕ0)• ϕ1∧ϕ2∈Γ ならば、 ϕ1∈Γ かつ ϕ2∈Γ• ϕ1∨ϕ2∈Γ ならば、 ϕ1∈Γ または ϕ2∈Γ• P∈Γ かつ ¬P∈Γ となることはない

• □ϕ∈Γ ならば、 ϕ∧○□ϕ∈Γ• ◇ϕ∈Γ ならば、 ϕ∨○◇ϕ∈Γ

ϕ0型の選択と ϕ0型間の遷移

• ϕ0 を含む極小のϕ0型をすべて選ぶ。

• ϕ0型 Γ⊆cl(ϕ0) が選ばれたら、

{ϕ∈cl(ϕ0) | ○ϕ∈Γ} を含む極小のϕ0型

Γ′ をすべて選ぶ。

• Γ → Γ′ とおく(遷移)。

• 以上の繰り返し。

• Γア :◇(a ∧ □¬b)

• Γア :◇(a ∧ □¬b)(a ∧ □¬b) ∨ ○◇(a ∧ □¬b)

• Γア :◇(a ∧ □¬b)(a ∧ □¬b) ∨ ○◇(a ∧ □¬b)

a ∧ □¬b

• Γイ :◇(a ∧ □¬b)(a ∧ □¬b) ∨ ○◇(a ∧ □¬b)

○◇(a ∧ □¬b)

• Γア :◇(a ∧ □¬b)(a ∧ □¬b) ∨ ○◇(a ∧ □¬b)

a ∧ □¬ba□¬b

• Γイ :◇(a ∧ □¬b)(a ∧ □¬b) ∨ ○◇(a ∧ □¬b)

○◇(a ∧ □¬b)

• Γア :◇(a ∧ □¬b)(a ∧ □¬b) ∨ ○◇(a ∧ □¬b)

a ∧ □¬ba□¬b¬b ∧ ○□¬b

• Γイ :◇(a ∧ □¬b)(a ∧ □¬b) ∨ ○◇(a ∧ □¬b)

○◇(a ∧ □¬b)

• Γア :◇(a ∧ □¬b)(a ∧ □¬b) ∨ ○◇(a ∧ □¬b)

a ∧ □¬ba□¬b¬b ∧ ○□¬b¬b○□¬b• Γイ :

◇(a ∧ □¬b)(a ∧ □¬b) ∨ ○◇(a ∧ □¬b)

○◇(a ∧ □¬b)

Γア からの遷移先に含まれるのは?

• Γア :◇(a ∧ □¬b)(a ∧ □¬b) ∨ ○◇(a ∧ □¬b)

a ∧ □¬ba□¬b¬b ∧ ○□¬b¬b○□¬b

1. a 2. □¬b3. ○□¬b4. a ∧ □¬b5. ◇(a ∧ □¬b)

• Γア :◇(a ∧ □¬b)(a ∧ □¬b) ∨ ○◇(a ∧ □¬b)

a ∧ □¬ba□¬b¬b ∧ ○□¬b¬b○□¬b• Γイ :

◇(a ∧ □¬b)(a ∧ □¬b) ∨ ○◇(a ∧ □¬b)

○◇(a ∧ □¬b)

• Γウ :□¬b

• Γア :◇(a ∧ □¬b)(a ∧ □¬b) ∨ ○◇(a ∧ □¬b)

a ∧ □¬ba□¬b¬b ∧ ○□¬b¬b○□¬b• Γイ :

◇(a ∧ □¬b)(a ∧ □¬b) ∨ ○◇(a ∧ □¬b)

○◇(a ∧ □¬b)

• Γウ :□¬b¬b ∧ ○□¬b

• Γア :◇(a ∧ □¬b)(a ∧ □¬b) ∨ ○◇(a ∧ □¬b)

a ∧ □¬ba□¬b¬b ∧ ○□¬b¬b○□¬b• Γイ :

◇(a ∧ □¬b)(a ∧ □¬b) ∨ ○◇(a ∧ □¬b)

○◇(a ∧ □¬b)

• Γウ :□¬b¬b ∧ ○□¬b¬b○□¬b

アから遷移可能なのは?ア :

◇(a ∧ □¬b)(a ∧ □¬b) ∨ ○◇(a ∧ □¬b)a ∧ □¬ba□¬b¬b ∧ ○□¬b¬b○□¬b

イ :◇(a ∧ □¬b)(a ∧ □¬b) ∨ ○◇(a ∧ □¬b)○◇(a ∧ □¬b)

ウ :□¬b¬b ∧ ○□¬b¬b○□¬b

ない ア アとイ

アとウ アとイとウ イ

イとウ ウ

0% 0% 0% 0%0%0%0%0%

1. ない

2. ア

3. アとイ

4. アとウ

5. アとイとウ

6. イ

7. イとウ

8. ウ

イから遷移可能なのは?ア :

◇(a ∧ □¬b)(a ∧ □¬b) ∨ ○◇(a ∧ □¬b)a ∧ □¬ba□¬b¬b ∧ ○□¬b¬b○□¬b

イ :◇(a ∧ □¬b)(a ∧ □¬b) ∨ ○◇(a ∧ □¬b)○◇(a ∧ □¬b)

ウ :□¬b¬b ∧ ○□¬b¬b○□¬b

ない ア アとイ

アとウ アとイとウ イ

イとウ ウ

0% 0% 0% 0%0%0%0%0%

1. ない

2. ア

3. アとイ

4. アとウ

5. アとイとウ

6. イ

7. イとウ

8. ウ

ウから遷移可能なのは?ア :

◇(a ∧ □¬b)(a ∧ □¬b) ∨ ○◇(a ∧ □¬b)a ∧ □¬ba□¬b¬b ∧ ○□¬b¬b○□¬b

イ :◇(a ∧ □¬b)(a ∧ □¬b) ∨ ○◇(a ∧ □¬b)○◇(a ∧ □¬b)

ウ :□¬b¬b ∧ ○□¬b¬b○□¬b

ない ア アとイ

アとウ アとイとウ イ

イとウ ウ

0% 0% 0% 0%0%0%0%0%

1. ない

2. ア

3. アとイ

4. アとウ

5. アとイとウ

6. イ

7. イとウ

8. ウ

ア :◇(a ∧ □¬b)(a ∧ □¬b) ∨ ○◇(a ∧ □¬b)a ∧ □¬ba□¬b¬b ∧ ○□¬b¬b○□¬b

イ :◇(a ∧ □¬b)(a ∧ □¬b) ∨ ○◇(a ∧ □¬b)○◇(a ∧ □¬b)

ウ :□¬b¬b ∧ ○□¬b¬b○□¬b

ア :◇(a ∧ □¬b)(a ∧ □¬b) ∨ ○◇(a ∧ □¬b)a ∧ □¬ba□¬b¬b ∧ ○□¬b¬b○□¬b

イ :◇(a ∧ □¬b)(a ∧ □¬b) ∨ ○◇(a ∧ □¬b)○◇(a ∧ □¬b)

ウ :□¬b¬b ∧ ○□¬b¬b○□¬b

ア :◇(a ∧ □¬b)(a ∧ □¬b) ∨ ○◇(a ∧ □¬b)a ∧ □¬ba□¬b¬b ∧ ○□¬b¬b○□¬b

イ :◇(a ∧ □¬b)(a ∧ □¬b) ∨ ○◇(a ∧ □¬b)○◇(a ∧ □¬b)

ウ :□¬b¬b ∧ ○□¬b¬b○□¬b

イ ウ

モデルの「記号」化

• π=π0,π1,π2,… を ϕ0 のモデルとしたとき、

以下の条件を満たす ϕ0型の無限列

Π = Γ0, Γ1, Γ2, … が存在する。

• ϕ0∈Γ0

• 任意の ϕ∈Γi に対して πi |= ϕ を満たす。

• Γi → Γi+1

• ◇ϕ∈Γi ならば、ある j≥i が存在して ϕ∈Γj

π = π0, π1, π2, π3, π4, π5, π6, π7, …π1 = π1, π2, π3, π4, π5, π6, π7, …

π2 = π2, π3, π4, π5, π6, π7, …π3 = π3, π4, π5, π6, π7, …

π4 = π4, π5, π6, π7, …π5 = π5, π6, π7, …

Π = Γ0, Γ1, Γ2, Γ3, Γ4, Γ5, …

|= ϕ0

|= ○ψ

|= ψ ∈

|= ◇θ ∈

|= θ ∈

イ ウ

逆に…

ϕ0型 Γi ⊆ cl(ϕ0) から成る無限列

Π=Γ0,Γ1,Γ2,… が以上の条件を満たし、

さらに以下の条件を満たせば、

任意の ϕ∈Γi に対して πi |= ϕ が成り立つ。

(特に π |= ϕ0)

• P∈Γi ならば P∈L(πi) である

• ¬P∈Γi ならば P∈L(πi) でない。

ωオートマトン

• 以上の条件を満たす無限列を

特徴付けるため、

ϕ0型 Γ⊆cl(ϕ0) を状態とする

ωオートマトンを構成する。

• 遷移は Γ → Γ′ によって定義。

初期状態

• 特に π |= ϕ0 を満たす π を

求めたいので、

ϕ0∈Γ0 を要請する。

このためには、ϕ0 を含むϕ0型を

初期状態とすればよい。

(複数あり得ることに注意)

ア :◇(a ∧ □¬b)(a ∧ □¬b) ∨ ○◇(a ∧ □¬b)a ∧ □¬ba□¬b¬b ∧ ○□¬b¬b○□¬b

イ :◇(a ∧ □¬b)(a ∧ □¬b) ∨ ○◇(a ∧ □¬b)○◇(a ∧ □¬b)

ウ :□¬b¬b ∧ ○□¬b¬b○□¬b

ア :◇(a ∧ □¬b)(a ∧ □¬b) ∨ ○◇(a ∧ □¬b)a ∧ □¬ba□¬b¬b ∧ ○□¬b¬b○□¬b

イ :◇(a ∧ □¬b)(a ∧ □¬b) ∨ ○◇(a ∧ □¬b)○◇(a ∧ □¬b)

ウ :□¬b¬b ∧ ○□¬b¬b○□¬b

イ ウ

ラベル

以下の条件を調べるために、

命題記号とその否定を

状態(ϕ0型)のラベルとして明示。

• P∈Γi ならば P∈L(πi) である

• ¬P∈Γi ならば P∈L(πi) でない。

ア :◇(a ∧ □¬b)(a ∧ □¬b) ∨ ○◇(a ∧ □¬b)a ∧ □¬ba□¬b¬b ∧ ○□¬b¬b○□¬b

イ :◇(a ∧ □¬b)(a ∧ □¬b) ∨ ○◇(a ∧ □¬b)○◇(a ∧ □¬b)

ウ :□¬b¬b ∧ ○□¬b¬b○□¬b

ア :◇(a ∧ □¬b)(a ∧ □¬b) ∨ ○◇(a ∧ □¬b)a ∧ □¬ba□¬b¬b ∧ ○□¬b¬b○□¬b

イ :◇(a ∧ □¬b)(a ∧ □¬b) ∨ ○◇(a ∧ □¬b)○◇(a ∧ □¬b)

ウ :□¬b¬b ∧ ○□¬b¬b○□¬b

イ ウ

a

¬b

¬b

経路の条件

• ωオートマトン上の

無限経路 Π=Γ0,Γ1,Γ2,… で、

以下の条件を満たすものを

特徴付けたい。

◇ϕ∈Γi ならば、

ある j≥i が存在して ϕ∈Γj

経路の条件

• 以上の無限経路の条件は、

次のように言い換えることができる。

Π=Γ0,Γ1,Γ2,…は、

各 ◇ϕ∈cl(ϕ0) に対して、

F(◇ϕ) の要素を無限回含む。

• ここで、

F(◇ϕ) = {Γ | ◇ϕ∈Γ または ϕ∈Γ}

F(◇(a ∧ □¬b)) は?ア :

◇(a ∧ □¬b)(a ∧ □¬b) ∨ ○◇(a ∧ □¬b)a ∧ □¬ba□¬b¬b ∧ ○□¬b¬b○□¬b

イ :◇(a ∧ □¬b)(a ∧ □¬b) ∨ ○◇(a ∧ □¬b)○◇(a ∧ □¬b)

ウ :□¬b¬b ∧ ○□¬b¬b○□¬b

F(◇ϕ) = {Γ | ◇ϕ∈Γ または ϕ∈Γ} ない ア アとイ

アとウ アとイとウ イ

イとウ ウ

0% 0% 0% 0%0%0%0%0%

1. ない

2. ア

3. アとイ

4. アとウ

5. アとイとウ

6. イ

7. イとウ

8. ウ

ア :◇(a ∧ □¬b)(a ∧ □¬b) ∨ ○◇(a ∧ □¬b)a ∧ □¬ba□¬b¬b ∧ ○□¬b¬b○□¬b

イ :◇(a ∧ □¬b)(a ∧ □¬b) ∨ ○◇(a ∧ □¬b)○◇(a ∧ □¬b)

ウ :□¬b¬b ∧ ○□¬b¬b○□¬b

ア :◇(a ∧ □¬b)(a ∧ □¬b) ∨ ○◇(a ∧ □¬b)a ∧ □¬ba□¬b¬b ∧ ○□¬b¬b○□¬b

イ :◇(a ∧ □¬b)(a ∧ □¬b) ∨ ○◇(a ∧ □¬b)○◇(a ∧ □¬b)

ウ :□¬b¬b ∧ ○□¬b¬b○□¬b

イ ウ

a

¬bF(◇(a ∧ □¬b)) = {ア, ウ}

¬b

モデル検査

• Kripke構造 K=⟨S, R, L⟩、初期状態 s0∈S、

論理式 ϕ0 に対して、

π0=s0 を満たす ϕ0 のモデル

π=π0,π1,π2,… が存在するか?

これは以下と等価

• ωオートマトン上の無限経路

Π=Γ0,Γ1,Γ2,… で以下の条件を

満たすものが存在するか?

• 各 ◇ϕ∈cl(ϕ0) に対して、

F(◇ϕ) の要素を無限回含む。

• P∈Γi ならば P∈L(πi) である

• ¬P∈Γi ならば P∈L(πi) でない。

同期積

• π の存在と Π の存在を

一度に調べるために、

ωオートマトンと K との「同期積」を作る。

状態: ⟨s, Γ⟩ where {P | P∈Γ} ⊆ L(s){P | ¬P∈Γ}∩ L(s) = ∅

初期状態: ⟨s0, Γ0⟩ それぞれの初期状態の組

遷移: ⟨s, Γ⟩ → ⟨s′, Γ′⟩ iff R(s, s′) and Γ→ Γ′

同期積

a b a

a

¬b

¬b

同期積

a b a

a

¬b

¬b

存在しないのは?

a b a

a

¬b

¬b

1

4 5

32

20% 20% 20%20%20%

同期積

a b a

a

¬b

¬b

存在する遷移は?

a b a

a

¬b

¬b

1

2

34

5 6

17% 17% 17%17%17%17%

同期積

a b a

a

¬b

¬b

同期積

a b

a

¬b

¬b

モデルが存在するための条件

• ϕ0 のモデル π=π0,π1,π2,…が存在する

ための必要十分条件:

同期積における無限経路

⟨π0, Γ0⟩ → ⟨π1, Γ1⟩ → . . . で、各 ◇ϕ∈cl(ϕ0) に対して、

F(◇ϕ) の要素を無限回含むものが

存在する。 ⇔ある種のループの存在

同期積

a b a

a

¬b

¬b

同期積

a b

a

¬b

¬b

ループの条件

• ループは、初期状態から到達可能。

• ループは、各 ◇ϕ∈cl(ϕ0) に対して、

F(◇ϕ) の要素を含む。

• 同期積の強連結成分を求めれば、

上のようなループが存在するか、

判定可能。

レポート課題

• (□◇e ⊃ □◇r) ⊃ □(a ⊃ ◇b) が常に

成り立つことを検証するための

ωオートマトンを構成せよ。

• 以下のKripke構造において、

上記論理式が常に成り立つことを示せ。

a e r b

until

π|= ϕ until ψiff πi |= ψ for some i≥0

andπj |= ϕ for any j<i

release

π|= ϕ release ψiff πi |= ϕ for some i≥0

andπj |= ψ for any j≤i

or πj |= ψ for any j

until と release と ¬

π |= ¬(ϕ until ψ)iff π |= ¬ϕ release ¬ψ

π |= ¬(ϕ release ψ)iff π |= ¬ϕ until ¬ψ

until と release と ○

π |= ϕ until ψiff π |= ψ ∨ ○(ϕ until ψ)

π |= release ψiff π |= ψ ∧ ○(ϕ release ψ)

Recommended