From cd586aab8c69376b680992c40d172af4005f8565 Mon Sep 17 00:00:00 2001 From: Markus Triska Date: Wed, 15 Mar 2023 19:56:02 +0100 Subject: [PATCH 1/2] show remaining queue/2 attributes as residual goals This lets us verify that all attributes are correctly removed earlier. --- src/lib/clpz.pl | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/lib/clpz.pl b/src/lib/clpz.pl index fd5d9d18..afc6f8cd 100644 --- a/src/lib/clpz.pl +++ b/src/lib/clpz.pl @@ -7683,10 +7683,6 @@ intervals_to_drep([A0-B0|Rest], Drep0, Drep) :- ), intervals_to_drep(Rest, Drep0 \/ D1, Drep). -attribute_goals(X) --> - { get_atts(X, queue(_,_)) }, - !, - { put_atts(X, -queue(_,_)) }. attribute_goals(X) --> % { get_attr(X, clpz, Attr), format("A: ~w\n", [Attr]) }, { get_attr(X, clpz, clpz_attr(_,_,_,Dom,fd_props(Gs,Bs,Os),_)), From 01285f12c3ddca4666f5b70163fe3d1ec31a38aa Mon Sep 17 00:00:00 2001 From: Markus Triska Date: Wed, 15 Mar 2023 21:17:06 +0100 Subject: [PATCH 2/2] remove no longer needed queue attributes after propagation --- src/lib/clpz.pl | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/lib/clpz.pl b/src/lib/clpz.pl index afc6f8cd..acf4738f 100644 --- a/src/lib/clpz.pl +++ b/src/lib/clpz.pl @@ -3943,10 +3943,7 @@ put_terminating(X, Dom, Ps) --> ) ). -new_queue(queue(Goals,Fast,Slow,_Aux)) :- - put_atts(Goals, +queue([],_)), - put_atts(Fast, +queue([],_)), - put_atts(Slow, +queue([],_)). +new_queue(queue(_Goals,_Fast,_Slow,_Aux)). queue_goal(Goal) --> insert_queue(Goal, 1). queue_fast(Prop) --> insert_queue(Prop, 2). @@ -3955,11 +3952,10 @@ queue_slow(Prop) --> insert_queue(Prop, 3). insert_queue(Element, Which) --> state(Queue), { arg(Which, Queue, Arg), - get_atts(Arg, queue(Head0,Tail0)), - ( Head0 == [] -> - Head = [Element|Tail] - ; Head = Head0, + ( get_atts(Arg, queue(Head0,Tail0)) -> + Head = Head0, Tail0 = [Element|Tail] + ; Head = [Element|Tail] ), put_atts(Arg, +queue(Head,Tail)) }. @@ -4187,11 +4183,15 @@ do_queue --> ; true ). +:- meta_predicate(ignore(0)). + +ignore(Goal) :- ( Goal -> true ; true ). + print_queue --> state(queue(Goal,Fast,Slow,_)), - { get_atts(Goal, +queue(GHs,_)), - get_atts(Fast, +queue(FHs,_)), - get_atts(Slow, +queue(SHs,_)), + { ignore(get_atts(Goal, +queue(GHs,_))), + ignore(get_atts(Fast, +queue(FHs,_))), + ignore(get_atts(Slow, +queue(SHs,_))), format("Current queue:~n goal: ~q~n fast: ~q~n slow: ~q~n~n", [GHs,FHs,SHs]) }. @@ -4208,7 +4208,7 @@ queue_get_arg_(Queue, Which, Element) :- arg(Which, Queue, Arg), get_atts(Arg, +queue([Element|Elements],Tail)), ( var(Elements) -> - put_atts(Arg, +queue([],_)) + put_atts(Arg, -queue(_,_)) ; put_atts(Arg, +queue(Elements,Tail)) ).