34
35:- module(clpcd,
36 [ {}/1,
37 maximize/1,
38 minimize/1,
39 inf/2,
40 inf/4,
41 sup/2,
42 sup/4,
43 bb_inf/3,
44 bb_inf/4,
45 entailed/1,
46 set_clpcd/1
47 ]). 48
49:- use_module(library(lists)). 50:- use_module(library(neck)). 51:- use_module(library(clpcd/bb)). 52:- use_module(library(clpcd/nf)). 53:- use_module(library(clpcd/bv)). 54:- use_module(library(clpcd/inv)). 55:- use_module(library(clpcd/domain_ops)). 56:- reexport(library(clpcd/dump), [dump/3]). 57:- reexport(library(clpcd/ordering), [clp_type/2]). 58:- reexport(library(clpcd/ordering), [ordering/1]). 59:- reexport(library(clpcd/domain_ops), [set_clpcd/1]). 60:- init_expansors. 61
62inf(Expression, Inf) :-
63 active_clpcd(D),
64 inf(D, Expression, Inf).
65
66inf(Expression, Inf, Vector, Vertex) :-
67 active_clpcd(D),
68 inf(D, Expression, Inf, Vector, Vertex).
69
70sup(Expression, Sup) :-
71 active_clpcd(D),
72 sup(D, Expression, Sup).
73
74sup(Expression, Sup, Vector, Vertex) :-
75 active_clpcd(D),
76 sup(D, Expression, Sup, Vector, Vertex).
77
78maximize(Term) :-
79 active_clpcd(D),
80 maximize(D, Term).
81
82minimize(Term) :-
83 active_clpcd(D),
84 minimize(D, Term).
85
86{Rel} :-
87 active_clpcd(D),
88 add_constraint(Rel, D).
89
90entailed(C) :-
91 active_clpcd(D),
92 entailed(D, C).
93
94bb_inf(Is, Term, Inf) :-
95 active_clpcd(D),
96 bb_inf(D, Is, Term, Inf, _).
97
98bb_inf(Is, Term, Inf, Vertex) :-
99 active_clpcd(D),
100 bb_inf(D, Is, Term, Inf, Vertex).
101
102clpcd_nf:nl_invertible(_, F) :-
103 cd_invertible(F).
104
105clpcd_nf:nl_invert(C, F, X, Y, Res) :-
106 cd_invert(F, C, X, Y, N),
107 cast_d(C, N, Res).
108
109clpcd_nf:nonlin(_, Term, AL, Skel, SL) :-
110 cd_nonlin(Term, AL, Skel, SL).
111
112:- multifile
113 sandbox:safe_primitive/1. 114
115sandbox:safe_primitive(clpcd:H) :-
116 member(H, [{_},
117 entailed(_),
118 bb_inf(_, _, _),
119 bb_inf(_, _, _, _),
120 maximize(_),
121 minimize(_),
122 inf(_,_),
123 inf(_,_,_,_),
124 sup(_,_),
125 sup(_,_,_,_)
126 ]),
127 neck