ge(X, Y) :- suspend(ge(X,Y,MySusp), 0, [X->ic:max, Y->ic:min], MySusp), ge(X, Y, MySusp). :- demon ge/3. ge(X, Y, MySusp) :- get_bounds(X, _, XH), get_bounds(Y, YL, _), ( var(X),var(Y) -> true % implicitly re-suspend ; kill_suspension(MySusp) ), X #>= YL, % impose new bounds Y #=< XH. |