有限モデルに限定して自動検査する
module Composite
abstract sig Component {}
sig Composite extends Component {
children : set Component
}
sig Leaf extends Component {}
P.15上~
P.15下~
childrenが自分自身
親が2つある
P.17上~
性質1をnoRefferedToとonlyRootで表現
P.17下~
性質2をsingleWholeで表現
P.18中~
求めるものに近付いた
show2[] implies noSelfLoop[]
abstractの説明
P.20上~
pred vs fact
P.20中~ 省略
[ex2-1] Alloyが有限モデルに限定して検査するのはなぜですか
[ex2-2] プログラミング言語にはあてはまり、Alloyコードにはあてはまらないものはどれですか
スタックを表現する
abstract sig Node { next : lone Node }
abstract sig Queue { root : lone Node }
P.23下~
pred empty ( s1 : Stack ) { s1.root = Bottom }
P.24中~
push, pop
P.24下~
top(読み出し)
P.25上~
empty → push → pop したらどうなるか?
検査内容もできるだけ抽象的に書きたい
P.25下~
P.25下~
BirthdayBook
(省略)
[ex2-3] スタックの検査としてより抽象度が高いのはどちらですか
[ex2-4] スタックの検査としてより抽象度が高いのはどちらですか
教科書(図はすべてこちらより引用):
中島震,「形式手法入門―ロジックによるソフトウェア設計―」,オーム社