;; rules for before/after

(add-rule-sem '(pp ==> p+time s)
              '(lambda (p+time s)
                 (funcall p+time s)))

(add-rule-sem '(vbar-tns ==> v2-tns np pp)
              '(lambda (v2-tns np pp)
                 `(lambda (subj)
                    (funcall ,pp (funcall ,v2-tns subj ',np)))))

;; words

(add-word-semantics 'before 'p+time
                    '(lambda (action)
                       `(lambda (frame)
                          (add-feature frame :time-locative
                                       '(:relation before :action ,action)))))

(add-word-semantics 'when 'adv+wh '(:time-locative ?when))

(add-word-semantics 'after 'p+time
                    '(lambda (action)
                       `(lambda (frame)
                          (add-feature frame :time-locative
                                       '(:relation after :action ,action)))))
