46
SS専攻 経営情報システム学講座 客員 石川 冬樹 [email protected] 経営情報システム学特論2 9.形式仕様記述(4)

経営情報システム学特論2 9.形式仕様記述(4)research.nii.ac.jp/~f-ishikawa/work/UEC-MItoku2/MItoku2... · 2014-12-16 · ※ 数理論理学での用語「モデル」:

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 経営情報システム学特論2 9.形式仕様記述(4)research.nii.ac.jp/~f-ishikawa/work/UEC-MItoku2/MItoku2... · 2014-12-16 · ※ 数理論理学での用語「モデル」:

SS専攻経営情報システム学講座客員石川冬樹

[email protected]

経営情報システム学特論29.形式仕様記述(4)

Page 2: 経営情報システム学特論2 9.形式仕様記述(4)research.nii.ac.jp/~f-ishikawa/work/UEC-MItoku2/MItoku2... · 2014-12-16 · ※ 数理論理学での用語「モデル」:

イントロダクション数理論理学とプログラム検証形式仕様記述テスト手法事例・動向紹介

2f-ishikawa @ MI特論2

講義計画

Page 3: 経営情報システム学特論2 9.形式仕様記述(4)research.nii.ac.jp/~f-ishikawa/work/UEC-MItoku2/MItoku2... · 2014-12-16 · ※ 数理論理学での用語「モデル」:

形式手法における探索ベースの手法として,モデル検査とモデル発見を紹介するモデル検査の基礎に関する概観並行プロセスの検査を行うSPINツールモデル発見・有界モデル検査を行うAlloy

3f-ishikawa @ MI特論2

本日の内容

Page 4: 経営情報システム学特論2 9.形式仕様記述(4)research.nii.ac.jp/~f-ishikawa/work/UEC-MItoku2/MItoku2... · 2014-12-16 · ※ 数理論理学での用語「モデル」:

探索ベースの手法モデル検査Alloy

4f-ishikawa @ MI特論2

目次

Page 5: 経営情報システム学特論2 9.形式仕様記述(4)research.nii.ac.jp/~f-ishikawa/work/UEC-MItoku2/MItoku2... · 2014-12-16 · ※ 数理論理学での用語「モデル」:

状態遷移を網羅的に探索し,検証対象の性質が成り立つかどうかを検証する技術特に並行システムにおいて,特定の実行パスでしか顕在化しない,デッドロックや,排他制御・同期制御の誤りを検出できる

※ 数理論理学での用語「モデル」:ある論理式を真とする解釈(変数の真偽値など)

「モデルであるかどうかを検査する」(状態遷移を表現した「モデル」を検査する,という語源ではない)

5f-ishikawa @ MI特論2

モデル検査

Page 6: 経営情報システム学特論2 9.形式仕様記述(4)research.nii.ac.jp/~f-ishikawa/work/UEC-MItoku2/MItoku2... · 2014-12-16 · ※ 数理論理学での用語「モデル」:

6f-ishikawa @ MI特論2

モデル検査の基礎:オートマトン

アラームの例

Standby

SensingBeeping

Finished

off stop

eventon

off

shutdown

初期状態

受理状態遷移:状態から状態へラベルでつなぐ

初期状態から受理状態に至るラベル列の例on . event . stop . off . shutdown

Page 7: 経営情報システム学特論2 9.形式仕様記述(4)research.nii.ac.jp/~f-ishikawa/work/UEC-MItoku2/MItoku2... · 2014-12-16 · ※ 数理論理学での用語「モデル」:

7f-ishikawa @ MI特論2

モデル検査の基礎:オートマトン

Workx:=1

Done

if x < 3, up, x:=x+1

if x > 1, down, x:=x-1

if x = 1, shutdown

Workx=1

Workx=3

Workx=2

up up

down downDone

Page 8: 経営情報システム学特論2 9.形式仕様記述(4)research.nii.ac.jp/~f-ishikawa/work/UEC-MItoku2/MItoku2... · 2014-12-16 · ※ 数理論理学での用語「モデル」:

8f-ishikawa @ MI特論2

モデル検査の基礎:並行動作の合成

A1

doAA2

B1

doBB2

A2/B1 A2/B2

doA doA

doB

doB

A1

doAA2

B1

doBB2

A1/B1 A1/B2

doA doA

doB

doBsync sync

sync

A2/B1 A2/B2

