;; Lexicon and Grammars in Chapter 5

;;   A lexicon of auxiliary words

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

(setq *grammar5-3*
      '((headfeatures
         (s vform agr)
         (vp vform agr)
         (np agr))
        ((s (inv -))
         -1> 
         (np (agr ?a)) (head (vp (vform (? v pres past)) (agr ?a))))
        ((vp)
         -2>
         (head (aux (compform ?v))) (vp (vform ?v)))
        ((vp)
         -3>
         (head (aux (root BE-AUX))) (vp (vform ing) (MAIN +)))
        ((vp)
         -4>
         (head (aux (root BE-AUX))) (vp (vform ing) (PASS +)))
        ((vp (PASS +))
         -5>
         (head (aux (root BE-AUX))) (vp (vform pastprt) (MAIN +) (PASSGAP +)))
        ((vp (PASSGAP -) (MAIN +))
         -6>
         (head (v (subcat _none))))
        ((vp (PASSGAP -)  (MAIN +))
         -7>
         (head (v (subcat _np))) (np))
        ((vp (PASSGAP +)  (MAIN +))
         -8>
         (head (v (subcat _np))))
        ((np)
          -9>
          (art (agr ?a)) (head (n (agr ?a))))
         ((np)
          -10>
          (head (name)))
         ((np)
          -11>
          (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))
         -5-7-1> 
         (head (pro (poss ?p) (wh ?w))))
        ((np (wh ?w))
          -5-7-2> 
          (det (wh ?w) (agr ?a)) (head (cnp (agr ?a))))
        ((cnp)
         -5-7-3>
         (head (n)))
        ((cnp)
         -5-7-4>
         (adj) (head (n)))
        ((det)
         -5-7-5> 
         (head (art)))
        ((det (wh ?w))
         -5-7-6>
         (head (np (poss +) (wh ?w) (agr (? a 3s 3p)))))
        ((det (wh ?w))
         -5-7-7>
         (head (qdet (wh ?w))))
        ((pp (wh ?w))
         -5-7-8>
         (head (p)) (np (wh ?w)))
        ((pp (wh ?w))
         -5-7-9>
         (head (pp-wrd (wh ?w))))))

(setq *grammar5-8*
      '((headfeatures
         (s vform agr)
         (vp vform agr))
        ((s (inv -) (wh ?w))
         -5-8-1> 
         (np (wh ?w)  (agr ?a)) (head (vp (vform (? v pres past)) (agr ?a))))
       ((s (inv +) (wh ?w) (gap ?g))
         -5-8-2> 
         (head (aux (compform ?s) (agr ?a)))
         (np (wh ?w) (agr ?a) (gap -)) 
         (vp (vform ?s) (gap ?g)))
       ((s)
        -5-8-3>
        (np (wh q) (gap -) (agr ?a))
        (head (s (inv +) (gap (% np (agr  ?a))))))
       ((s)
        -5-8-4>
        (pp (wh q) (gap -) (ptype ?p) (pform ?pf))
        (head (s (inv +) (gap (% pp (ptype ?p) (pform ?pf))))))
       ((vp)
        -5-8-5>
        (head (aux (compform ?s)))
        (vp (vform ?s)))
       ((vp)
        -5-8-6>
        (head (v (subcat _none))))
       ((vp)
        -5-8-7>
        (head (v (subcat _np))) (np))
       ((vp)
        -5-8-8>
        (head (v (subcat _vp-inf)))
        (vp (vform inf)))
       ((vp)
        -5-8-9>
        (head (v (subcat _np_vp-inf)))
        (np)
        (vp (vform inf)))
       ((vp)
        -5-8-10>
        (head (to))
        (vp (vform bare)))
       ((vp)
        -5-8-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)
         -R1>
         (head (cnp)) (rel (gap -)))
        ((rel (gap -))
         -R2>
         (np (wh r) (agr ?a)) (head (s (inv -) (vform (? v pres past)) (gap (% np (agr ?a))))))
        ((rel (gap -))
         -R3>
         (pp (wh r) (ptype ?p)) (head (s (inv -) (vform (? v pres past)) (gap (% pp (ptype ?p))))))
        ((rel (gap -))
         -R4>
         (np (wh r) (agr ?a)) (head (vp (vform (? v pres past)) (agr ?a))))
        ((rel (gap -))
         -R5>
          (head (s (vform (? v pres past)) (inv -) (gap (% np)))))
        ((rel (gap -))
         -R6>
         (head (vp (vform (? v ing pastprt)))))))
       
      
      
        
        
