Предикат Alloy для дерева

#alloy

#сплав

Вопрос:

Я пытаюсь написать предикат в alloy, который определит, является ли набор узлов деревом. У меня есть псевдокод, но я не понимаю, как его реализовать. Я новичок в alloy, поэтому заранее благодарю всех, кто откликнется.

 sig Node[]

pred isTree [r: Node -> Node] {
// Every node reachable from root
// No cycles
// No node has more than 1 more parent.
}
  

Комментарии:

1. Вы смотрели на graph модуль? У них там есть реализация деревьев.

2. @Hovercouch У меня нет, поскольку я пытаюсь создать его с нуля

Ответ №1:

Вы можете ознакомиться с этим онлайн-руководством по Alloy, в котором моделируется файловая система. Это также древовидная структура, так что у вас в значительной степени есть свои ответы.

Более конкретные ответы требуют более конкретных вопросов и отображения ваших попыток.

Мы не раздаем решения для домашних заданий ;-).