Я новичок в сплаве и его функциях. Недавно у меня было задание о простой машине состояний: begin_state->normal_state->end_state. Есть только одно begin_state, но несколько normal_state и несколько end_state. Тогда я не могу заставить представление экземпляра работать правильно с приведенным ниже кодом сплава:
abstract sig state
{
prev : some state,
next : some state
}
one sig begin extends state{}
some sig end extends state{}
sig mid extends state{}
//There is no state after end state, and there is no state before begin state
pred dosomething
{
no s : state | s in begin.prev and s in end.next
}
run{dosomething}
Итак, в основном я просто не хочу состояния перед начальным состоянием, никакого состояния после конечного состояния, и примеры экземпляров могут выглядеть примерно так:
начало->нормальное->конец
or
начало-> нормальный -> конец
|
обычный->нормальный->конец
|
нормальный --- нормальный
| |
конец ‹--------
... что-то такое. Спасибо