]> Repositorios git - scryer-prolog.git/commitdiff
FIXED: corrections to expansion_simpler/2
authorMarkus Triska <[email protected]>
Mon, 2 Oct 2023 21:17:06 +0000 (23:17 +0200)
committerMarkus Triska <[email protected]>
Mon, 2 Oct 2023 21:17:06 +0000 (23:17 +0200)
Example:

    ?- X = 0, Y = 0, Z #= X-1 + Y-1.
       X = 0, Y = 0, Z = -2.

This addresses #2064.

See ca5a5b4392bfbed8cfdbb3b2e7dbaa42ea193007 for a previous issue in
this logic.

src/lib/clpz.pl

index f438043d23e06f2efef46c1e23c79bf079479505..c4ba62fa292237bbcede0b1d658d7339e92549f3 100644 (file)
@@ -3099,13 +3099,13 @@ expansion_simpler(Var is Expr0, Goal) :-
         ground(Expr0), !,
         phrase(expr_conds(Expr0, Expr), Gs),
         (   maplist(call, Gs) -> Value is Expr, Goal = (Var = Value)
-        ;   Goal = false
+        ;   Goal = (Var is Expr0)
         ).
 expansion_simpler(Var =:= Expr0, Goal) :-
         ground(Expr0), !,
         phrase(expr_conds(Expr0, Expr), Gs),
         (   maplist(call, Gs) -> Value is Expr, Goal = (Var =:= Value)
-        ;   Goal = false
+        ;   Goal = (Var =:= Expr0)
         ).
 expansion_simpler(between:between(L,U,V), Goal) :-
         maplist(integer, [L,U,V]),