[net.ai] OPS5 disjuction dilemma.

paul@ctvax.UUCP (11/15/84)

The solution is simple (though a little ugly). Productions themselves
are disjunctions. The idea is that rules be aranged into disjunctive
form, then each disjunction is a separate OPS5-rule. and each rule
is itself a conjunction (with possible negations).

(p variant1
   ...ce's that bind <foo1> and <foo2> ...
   ( <foo1> <foo2> )
   -->
   (make found))

(p variant2
   ...ce's that bind <foo1> and <foo2> ...
   ( <foo2> <foo1> )
   -->
   (make found))

(p var1orvar2
   ...ce's that bind <foo1> and <foo2> ...
   (found)
   -->
   .... rhs goes here ...)

This way you can avoid duplication of the RHS.

paul.ct@CSNet-Relay
ctvax!paul

neihart@smu.UUCP (11/18/84)

quickly.  The number of productions needed to express a production which
has n vectors, with m order-independent elements each, is m to the
n productions!  I've tried making a routine which would (build ..) these
productions automatically, however I've discovered that values in the
attribute-value pairs cannot be expressions which evaluate to a variable,
such as <x>