From: Markus Triska Date: Mon, 6 Apr 2020 21:05:57 +0000 (+0200) Subject: clpz_monotonic/0 --> monotonic/0 X-Git-Tag: v0.8.119~20^2~1 X-Git-Url: https://git.sagredo.dev/?a=commitdiff_plain;h=794ceac44054f3dca3325bf29d5a0d82c3acbfad;p=scryer-prolog.git clpz_monotonic/0 --> monotonic/0 --- diff --git a/src/prolog/lib/clpz.pl b/src/prolog/lib/clpz.pl index ec42b073..df5ade2d 100644 --- a/src/prolog/lib/clpz.pl +++ b/src/prolog/lib/clpz.pl @@ -141,7 +141,7 @@ queue/2, enabled/1. -:- dynamic(clpz_monotonic/0). +:- dynamic(monotonic/0). :- dynamic(clpz_equal_/2). :- dynamic(clpz_geq_/2). :- dynamic(clpz_neq/2). @@ -906,13 +906,13 @@ X = 1+1. This behaviour is highly problematic from a logical point of view, and it may render declarative debugging techniques inapplicable. -Assert `clpz:clpz_monotonic` to make CLP(Z) **monotonic**: This means +Assert `clpz:monotonic` to make CLP(Z) **monotonic**: This means that _adding_ new constraints _cannot_ yield new solutions. When this flag is `true`, we must wrap variables that occur in arithmetic expressions with the functor `(?)/1` or `(#)/1`. For example: == -?- assertz(clpz:clpz_monotonic). +?- assertz(clpz:monotonic). true. ?- #(X) #= #(Y) + #(Z). @@ -2585,7 +2585,7 @@ parse_clpz(E, R, ]). non_monotonic(X) :- - ( \+ fd_var(X), clpz_monotonic -> + ( \+ fd_var(X), monotonic -> instantiation_error(X) ; true ). @@ -2932,7 +2932,7 @@ clpz_equal(X, Y) :- clpz_equal_(X, Y), reinforce(X). - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ expr_conds(E, E) --> [integer(E)], - { var(E), !, \+ clpz_monotonic }. + { var(E), !, \+ monotonic }. expr_conds(E, E) --> { integer(E) }. expr_conds(?(E), E) --> [integer(E)]. expr_conds(#(E), E) --> [integer(E)]. @@ -7072,7 +7072,7 @@ initial_expr(_, []-1). automaton(Seqs, Template, Sigs, Ns, As0, Cs, Is, Fs) :- must_be(list(list), [Sigs,Ns,As0,Cs,Is]), ( var(Seqs) -> - ( clpz_monotonic -> + ( monotonic -> instantiation_error(Seqs) ; Seqs = Sigs ) @@ -7461,7 +7461,7 @@ attributes_goals([propagator(P, State)|As]) --> ( { ground(State) } -> [] ; { phrase(attribute_goal_(P), Gs) } -> { % del_attr(State, clpz_aux), State = processed, - ( clpz_monotonic -> + ( monotonic -> maplist(unwrap_with(bare_integer), Gs, Gs1) ; maplist(unwrap_with(=), Gs, Gs1) ),