这是家庭作业,我遇到了很多麻烦。我正在使用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
}
}
但它不起作用……书总是在书架上。想说,“每一本书,如果不借,就上架。否则,就出去了。”
非常感谢更正、示例和提示。