Page 9: 経営情報システム学特論2 9.形式仕様記述(4)research.nii.ac.jp/~f-ishikawa/work/UEC-MItoku2/MItoku2... · 2014-12-16 · ※ 数理論理学での用語「モデル」:

9f-ishikawa @ MI特論2

モデル検査の基礎:検証する性質

Reachability ある条件の下ある状況に到達しうる「初期画面に戻る操作の列が常にある」

Safety ある条件の下ある状況に到達することがない「踏切が空いた状態で電車が通過することはない」

Liveness ある条件の下ある状況にいつか必ず到達する「登録をするといつか必ず確認メールが届く」

Deadlock-freeness

デッドロックが起きない

Fairness ある条件の下ある状況が無限回起きる(ない)「ユーザが無数にリクエストを送れば無数に返事が来る(他のユーザ等にブロックされ続けることはない)」

Page 10: 経営情報システム学特論2 9.形式仕様記述(4)research.nii.ac.jp/~f-ishikawa/work/UEC-MItoku2/MItoku2... · 2014-12-16 · ※ 数理論理学での用語「モデル」:

もっともよく用いられている2種類LTL(Linear Temporal Logic)実行を「線」と見て性質を書くCTL(Computational Tree Logic)実行を「木」と見て性質を書く

10f-ishikawa @ MI特論2

モデル検査の基礎:時相論理

実行の経過に関する論理式を記述「かつ」「または」「ならば」(命題論理)+「いつも」「いつか」「までは」・・・

AB

C

A

B

B

C

・・・

A . B . A . B . ...A . B . A . C . ...A . C . B . A . ...

A

Page 11: 経営情報システム学特論2 9.形式仕様記述(4)research.nii.ac.jp/~f-ishikawa/work/UEC-MItoku2/MItoku2... · 2014-12-16 · ※ 数理論理学での用語「モデル」:

すべての(無限長)実行パスに対して何か性質が成り立つかどうかを記述

11f-ishikawa @ MI特論2

モデル検査の基礎: LTL

X p(○ p)

次の状態でpが成り立つ(next)

F p(◇ p)

今の状態かそれ以降のどこかでpが成り立つ(finally)

G p(□ p)

今の状態とそれ以降のすべてでpが成り立つ(globally)

p U q 今の状態かそれ以降のどこかでqが成り立ち,それまではずっとpが成り立つ(until)

Page 12: 経営情報システム学特論2 9.形式仕様記述(4)research.nii.ac.jp/~f-ishikawa/work/UEC-MItoku2/MItoku2... · 2014-12-16 · ※ 数理論理学での用語「モデル」:

12f-ishikawa @ MI特論2

モデル検査の基礎: LTL

(各状態で成り立つ,これ以上分解できない基本的な性質に注目している)

S0(¬red, ¬blue)

S1(red, ¬blue)S2(¬red, blue)

S3(red, blue)

S0から始まる実行パスの例(通過する状態の無限列)S0 . S1 . S3 . S0 . S1 . S3 . S0 . S1 . S3 . …

S0 . S2 . S3 . S0 . S1 . S3 . S0 . S2 . S3 . …

Page 13: 経営情報システム学特論2 9.形式仕様記述(4)research.nii.ac.jp/~f-ishikawa/work/UEC-MItoku2/MItoku2... · 2014-12-16 · ※ 数理論理学での用語「モデル」:

S0から始まる実行パスを考えたときの例F (¬ red ∧ blue)「redではなくblueである状態にいつかなる」満たさない実行パスがある(S2を通らずにS1を経由し続けるパス)

13f-ishikawa @ MI特論2

モデル検査の基礎: LTL

S3(red, blue)

S0(¬red, ¬blue)

S1(red, ¬blue) S2(¬red, blue)

Page 14: 経営情報システム学特論2 9.形式仕様記述(4)research.nii.ac.jp/~f-ishikawa/work/UEC-MItoku2/MItoku2... · 2014-12-16 · ※ 数理論理学での用語「モデル」:

14f-ishikawa @ MI特論2

モデル検査の基礎:CTL

P

P

P

P

P

P

P

AG P どのパスでも常に

P

P

・・・

P

PP

EG P あるパスでは常に

P

・・・

P

P

AF P どのパスでもいつか

P

P

・・・

EF P あるパスではいつか

P

・・・

