имеют объект в одном наборе или другое, но не оба?

Это домашнее задание, и у меня есть много проблем с этим. Я использую сплав для моделирования библиотеки. Вот определения объектов:

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
    }
}

Но это не работает ... Книги всегда находятся на полках. Хочешь сказать: «За каждую книгу, если она не одолживалась, это на полке. В противном случае это выходит».

Исправления, примеры и подсказки очень ценятся.

8
задан Bill the Lizard 19 September 2012 в 22:04
поделиться

0 ответов

Другие вопросы по тегам:

Похожие вопросы: