これは宿題で、私はそれで多くの問題を抱えています。ライブラリのモデリングにAlloyを使用しています。オブジェクトの定義は次のとおりです。
sig Library {
patrons : set Person,
on_shelves : set Book,
}
sig Book {
authors : set Person,
loaned_to : set Person,
}
sig Person{}
次に、すべての本が棚にあるか、常連客によって取り出されるという事実を持っている必要があります。ただし、両方の場所に配置することはできません。
// Every book must either be loaned to a patron or
// on the shelves.
fact AllBooksLoanedOrOnShelves {}
私はこれを試しました...
fact AllBooksLoanedOrOnShelves {
some b : Book {
one b.loaned_to =>
no (b & Library.on_shelves)
else
b in Library.on_shelves
}
}
しかし、それは機能していません...本は常に棚にあります。「すべての本について、貸し出されていない場合は棚にあります。そうでない場合は売り切れです」と言いたい。
訂正、例、およびヒントは大歓迎です。