Page 15: 経営情報システム学特論2 9.形式仕様記述(4)research.nii.ac.jp/~f-ishikawa/work/UEC-MItoku2/MItoku2... · 2014-12-16 · ※ 数理論理学での用語「モデル」:

全探索を適用しやすい・すべき部分に絞り込み分岐や相互作用の本質に特化し記述する分岐に影響する列挙型のデータ(フラグなど)複数プロセスの切り替え,同期・排他制御,通信エラーが起きるのに十分そうな数で試す(ユーザ数や送受信回数など)数値や集合などデータ構造は原則扱わない

形式仕様やプログラムなどを直接扱う場合外部要素などを単純化したモックに置き換えたり,探索する数値範囲やステップ数などを絞ったり

15f-ishikawa @ MI特論2

全探索による検証の考え方

Page 16: 経営情報システム学特論2 9.形式仕様記述(4)research.nii.ac.jp/~f-ishikawa/work/UEC-MItoku2/MItoku2... · 2014-12-16 · ※ 数理論理学での用語「モデル」:

16f-ishikawa @ MI特論2

モデル検査の例: SPINツール

#define SIZE 4

byte msg[SIZE];

chan s2r = [2] of {byte};

proctype Sender() {byte i;do:: i == SIZE -> break;:: else -> s2r ! msg[i];

i++;od

}

proctype Receiver() {byte j;byte rmsg;do:: j == SIZE -> break;:: else -> s2r ? rmsg;

assert (rmsg == msg[j]);j++;

od}

proctype Lost() {byte drop;do:: s2r ? drop;

od }

4個のデータを送信してみる

通信チャンネル(有限バッファ長)や送受信に関する語彙を用意

この例は決定的な分岐だが,非決定的な振る舞いを書く

順番通りに来ているかをアサーションで検証(成り立たない)

メッセージを別のプロセスも受信しうるとして通信失敗の可能性を表現

送信

受信

Page 17: 経営情報システム学特論2 9.形式仕様記述(4)research.nii.ac.jp/~f-ishikawa/work/UEC-MItoku2/MItoku2... · 2014-12-16 · ※ 数理論理学での用語「モデル」:

アサーションの検証や,デッドロックの検出それ以上の性質についてはLT)を記述AとBが同時に真になることはない(安全性)

Aが真になった後には必ずBが起きる(活性)

Aが(ブロックされ続けたりせず)何度でも起きうる(ある種の公平性)

17f-ishikawa @ MI特論2

モデル検査の例: SPINツール

[] ! (A && B)

[] ( A => <> B)

[] ! A

Page 18: 経営情報システム学特論2 9.形式仕様記述(4)research.nii.ac.jp/~f-ishikawa/work/UEC-MItoku2/MItoku2... · 2014-12-16 · ※ 数理論理学での用語「モデル」:

18f-ishikawa @ MI特論2

モデル検査の例: SPINツール

検証設定(最短でエラーに到達するパスを探すことも可能)

Page 19: 経営情報システム学特論2 9.形式仕様記述(4)research.nii.ac.jp/~f-ishikawa/work/UEC-MItoku2/MItoku2... · 2014-12-16 · ※ 数理論理学での用語「モデル」:

19f-ishikawa @ MI特論2

モデル検査の例: SPINツール

通信の図示

シミュレーションの種類・ランダム・インタラクティブ・検証結果のログ

Page 20: 経営情報システム学特論2 9.形式仕様記述(4)research.nii.ac.jp/~f-ishikawa/work/UEC-MItoku2/MItoku2... · 2014-12-16 · ※ 数理論理学での用語「モデル」:

20f-ishikawa @ MI特論2

モデル検査の例: SMVツール

MODULE mainVAR

cabin : 0 .. 3 ;dir : { up, down }

ASSIGNnext(cabin) := case

dir = up & cabin < 3 : cabin + 1 ;dir = down & cabin > 0 : cabin – 1 ;1 : cabin ;

esacnext(dir) := case

dir = up & cabin = 2 : downdir = down & cabin = 1 : up ;1 : dir ;

esac

次の状態における各変数の値をどう決めるか,という観点で状態遷移記述

単純に上下を行き来するエレベータの動きを表現(実際はともかく3Fまで)

Page 21: 経営情報システム学特論2 9.形式仕様記述(4)research.nii.ac.jp/~f-ishikawa/work/UEC-MItoku2/MItoku2... · 2014-12-16 · ※ 数理論理学での用語「モデル」:

