下面是簽名合金:使用「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中?
謝謝大家提前。