将新事实添加到数据库PROLOG

时间:2017-02-16 16:25:26

标签: prolog

假设我有3个节点A,B和C,并且在A和B之间以及B和C之间存在边缘。我想在运行时向数据库断言一个新的事实,这样如果有边缘在A和B之间以及从B到C的另一个边缘然后我可以从A到C.我想要添加边缘(a,c)但是我有以下问题,在此先感谢

dynamic/1: No permission to modify static procedure `edge/2' 
ERROR: [Thread pce] c:/users/win7/documents/prolog/test.pl:6: Syntax error:      Operator expected

这是我的代码:

edge(a,b).
edge(b,c).

:- dynamic edge/2.

conn :-(X,C):- edge(X,Y),edge(Y,C),assert(edge(X,C)).

2 个答案:

答案 0 :(得分:3)

在为dynamic定义条款之前,edge/2声明必须先出现。

答案 1 :(得分:-1)

最后它有效,

: - 动态边缘/ 2。 边缘(A,B)。 边(B,C)。

conn(X,Y,C): - 边(X,Y),边(Y,C),断言(边(X,C))。