Как реализовать порядок в наборе наборов?
Когда воздушное судно приближается к аэропорту для приземления, процедура захода на посадку воздушного судна делится на переходы. Каждый переход состоит из набора ножек.
sig Transition {
legs: set Leg
}
sig Leg {}
Набор ног в переходе упорядочен. Для каждого перехода я хочу иметь доступ к первому этапу перехода, последнему этапу перехода и переходу от этапа к этапу. Таким образом, я хочу первую, последнюю и следующую функцию.
Какой самый простой способ реализовать это? У меня работает реализация, но мне интересно, есть ли что-то попроще. Моя реализация связывает каждую ногу с порядковым номером:
open util/ordering [SequenceNumber]
sig SequenceNumber {}
sig Transition {
legs: Leg one -> one SequenceNumber
}
Затем я создал свои собственные служебные функции:
fun First (t: Transition): Leg {
t.legs.(min [Leg.(t.legs)])
}
fun Last (t: Transition): Leg {
t.legs.(max [Leg.(t.legs)])
}
fun Next (t: Transition, leg: Leg): Leg {
t.legs.(next [leg.(t.legs)])
}
Я надеюсь, что вы можете показать мне более простое решение.
1 ответ
Почему бы не использовать seq Leg
а встроенная последовательность предикатов и функций?