The assumption, that heads always share their logical form with the mother node, may be too restrictive for specific linguistic or semantic theories. Some extensions to BUG are possible that handle more sophisticated grammars. For example it is possible, as proposed in , to enlarge the power of the prediction step. By inspection of the grammar it may be possible to pre-compile possible relations between the logical form of some top node and the logical form of the lexical head of that node. In that case, the notion `semantic-head' is defined in some other way than by the requirement that its logical form is shared with the mother node. In the general case a pre-compiler then needs to compute the reflexive and transitive closure of the relation between mothers and heads, which may not always be without problems.
Another extension is the architecture advocated in [86,87], where rules are divided in two types. The first type of rules, are rules where some daughter indeed shares its logical form with the mother node. Such rules are called chain-rules, and the relevant daughter is called the `head', as before. In the second type of rule there is no such daughter. These rules are called `non-chain-rules'. By this definition, all lexical entries are non-chain-rules because they have no daughters, and hence no head daughter. The algorithm does not necessarily predict a lexical entry, but it predicts a non-chain-rule. The daughters of this rule are then generated in a top-down fashion. After the generation of these daughters, the mother node of the non-chain-rule is connected to the top node bottom-up, as in BUG. In case all non-unit rules of a grammar are chain-rules, the algorithm is equivalent to BUG. In case no rules have a head, the algorithm reduces to a top-down generator. Assume temporarily that clauses are represented as follows:
for non-chain-rules where Mother is the mother node, and Ds is a list of daughter nodes (which will be empty for lexical entries). Chain-rules are represented as:
where Head is the head daughter of the rule, Ds is the list of non-head daughters. The extended algorithm is defined by replacing the definitions of predict_head and select_rule, of program 3.8, with the definitions of 21.