Another problem is posed by rules where the logical form of the head is shared with the logical form of some other daughter. In fact the rule of 2.1 is such a rule:
node(np/LF,P0-PN) ---> % np rule [ node(n/LF,P1-PN),node(det/LF,P0-P1) ].
In principle, this situation can lead to nontermination of the algorithm. A simple (partial) solution to the problem is to augment the algorithm as follows. In BUG1 only semantic top-down information is used (in the prediction step). The prediction step can easily be augmented to use some syntactic information as well. Assuming that the predicate is a precompiled table of the transitive closure of possible syntactic links between mothers and heads, similar to the link predicate in the BUP parser  between mothers and left-most daughters, the definition of and can be changed as follows:
select_word(node(M/LF,_),node(S/LF,P)):- ( node(S/LF,P) --->  ), link(M,S). select_rule(Head,node(M/S,P),Others,node(Syn/_,_)):- ( node(M/S,P) ---> [Head|Ds] ), link(Syn,M).
In most practical cases this technique solves the problem.