1995 Volume 10 Issue 6 Pages 980-987
In natural language processing, various kinds of information are represented as constraints. To deal with such constraints, the logic-based constraint solver based on the Prolog program transformation is one of the most potent schemes. Constraints in the scheme are written as programs of pure Prolog. Although this kind of constraint programming scheme gives us a good way to express some constraints, we cannot use negative expressions, which are usually represented by the 'negation as failure (NAF)' in Prolog programs. It is due to the fact that the Prolog program transformation cannot process programs which contain cut operators. However, it is pointed out that negative expressions are not only useful for making representations be concise, but also essential in some cases. Fortunately, we have already had the method, called 'Negation Technique', to derive a program whose meaning is the negation of the given program without NAF. Even if we use the method, we still have to deal with universally quantified 'not-equal' goals, which the output programs of Negation Technique usually include. One of naive ways to cope with the problem is to adopt the lazy evaluation, in which the evaluation of not-equal goals will be suspended until all variables will be bound. But it is not efficient and not suitable for the scheme of the Prolog program transformation. Accordingly, we propose a method to decompose a not-equal goal with universal quantifiers into the not-equal goals which hold the essential information of the original not-equal goal in terms of the Prolog program transformation. In the method, the program corresponding to a certain not-equal goal is dynamically calculated by using the unifier of two terms in the not-equal relation. With this method and 'Negation Technique', we can represent negative constraint to a great extent. Our method can also treat feature structures, which are widely used in recent natural language processing systems.