розыгрыш моей ситуации
По ссылке выше мы видим классы Student
и Class
. Я хочу сделать инвариантное ограничение, чтобы убедиться, что Student
не может зарегистрироваться для более чем 5 классов каждый sessionYear
.
С этим ограничением я могу определить, является ли Student
более 5 классов
context Student
inv maxClassStudent: classTaken->collect(sessionYear)->size() < 6
Но я хочу найти размер коллекции, созданной только с тем же sessionYear
. Другими словами, я хочу сделать коллекцию для каждого отдельного sessionYear
, чтобы убедиться, что в этом году в Student
было менее 6 классов.
Я думал, что мог бы использовать forAll(c1,c2|c1<>c2 implies c1.sessionYear <> c2.sessionYear)
или что-то похожее на разницу Class
, основанную на sessionYear
, но я не могу понять это.