2:- module(fd,[local/1,op(1150,fx,(export)),op(700, xfx, '::'),op(710, xfx, '..'),
3 op(750, fy, '#\\+' ),op(700, xfx, '##'),op(700, xfx, '#=' ),op(760, yfx, '#/\\' ),
4 op(770, yfx, '#\\/' ),op(780, yfx, '#=>' ),op(790, yfx, '#<=>' ),op(800, xfx, isd),
5 op(400, yfx, ('*`')),op(750, fy, local), op(1190,xfy,(do)),getval/2,setval/2,('::'/2),(do/2)]). 6
7:- meta_predicate(local(:)). 8local(Call) :- call(Call).
9:- op(750, fy, local). 10
11'::'([L|ST],G):-!, in(L,G), ('::'(ST,G)).
12'::'([],_).
13
14:- op(1150,fx,(export)). 15:- op(1190,xfy,(do)). 16:- reexport(library('clp/clpfd')). 17
18:- op(750, fy, '#\\+' ). 19:- op(700, xfx, '##'). 20:- op(700, xfx, '#=' ). 21:- op(760, yfx, '#/\\' ). 22:- op(770, yfx, '#\\/' ). 23:- op(780, yfx, '#=>' ). 24:- op(790, yfx, '#<=>' ). 25:- op(800, xfx, isd). 26:- op(400, yfx, ('*`')).
27
28
29reference(Var):-nb_setval(Var,[]).
30variable(Var):-nb_setval(Var,[]).
31variable(Var,VAL):-nb_setval(Var,VAL).
32setval(Var,VAL):-nb_setval(Var,VAL).
33getval(Var,VAL):-nb_getval(Var,VAL).
34
35do(Param,Body):- Param =.. [param|_],!,forall(Body,true).
36do(foreach(Clause,Clauses),Body):- forall(member(Clause,Clauses),Body).
37do(Head,Body):- throw(not_impl(do(Head,Body))).
38
39% summary:"Succeeds if Term is a domain variable.
40is_domain(T):-clpfd:fd_get(T, Dom, _), !, T in Dom.
41
42setval(X):-trace,nb_setval(X,[]).
43
45copy_term_vars(Vars,OldTerm,NewTerm):-copy_term(OldTerm,NewTerm),term_variables(NewTerm,Vars).
46
47system:'#\\+'(C):- '#\\'(C).
48
49is_predicate(F/A):-current_predicate(F/A), functor(P,F,A),predicate_property(P, visible).
50
51nonground(X):- \+ ground(X).
52
53:- fixup_exports.