In some cases it is very useful to delay the constraint which defines the operations on strings until the parser is finished. For example, if the constraints are disjunctive, then it may be useful to wait as long as possible, before a choice in a certain direction is made. The important information for the parser is percolated anyway through the bag of words; the actual order of the words has (usually) not much influence on other choices of the parser. Hence a lot of uninteresting non determinism can thus be delayed.
As an example, consider a verb which selects a number of arguments, and where furthermore the order of the arguments is free. In effect, the predicate `cp' non-deterministically produces all possible orders. Suppose that for a given string such a verb is to be parsed, together with two arguments. Then there are six ways to parse this verb-phrase. Only one of these ways corresponds to the order of the input string. The other five possible ways to parse the verb phrase gives rise to re-computation of the other parts of the sentence. If the constraint, which generates the six possible orders, is delayed, then the parser computes with one abstract, unordered, variant, for which at the end of the parse, the proper order can be selected.
In practice this technique increased the efficiency of the parser for some grammars by a factor 3. Clearly this technique is incompatible with the improvement suggested above for order-monotonic grammars.