21f-ishikawa @ MI特論2

モデル検査の例:UPPAALツール

状態B到達時に時間変数(時間カウンター)tをリセット→ Bを出てCに進むときには時間が3以上経過している

※ テキスト表現もある

共有資源が確保できる(r == 0)ときのみ状態Cに進め,その際には確保( r := 1 )

所要時間(のぶれの可能性)も含めて状態遷移を記述

Page 22: 経営情報システム学特論2 9.形式仕様記述(4)research.nii.ac.jp/~f-ishikawa/work/UEC-MItoku2/MItoku2... · 2014-12-16 · ※ 数理論理学での用語「モデル」:

22f-ishikawa @ MI特論2

モデル検査の例: ProBツール

Bなどのモデルを受け付けるアニメーター(シミュレーター)兼モデル検査器

Page 23: 経営情報システム学特論2 9.形式仕様記述(4)research.nii.ac.jp/~f-ishikawa/work/UEC-MItoku2/MItoku2... · 2014-12-16 · ※ 数理論理学での用語「モデル」:

検証の結果は下記のいずれかである(全探索した場合)与えたモデルにおいて,検証対象の性質が成り立つことを保証検証対象の性質が成り立たないような実行パスの一例(反例)を提示(最も短いものを探索させることもだいたい可能)状態爆発により検証が未完了

23f-ishikawa @ MI特論2

モデル検査の結果

Page 24: 経営情報システム学特論2 9.形式仕様記述(4)research.nii.ac.jp/~f-ishikawa/work/UEC-MItoku2/MItoku2... · 2014-12-16 · ※ 数理論理学での用語「モデル」:

モデル検査の特徴並行システムの設計などにおいて,検証対象とした性質が成り立つ(誤りがない)ことを確信できる実装コードに対するテストでは,様々なタイミングや要因により,問題が発生したりしなかったりするため,テストでは確信が持てない

性質がどうして成り立たなかったのか,のヒントとなる具体的な反例を得ることができる状態爆発に対処するため,検証範囲・モデル化(特に抽象化)・ツール設定などを注意深く検討する必要がある

24f-ishikawa @ MI特論2

モデル検査の結果(続)

Page 25: 経営情報システム学特論2 9.形式仕様記述(4)research.nii.ac.jp/~f-ishikawa/work/UEC-MItoku2/MItoku2... · 2014-12-16 · ※ 数理論理学での用語「モデル」:

様々な手法やツール設定により状態削減検証シナリオの設定例:ユーザは2名に限る

様々な抽象化手法例: int型変数 x があり,条件分岐においては

x>0,x=0,x<0 の3つの場合を考えているx = {neg, zero, pos} と列挙型に変更

他にツールの様々な機能もbit単位でうまくメモリに詰め込む工夫を使う対称動作や内部動作等は並び替えを網羅しない(「・・・→Aの内部動作3→Bの内部動作1→・・・」)

25f-ishikawa @ MI特論2

モデル検査:状態爆発への対処

Page 26: 経営情報システム学特論2 9.形式仕様記述(4)research.nii.ac.jp/~f-ishikawa/work/UEC-MItoku2/MItoku2... · 2014-12-16 · ※ 数理論理学での用語「モデル」:

26f-ishikawa @ MI特論2

モデル検査:状態爆発への対処

x := 0 x := zero

x > 0 -> x == positive ‒>

:: x == neg -> if:: x := neg

x++ :: x := zerofi:: x == zero -> x = pos:: else skip

Page 27: 経営情報システム学特論2 9.形式仕様記述(4)research.nii.ac.jp/~f-ishikawa/work/UEC-MItoku2/MItoku2... · 2014-12-16 · ※ 数理論理学での用語「モデル」:

検証の意味が変わるのが難しい!例:ユーザは2名に限る3名が関わって初めて起きる不整合はない?例: int x を x = {neg, zero, pos} に起きうること・起きえないことが変わらない?

27f-ishikawa @ MI特論2

モデル検査:状態爆発への対処

zeroneg posinc inc inc

decdec dec

incdec

-1でも-100でも同じnegであり,1回のincでzeroになれる

この例では抽象版のモデルでしか起きないことがあり,抽象版で起きないことは元のモデルでも起きない

