Я пытаюсь смоделировать график с использованием core.logi c и хотел бы сопоставить все узлы, которые имеют ребра, с двумя другими узлами. Я придумал ниже, но он возвращает два результата вместо желаемого, так как [2 3 4] и [2 4 3] эквивалентны. Как бы я ограничил запрос, чтобы вернуть только желаемый результат?
(use 'clojure.core.logic.pldb)
(db-rel edge a b)
(def g
(db
[edge 1 2]
[edge 2 3]
[edge 3 4]
[edge 2 4]))
(with-db g
(run* [q]
(fresh [x y z]
(edge x y)
(edge x z)
(!= y z)
(== q [x y z]))))