@@ -35,7 +35,10 @@ vars_remove_goal([], _).
|
|||||||
vars_remove_goal([Var|Vars], Goal0) :-
|
vars_remove_goal([Var|Vars], Goal0) :-
|
||||||
get_atts(Var, +dif(Goals0)),
|
get_atts(Var, +dif(Goals0)),
|
||||||
remove_goal(Goals0, Goal0, Goals),
|
remove_goal(Goals0, Goal0, Goals),
|
||||||
put_atts(Var, +dif(Goals)),
|
( Goals = [] ->
|
||||||
|
put_atts(Var, -dif(_))
|
||||||
|
; put_atts(Var, +dif(Goals))
|
||||||
|
),
|
||||||
vars_remove_goal(Vars, Goal0).
|
vars_remove_goal(Vars, Goal0).
|
||||||
|
|
||||||
reinforce_goal(Goal0, Goal) :-
|
reinforce_goal(Goal0, Goal) :-
|
||||||
|
|||||||
@@ -189,6 +189,13 @@ test("dif#12 but with multiple variables in the residuals",(
|
|||||||
Res = []
|
Res = []
|
||||||
)).
|
)).
|
||||||
|
|
||||||
|
% https://github.com/mthom/scryer-prolog/issues/1956
|
||||||
|
test("scryer-prolog#1956",(
|
||||||
|
call_residue_vars((dif(a-a,X-_),X=b), Res),
|
||||||
|
X == b,
|
||||||
|
Res = []
|
||||||
|
)).
|
||||||
|
|
||||||
main :-
|
main :-
|
||||||
findall(test(Name, Goal), test(Name, Goal), Tests),
|
findall(test(Name, Goal), test(Name, Goal), Tests),
|
||||||
run_tests(Tests, Failed),
|
run_tests(Tests, Failed),
|
||||||
|
|||||||
Reference in New Issue
Block a user