/*************************************************************************

         name: experiment2.pl (Volume1, Chapter 2)
      version: July 2, 1997
  description: This is the code of the second experiment 
      authors: Patrick Blackburn & Johan Bos
 
*************************************************************************/

:- ensure_loaded(comsemOperators).

/*========================================================================
   Syntax-semantics rules 
========================================================================*/

s(Sem)--> np(X,SemVP,Sem), vp(X,SemVP).

np(X,Scope,Sem)--> det(X,Restr,Scope,Sem), noun(X,Restr). 

np(SemPN,Sem,Sem)--> pn(SemPN).

vp(X,Sem)--> iv(X,Sem).

vp(X,Sem)--> tv(X,Y,SemTV), np(Y,SemTV,Sem). 

/*========================================================================
   Proper Names
========================================================================*/

pn(vincent)--> [vincent].

pn(mia)--> [mia].

/*========================================================================
   Transitive Verbs
========================================================================*/

tv(Y,Z,love(Y,Z))--> [loves].

/*========================================================================
   Intransitive Verbs
========================================================================*/

iv(Y,snort(Y))--> [snorts].

/*========================================================================
   Determiners
========================================================================*/

det(X,Restr,Scope,exists(X,Restr & Scope))--> [a].

det(X,Restr,Scope,forall(X,Restr > Scope))--> [every].

/*========================================================================
   Nouns
========================================================================*/

noun(X,woman(X))--> [woman].

noun(X,footmassage(X))--> [foot,massage].