下面是签名合金:使用“in”和得到错误“在只能在同一元数的2个表达之间使用”
one sig Library {
books: set Book,
patrons: set Patron,
circulation: Patron lone -> some Book
}
sig Book { }
sig Patron {
curbooks: set Book
}
问题 - >我想要做的是:写一个事实,即目前有靠山的书都占在图书馆的流通关系现在
fact curPatronBooksConsistent {
lone l : Library | all b : l.patrons.curbooks | b in l.circulation
}
我明白错误的性质:在只能使用同一个元素的2个表达式之间。
Left type = this/Book
Right type = this/Patron->this/Book
但是我不知道该怎么也可以找到只返回一个的与该library.circulation相关书籍“设置”中的任何实例。我意识到这不是一个集合,而是一种关系,所以我如何在Alloy中表达这种关系?
都属于食客例如书籍所有p.curbooks都映射在l.circulation中?
谢谢大家提前。