13.2.3 Rule Formats

Let us reconsider the two rules we stated from. Even though they are much better than the context free counter parts, they are still not very convincing: Why the hell should we need two distinct rules in order to express that the number of an s-phrase has to coincide with the numbers of its np-phrase and its vp-phrase? Clearly, this kind of doubling grammar rules would explode the size of the grammar when doing so consistently. A much better idea would be to consider the following rule which can be written in a unification grammar:

  
  s(nb:X) -> s(nb:X) vp(nb:X)

In fact, we do even not state here that X should denote either sg or pl. This information could be easily processed in Oz by using finite domain constraints but it is not strictly needed in the example grammer we present here.

Each rule of an unification based grammar is of one of the following two form:

  
  c -> c1 ... cn  
  c -> phon

where c,c1,...,cn are feature terms representing structured categories and phon is an atom. Note that a feature term is like an attribute value matrix but with variables for expressing coreference, rather than integers.

When considering the grammar rules from above as Horn clauses with feature constraints, it is easy to define what a parse tree is. We only need one predicat symbol p for parse tree and two function symbols n for node and leave.

  
p(X) <- X=n(X1 ... Xn cat:c), 
        p(X1), ....,p(Xn),  
        X1.cat=c1, ... ,Xn.cat=cn  
p(X) <- X=n(leave(Phon) cat:c)


Denys Duchier, Claire Gardent and Joachim Niehren
Version 1.3.99 (20050412)