Let's suppose that we build a simple grammar with the following two rules:
AdjunctLeft : ADJ NOUN
%
SpecLeft : DT NOUN
%
Let's analyse the expression “a beautiful mountain”. The input string of the parser would be like this:
a_DT_<...> beautiful_ADJ_<...> mountain_NOUN_<...>
The first rule is applied on this string and finds the “ADJ NOUN” pattern. This finding allows the rule to identify the adjunct dependency between “beautiful” and “mountain”. But the rule also removes the adjective (which is the dependent expression) from the string that will be the input the following rule. So, the second rule will be applied on this new input:
a_DT_<...> mountain_NOUN_<...>
It finds the “DT NOUN” pattern and then the dependency between “a” and “mountain”. In addition, it removes the determiner from the input string. The head “mountain” is the only expression to be analysed in further applications of rules.
According to the “Uniqueness principle”, a dependent word only has one head. So, if we identify a dependency relation containing a dependent word which is no more the head of any word, then it means that we have alredy found all dependencies associated to that word and it can be removed from the search space. The fact of removing one by one the dependents from the input string allows us to reduce in a systematic way the search space, which consists of a huge variety of possible patterns of tags.
Considering Uniqueness, the following constraint is required to write well-formed DepPattern grammars: