Swi Prolog asserta错误

Swi Prolog asserta错误,prolog,clpfd,Prolog,Clpfd,我必须在SWI中声明此类CLP(FD)规则: 但我得到了这个错误: ERROR: Syntax error: Operator expected ERROR: asserta(schedule(A,B) :- V = [S0,S1,S2],V ERROR: ** here ** ERROR: ins 0..sup) . 为什么??谢谢大家! 这里有两个错误: 您需要在阅读文本时加载CLP(FD)。 因此需要有一个使用_模块(库(clpfd))作为指令,就像

我必须在SWI中声明此类CLP(FD)规则:

但我得到了这个错误:

    ERROR: Syntax error: Operator expected
    ERROR: asserta(schedule(A,B) :-  V = [S0,S1,S2],V 
    ERROR: ** here **
    ERROR: ins 0..sup) . 

为什么??谢谢大家!

这里有两个错误:

您需要在阅读文本时加载CLP(FD)。 因此需要有一个
使用_模块(库(clpfd))
作为指令,就像在一行中一样

:- use_module(library(clpfd)).
或作为顶级目标输入。这是必要的,因为您正在以运算符形式使用
(ins)/2

另一个问题是缺少括号。应该改为:

 ..., asserta( ( schedule(A,B) :- V = [_,_,_], V ins 0..sup ) ), ...
另一方面,我认为主张这样一条规则没有多大意义。动态数据库很少与断言规则一起使用

 ..., asserta( ( schedule(A,B) :- V = [_,_,_], V ins 0..sup ) ), ...