使用(条件-> then_clause; else_clause)时,Prolog中出现错误未定义过程

有人告诉我,这样的语法(条件-> then_clause; else_clause)允许if(...)do(...)else(...)。

:- lib(fd).

ifs(sel).
ifm(moutarde).
ifld(lesdeux).

ifrien(A) :-
   A#\=sel,
   A#\=moutarde,
   A#\=lesdeux.


selmoutarde(Vars) :-
   Vars = [B, C, D, M],
   Vars :: [sel, moutarde, lesdeux],

   ( not(ifld(C)) ->
      B#=sel
   ;
      true
   ),
   ( ( not(ifs(D)) /\ ifm(D) /\ ifld(D) \/ ifld(M) ) /\ ifs(B) ->
      B#=lesdeux
   ;
      true
   ),
   ( ( not(ifs(D)) /\ ifm(D) /\ ifld(D) \/ ifld(M)) /\ ifrien(B) ->
      B#=moutarde
   ;
      true
   ).

I get the following error when running it with selmoutarde(V):

Calling an undefined procedure (not ifs(_485)) /\ ifm(_485) /\ ifld(_485) \/ ifld(_502) /\ ifs(_451) in module eclipse