use '$enqueue_attr_var' when adding attributes only
( L \= Attr ->
nonvar(Ls),
'$get_from_list'(Ls, V, Attr)
- ; L = Attr,
- '$enqueue_attr_var'(V)
+ ; L = Attr
).
'$put_attr'(V, Attr) :-
nonvar(Att),
( Att \= Attr ->
'$del_attr_buried'(Ls0, Ls1, V, Attr)
- ; '$enqueue_attr_var'(V),
- '$del_attr_head'(V),
+ ; '$del_attr_head'(V),
'$del_attr'(Ls1, V, Attr)
).
; Ls1 = [Att | Ls2] ->
( Att \= Attr ->
'$del_attr_buried'(Ls1, Ls2, V, Attr)
- ; '$enqueue_attr_var'(V),
- '$del_attr_non_head'(Ls0), %% set tail of Ls0 = tail of Ls1. can be undone by backtracking.
+ ; '$del_attr_non_head'(Ls0), %% set tail of Ls0 = tail of Ls1. can be undone by backtracking.
'$del_attr_step'(Ls1, V, Attr)
)
).
