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
   44% copy_term_vars(?Vars, ?OldTerm, -NewTerm)
   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.