Page 28: 経営情報システム学特論2 9.形式仕様記述(4)research.nii.ac.jp/~f-ishikawa/work/UEC-MItoku2/MItoku2... · 2014-12-16 · ※ 数理論理学での用語「モデル」:

SPINによる設計モデル検証吉岡信和ら,近代科学社,2008

SPINモデル検査中島震,近代科学社,2008

UPPAALによる性能モデル検証長谷川哲夫ら,近代科学社,2012

他にも日本語書籍ありhttp://spinroot.com/spin/whatispin.htmlhttp://www.uppaal.org/

28f-ishikawa @ MI特論2

リファレンス:モデル検査

Page 29: 経営情報システム学特論2 9.形式仕様記述(4)research.nii.ac.jp/~f-ishikawa/work/UEC-MItoku2/MItoku2... · 2014-12-16 · ※ 数理論理学での用語「モデル」:

探索ベースの手法モデル検査Alloy

29f-ishikawa @ MI特論2

目次

Page 30: 経営情報システム学特論2 9.形式仕様記述(4)research.nii.ac.jp/~f-ishikawa/work/UEC-MItoku2/MItoku2... · 2014-12-16 · ※ 数理論理学での用語「モデル」:

これまで見た手法のいいとこ取りを目指すVDMやBのような強力な記述力集合や関係,命題論理・一階述語論理をベースとし,データ構造やその制約を扱える

モデル検査ツールの使いやすさ「検査」ボタン一発で自動検証を行い,問題があればその反例を得ることができる

さらに,モデル発見とにかく例を出し実感を深めていき,モデルの妥当性を確認しながらインクリメンタルに進められる

30f-ishikawa @ MI特論2

Alloyの特徴

Page 31: 経営情報システム学特論2 9.形式仕様記述(4)research.nii.ac.jp/~f-ishikawa/work/UEC-MItoku2/MItoku2... · 2014-12-16 · ※ 数理論理学での用語「モデル」:

グループ,エイリアスの概念を含むアドレス帳グループやエイリアスは他の項目を指すグループに項目を加えるなどの操作を行う

(特に不変条件・事前条件など,仕様項目が一通り厳密,正確に定まっていなくても始めてみる)

31f-ishikawa @ MI特論2

Alloy例題:アドレス帳

Group1

Alias4 Address3

Address5

[抽象によるソフトウェア設計-Alloyではじめる形式手法-] の例題アレンジ

Page 32: 経営情報システム学特論2 9.形式仕様記述(4)research.nii.ac.jp/~f-ishikawa/work/UEC-MItoku2/MItoku2... · 2014-12-16 · ※ 数理論理学での用語「モデル」:

32f-ishikawa @ MI特論2

Alloy例題:記述例(1a)

module intro/AddressBook

/* アドレス帳に含まれる項目 */abstract sig Target {}

/* アドレス */sig Addr extends Target {}

/* アドレス帳に含まれる項目のうち,他項目を指すもの */abstract sig Name extends Target {}

/* エイリアス,グループ */sig Alias, Group extends Name {}

BのSET同様,集合として型を定義(signatureと呼ばれる)

オブジェクト指向も意識Target

Addr NameGroup

Alias

TargetとNameはabstract(直接のインスタンスはない)

extendsで宣言された各signature(集合)は排他的

Page 33: 経営情報システム学特論2 9.形式仕様記述(4)research.nii.ac.jp/~f-ishikawa/work/UEC-MItoku2/MItoku2... · 2014-12-16 · ※ 数理論理学での用語「モデル」:

33f-ishikawa @ MI特論2

Alloy例題:記述例(1a)

pred show1 {}run show1 for 3

