/*-------------------------------------------------------------*/
/*    NCL default mechanism for NL parsing                     */
/*    (C) 1993 Lydia Sinapova, Zdravko Markov, II-BAS          */
/*-------------------------------------------------------------*/
/*
DESCRIPTION:
-----------
The example refers to the coordination between clauses, verb
phrases and noun phrases in NL parsing.  A sentence with
coordinated constituents can be thought of as obtained out of
two (or more) sentences by factoring out the common parts. The
problem in parsing coordinated structures consists in finding
their common parts and projecting the properties of the common
parts over the coordinated elements. In the example the
coordinated elements are situated in isomorphic case-frame
structures (Case Frames 1 and 2). The default nodes project the
properties of the shared elements into these case-frame
structures by deducing  the  values of the slots that have
remained empty.

REFERENCES:
----------
Markov, Z., L. Sinapova & Ch. Dichev. Default reasoning in a
network environment. In: Proceedings of ECAI-90, August 6-10,
1990, Stockholm, Sweden, 431-436.

Markov, Z. & Ch. Dichev. The Net-Clause Language - A Tool for
Data-Driven Inference, In: Logics in AI, Proceedings of European
Workshop JELIA'90, Amsterdam, The Netherlands, September 1990,
LNCS, Vol.478, Springer-Verlag, 366-385.
*/

/*-------------------------------------------------------------*/

/*---------------------- Case Frame 1 -------------------------*/
s(Subject1): v(Verb1): o(Object1):
clause1(Verb1,Subject1,Object1):

/*---------------------- Case Frame 2 -------------------------*/
s(Subject2): v(Verb2): o(Object2):
clause2(Verb2,Subject2,Object2):

/*------------------- Default Hierarchy -----------------------*/
default(Subject2,Subject1):
default(Verb2,Verb1):
default(Object2,Object1):
default(Object1,something).

/*-------------------------------------------------------------*/
/* EXAMPLES:                                                   */
/*-------------------------------------------------------------*/
/*
?- s(tom),v(eats),o(apple),o(cake),
   clause1(X1,Y1,Z1),clause2(X2,Y2,Z2).
X1=eats
Y1=tom
Z1=apple
X2=eats
Y2=tom
Z2=cake

?- s(tom),s(bob),v(eat),clause1(X1,Y1,Z1),clause2(X2,Y2,Z2).
X1=eat
Y1=tom
Z1=something
X2=eat
Y2=bob
Z2=something

*/
