;; Lexicon and Grammars in Chapter 5

;;   A lexicon of auxiliary words

(setq *lexicon5-2*
  '((can (aux (modal +) (root CAN1) (vform pres) (agr ?a) (subcat bare)))
    (could (aux (modal +) (root COULD1) (vform (? v pres past)) (agr ?a) (subcat bare)))
    (do (aux (modal +) (root DO1) (vform pres) (agr (? a 1s 2s 1p 2p 3p)) (subcat bare)))
    (does (aux (modal +) (root DO1) (vform pres) (agr 3s) (subcat bare)))
    (did (aux (modal +) (root DO1) (vform past) (agr ?a) (subcat bare)))
    (have (aux (vform bare) (root HAVE-AUX) (SUBCAT pastprt)))
    (have (aux (vform pres) (root HAVE-AUX) (agr (?a 1s 2s 1p 2p 3p)) (SUBCAT pastprt)))
    (has (aux (vform pres) (root HAVE-AUX) (agr 3s) (SUBCAT pastprt)))
    (had (aux (vform past) (root HAVE-AUX) (agr ?a) (SUBCAT pastprt)))
    (having (aux (vform ing) (root HAVE-AUX) (SUBCAT pastprt)))
    (be (aux (root BE-AUX) (VFORM bare) (SUBCAT ing)))
    (is (aux (root BE-AUX) (VFORM pres) (SUBCAT ing) (AGR 3s)))
    (am (aux (root BE-AUX) (VFORM pres) (SUBCAT ing) (AGR 1s)))
    (are (aux (root BE-AUX) (VFORM pres) (SUBCAT ing) (AGR (?a 2s 1p 2p 3p))))
    (was (aux (root BE-AUX) (VFORM past) (AGR (? a 1s 3s)) (SUBCAT ing)))
    (were (aux (root BE-AUX) (VFORM past) (AGR (? a 2s 1p 2p 3p)) (SUBCAT ing)))
    (been (aux (root BE-AUX) (VFORM pastprt) (SUBCAT ing)))
    (being (aux (root BE-AUX) (VFORM ing) (SUBCAT ing)))))
  
;;  Here is grammar 5-3, which handles auxiliaries and passives  

(setq *grammar5-3*
      '((headfeatures
         (s agr)
         (vp vform agr)
         (np agr))
        ((s (inv -))
         -1> 
         (np (agr ?a)) (head (vp (vform (? v pres past)) (agr ?a))))
        ((vp (modal +) (perf ?p1) (prog ?p2) (pass ?p3))
         -2>
         (head (aux (modal +))) (vp (vform bare) (perf ?p1) (prog ?p2) (pass ?p3) (pass-gap -)))
        ((vp (perf +) (prog ?p2) (pass ?p3))
         -3>
         (head (aux (root HAVE-AUX))) (vp (vform pastprt) (perf -) (prog ?p2) (pass ?p3) (pass-gap -)))
        ((vp (prog +) (pass ?p3))
         -4>
         (head (aux (root BE-AUX))) (vp (vform ing) (perf -) (prog -) (pass ?p3) (pass-gap -)))
        ((vp (pass +))
         -5>
         (head (aux (root BE-AUX))) (vp (vform pastprt) (perf -) (prog -) (pass -) (pass-gap +)))
        ((vp (pass-gap -))
         -6>
         (head (v (subcat _none))))
        ((vp (pass-gap ?p))
         -7>
         (head (v (subcat _np))) (np (pass-gap ?p)))
        ((np)
          -8>
          (art (agr ?a)) (head (n (agr ?a))))
         ((np)
          -9>
          (head (name)))
         ((np)
          -10>
          (head (pro)))))

;; a lexicon of NPs with wh features

(setq *lexicon5-6*
  '((what (pro (wh q) (root WHAT) (agr (? a 3s 3p))))
    (what (qdet (wh q) (root WHAT) (agr (? a 3s 3p))))
    (which (qdet (wh q) (root WHICH) (agr (? a 3s 3p))))
    (which (pro (wh r) (root WHICH) (agr (? a 3s 3p))))
    (when (pp-wrd (wh (? w q r)) (root WHEN) (ptype time)))
    (whose (pro (wh (? w q r)) (root WHOSE) (poss +) (agr (? a 3s 3p))))
    (who (pro (wh (? w q r)) (root WHO) (agr 3s)))
    (where (pp-wrd (wh (? w q r)) (root WHERE) (ptype (? p loc mot))))))

