Clingo 答案集编程行交集

Clingo answer set programming line intersection

我有一个生成以下内容的规则

route(5,1,5,3) 
route(5,2,5,3) 
route(5,3,5,3) 
route(3,1,3,1) 
route(2,3,5,3) 
route(3,3,5,3) 
route(4,3,5,3) 
route(4,1,3,1) 
route(5,1,3,1) 
route(3,2,3,1) 
route(3,3,3,1) 
route(3,4,3,1) 
route(3,5,3,1)

其中以下部分是从5,1开始到5,3结束的路线

route(5,1,5,3) 
route(5,2,5,3) 
route(5,3,5,3)

在路线中(x1,y1,x2,y2)

我想写一个约束,使这些路由不会相互交叉,但我不确定如何解决这个问题。我将不胜感激在这件事上的任何帮助。

我使用了以下规则来防止交叉路线。

(X',Y') = (X'',Y'') :- route(X,Y,X',Y'), route(X,Y,X'',Y'').