Я нахожу это очень трудно понять способ, который следов и проекции работы в сплаве. Я не могу получить желаемые результаты.Alloy следов и проекционные вопросы
В следующем примере я пытаюсь проецировать Курс и посмотреть, как учащиеся учатся, но похоже, что они никогда не имеют никакого отношения.
Когда я использую обычный вид (без проецирования), я получаю несколько решений, которые хороши. Но я хочу знать, как (поэтапно) узнать, как они были созданы с помощью трассировки (трассировка назад).
open util/ordering[Course]
sig Student {}
sig Course {
roster : set Student
}
pred Enroll (c, c' : Course, sNew : Student) {
c'.roster = c.roster + sNew
}
pred init(c: Course) {
no c.roster
}
fact traces {
init[first]
all c: Course - last | let c' = next[c] |
some s: Student | Enroll[c, c', s]
}
pred show {}
run show for 5