pred show2 {#Alias > 1}run show2 for 3

実行(run)は述語に付随して記述する

ここでの実行は,その述語を満たすインスタンス例を(すべて)作ること

要素数が3個以下になる範囲で,エイリアスの個数が2個以上になるインスタンスを作る(右の4個)

要素数が3個以下になる範囲で例を作る

基本的に書きかけでも「動かせる」

Page 34: 経営情報システム学特論2 9.形式仕様記述(4)research.nii.ac.jp/~f-ishikawa/work/UEC-MItoku2/MItoku2... · 2014-12-16 · ※ 数理論理学での用語「モデル」:

34f-ishikawa @ MI特論2

Alloy例題:記述例(1b)

/* アドレス帳 */sig Book {names: set Name,contains: names -> some Target}

pred show1 {}run show1 for 3 but 1 Book

先の記述に定義を追加

複数のNameと,包含関係(保持しているNameから1個以上のTarget)を持つ

これだけでは自由にリンクが貼られた例が出てしまう

Bookだけは1個,他要素3個でインスタンス生成

Page 35: 経営情報システム学特論2 9.形式仕様記述(4)research.nii.ac.jp/~f-ishikawa/work/UEC-MItoku2/MItoku2... · 2014-12-16 · ※ 数理論理学での用語「モデル」:

35f-ishikawa @ MI特論2

Alloy例題:記述例(1c)

/* アドレス帳 */sig Book {names: set Name,contains: names -> some Target}{all a : Alias | one a.containsno n : names | n in n.^contains}

直後に書くと,任意のBookに対する(all)制約となる

任意のAliasに対し,containsを適用して得られる(リンク先の)Targetはちょうど1つ

Names内のどのNameにおいても,containsを1回以上適用して得られる(1回以上リンクをたどった先の)Targetの集合に自分自身は含まれない

Page 36: 経営情報システム学特論2 9.形式仕様記述(4)research.nii.ac.jp/~f-ishikawa/work/UEC-MItoku2/MItoku2... · 2014-12-16 · ※ 数理論理学での用語「モデル」:

36f-ishikawa @ MI特論2

Alloy例題:記述例(1c)

pred show2 ( b : Book ){#Alias > 0Alias in b.names#Group > 0Group in b.names#Addr > 1}run show2 for 5 but 1 Book

より意味のありそうな例を作ってみる

生成するインスタンスにおいて,

AliasとGroupはそれぞれ1個以上存在する

それらは作られたBookのnamesに含まれる(部分集合である)

Page 37: 経営情報システム学特論2 9.形式仕様記述(4)research.nii.ac.jp/~f-ishikawa/work/UEC-MItoku2/MItoku2... · 2014-12-16 · ※ 数理論理学での用語「モデル」:

37f-ishikawa @ MI特論2

Alloy例題:記述例(2a)

pred add ( b, b' : Book, n : Name, a : Addr ) {not n -> a in b.containsb'.contains = b.contains + n -> ab'.names = b.names}

操作を表現する「述語」を定義

2つのBookがあったときに,片方がadd操作の実行前の状態,もう片方が実行後の状態を表すとするためには,どのような性質が成り立てばよいか?という述語

・事前条件を表す条件

・事後条件を表す条件

Page 38: 経営情報システム学特論2 9.形式仕様記述(4)research.nii.ac.jp/~f-ishikawa/work/UEC-MItoku2/MItoku2... · 2014-12-16 · ※ 数理論理学での用語「モデル」:

38f-ishikawa @ MI特論2

Alloy例題:記述例(2a)

pred show1 ( b, b' : Book ) {#(b.contains) = 1one n : Name | one a : Addr | add[b, b', n, a] }run show1 for 5 but 2 Book

リンクをちょうど1つ持つbと,そのbにリンクを1つ追加したb‘とが存在するとき,trueとなる述語

2つのBookを生成するようにして実行

Page 39: 経営情報システム学特論2 9.形式仕様記述(4)research.nii.ac.jp/~f-ishikawa/work/UEC-MItoku2/MItoku2... · 2014-12-16 · ※ 数理論理学での用語「モデル」:

39f-ishikawa @ MI特論2

Alloy例題:記述例(2a)

pred show2 ( b0, b1, b2 : Book ) {one n : Name | one a : Addr | add[b0, b1, n, a]andone n : Name | one a : Addr | add[b1, b2, n, a]}run show2 for 5 but 3 Book

b0に対してあるリンクを追加したb1,さらにリンクを追加したb2とが存在すると,trueとなる述語

3つのBookを生成するようにして実行

Page 40: 経営情報システム学特論2 9.形式仕様記述(4)research.nii.ac.jp/~f-ishikawa/work/UEC-MItoku2/MItoku2... · 2014-12-16 · ※ 数理論理学での用語「モデル」:

40f-ishikawa @ MI特論2

Alloy例題:記述例(2b)

pred add ( b, b' : Book, n : Name, a : Addr ) {/* not n -> a in b.contains */b'.contains = b.contains + n -> ab'.names = b.names}

pred del ( b, b' : Book, n : Name, a : Addr ) {n -> a in b.containsb'.contains = b.contains - n -> ab'.names = b.names}

addから事前条件を抜いてみる

同様にdel操作を表す述語を定義

Page 41: 経営情報システム学特論2 9.形式仕様記述(4)research.nii.ac.jp/~f-ishikawa/work/UEC-MItoku2/MItoku2... · 2014-12-16 · ※ 数理論理学での用語「モデル」:

41f-ishikawa @ MI特論2

Alloy例題:記述例(2b)

assert delUndoesAdd{all b0, b1, b2 : Book, n : Name, a : Addr |add [b0, b1, n, a] and del [b1, b2, n, a] implies b0.contains = b2.contains}check delUndoesAdd for 5

検査対象のアサーションを定義同じリンクをaddしてdelすると,元に戻る

特定の要素個数内で網羅的に検査(有界モデル検査)

(事前条件を消したので)すでに含まれているリンクをaddしてdelした場合,元には戻らないというインスタンスがある( 「不具合」と思うかは解釈次第だが)

Page 42: 経営情報システム学特論2 9.形式仕様記述(4)research.nii.ac.jp/~f-ishikawa/work/UEC-MItoku2/MItoku2... · 2014-12-16 · ※ 数理論理学での用語「モデル」:

集合と関係を書いていくだけデータを表現するも,実行パスを表現するも,自由(記法としては同じ)実行パスをどのように表現するかも,自由(VDM風でも,SPIN風でも)

例:先ほど3個のbook間に対して制約を与えることにより,2ステップのadd操作が現れるインスタンスを作る述語を作ったn個のbookの間において,n-1ステップのadd操作またはdel操作が現れるようにすれば,「実行」も表現できる

42f-ishikawa @ MI特論2

Alloyによる計算機のモデル化

Page 43: 経営情報システム学特論2 9.形式仕様記述(4)research.nii.ac.jp/~f-ishikawa/work/UEC-MItoku2/MItoku2... · 2014-12-16 · ※ 数理論理学での用語「モデル」:

43f-ishikawa @ MI特論2

参考:実行の経過の表現例(3)

open util/ordering [Time]

sig Time{state: Book}

fact traces {all t : Time - last | let t' = next [t] | one n : Name, a : Addr |addAddr[t.state, t'.state, n, a] or delAddr[t.state, t'.state, n, a]

}

ライブラリを使うことにより,Timeのインスタンスに順序が付いて,nextという関係でたどれるようにする

各Timeには,その時間での実行状態(Book)がひもづいている

最後以外の時間とその次の時間では,状態がaddまたはdelでつながっているようにする

Page 44: 経営情報システム学特論2 9.形式仕様記述(4)research.nii.ac.jp/~f-ishikawa/work/UEC-MItoku2/MItoku2... · 2014-12-16 · ※ 数理論理学での用語「モデル」:

Alloy記述はSATに変換され,SATソルバーが裏で動いているSAT: satisfiability problem論理式全体の値を真にするような、真偽値の組み合わせは存在するか?近年SATソルバーはかなり性能が上がっている特定個数に絞って,制約を満たす全インスタンスを生成,例示可能有界モデル検査のためには,assertionの否定をとって,満たさない例の生成を試みればよい

44f-ishikawa @ MI特論2

補足: SATソルバー

Page 45: 経営情報システム学特論2 9.形式仕様記述(4)research.nii.ac.jp/~f-ishikawa/work/UEC-MItoku2/MItoku2... · 2014-12-16 · ※ 数理論理学での用語「モデル」:

抽象によるソフトウェア設計-Alloyではじめる形式手法Daniel. Jacksonら,オーム社,2011

形式手法入門―ロジックによるソフトウェア設計中島震,オーム社,2012

http://alloy.mit.edu/community/

45f-ishikawa @ MI特論2

リファレンス:Alloy

Page 46: 経営情報システム学特論2 9.形式仕様記述(4)research.nii.ac.jp/~f-ishikawa/work/UEC-MItoku2/MItoku2... · 2014-12-16 · ※ 数理論理学での用語「モデル」:

探索ベースの手法効率的な探索アルゴリズムを用い,状態遷移(の特定部分)を網羅的に探索するアサーションなどが成り立たなかった場合,その判例を示すことができる状態爆発の問題があるため,システムにおける本質的な要素のみを抜き出し,抽象化するなどの工夫が必要となる

次回ここまでのまとめと補足

46f-ishikawa @ MI特論2

今回のまとめ