5. Alloyによる仕様記述
enum Cow { A, B, C, D, E } // A,B,C,D,Eという牛がいる
sig Liar in Cow {} { #Liar = 3 } // 3匹がソーウ種
run {
not A in Liar iff D in Liar //A「Dはソーウ種だね」
not B in Liar iff C in Liar //B「Cはトンホー種じゃないよ」
not C in Liar iff not A in Liar //C「Aはソーウ種じゃない」
not D in Liar iff E in Liar //D「Eはソーウ種です」
not E in Liar iff B in Liar //E「Bはトンホー種じゃないぞ」
}
8. 1.ERDの代わりに使おう
open util/relation // 関係ライブラリの利用
sig Company, Person {} // 法人と人
one sig Employ { // 雇用
employee : Company lone -> set Person // 1対nの関係
}
one sig Business { // 提携
alliance : Company set -> set Company // n対nの関係
} {
~alliance in alliance // 提携は相互的
no alliance & iden // 自分自身と提携しない
}