(setq *lexicon-additions*
      '((put (v (subcat _np_pp-loc) (root PUT) (vform bare) (irreg-past +)))
        (put (v (subcat _np_pp-loc) (root PUT) (vform past) (agr ?a)))
        (in (p (ptype loc) (pform in) (root IN1))))
      )

(setq *grammar5-7*
      '((headfeatures
         (np agr)
         (cnp agr)
         (det agr)
         (pp ptype pform))
        ((np (poss ?p) (wh ?w))
         -1> 
         (head (pro (poss ?p) (wh ?w))))
        ((np (wh ?w))
          -2> 
          (det (wh ?w) (agr ?a)) (head (cnp (agr ?a))))
        ((cnp)
         -3>
         (head (n)))
        ((cnp)
         -4>
         (adj) (head (n)))
        ((det)
         -3> 
         (head (art)))
        ((det (wh ?w))
         -4>
         (head (np (poss +) (wh ?w) (agr (? a 3s 3p)))))
        ((det (wh ?w))
         -5>
         (head (qdet (wh ?w))))
        ((pp (wh ?w))
         -6>
         (head (p)) (np (wh ?w)))
        ((pp (wh ?w))
         -7>
         (head (pp-wrd (wh ?w))))))

(setq *grammar5-8*
      '((headfeatures
         (s vform agr)
         (vp vform agr))
        ((s (inv -) (wh ?w))
         -1> 
         (np (wh ?w)  (agr ?a)) (head (vp (vform (? v pres past)) (agr ?a))))
       ((s (inv +) (wh ?w) (gap ?g))
         -2> 
         (head (aux (subcat ?s) (agr ?a)))
         (np (wh ?w) (agr ?a) (gap -)) 
         (vp (vform ?s) (gap ?g)))
       ((s)
        -3>
        (np (wh q) (gap -) (agr ?a))
        (head (s (inv +) (gap (% np (agr  ?a))))))
       ((s)
        -4>
        (pp (wh q) (gap -) (ptype ?p) (pform ?pf))
        (head (s (inv +) (gap (% pp (ptype ?p) (pform ?pf))))))
       ((vp)
        -5>
        (head (aux (subcat ?s)))
        (vp (vform ?s)))
       ((vp)
        -6>
        (head (v (subcat _none))))
       ((vp)
        -7>
        (head (v (subcat _np))) (np))
       ((vp)
        -8>
        (head (v (subcat _vp-inf)))
        (vp (vform inf)))
       ((vp)
        -9>
        (head (v (subcat _np_vp-inf)))
        (np)
        (vp (vform inf)))
       ((vp)
        -10>
        (head (to))
        (vp (vform bare)))
       ((vp)
        -11>
        (head (v (subcat _np_pp-loc)))
        (np)
        (pp (ptype loc)))))

(setq *grammar-RelClause*
      '((headfeatures
         (s vform)
         (vp vform agr)
         (np agr)
         (cnp agr))
        ((cnp)
         -20>
         (head (cnp)) (rel (gap -)))
        ((rel (gap -))
         -21>
         (np (wh r) (agr ?a)) (head (s (inv -) (vform (? v pres past)) (gap (% np (agr ?a))))))
        ((rel (gap -))
         -22>
         (pp (wh r) (ptype ?p)) (head (s (inv -) (vform (? v pres past)) (gap (% pp (ptype ?p))))))
        ((rel (gap -))
         -23>
         (np (wh r) (agr ?a)) (head (vp (vform (? v pres past)) (agr ?a))))
        ((rel (gap -))
         -24>
          (head (s (vform (? v pres past)) (gap (% np)))))
        ((rel (gap -))
         -25>
         (head (vp (vform (? v ing pastprt)))))))
       
      
      
        
        