;;; New Tense Macros
;;; Time-stamp: <96/05/07 17:53:22 jlitchfi>

;;; Added tenses:
;;; past-perfect-continuous "had been" 
;;; future-perfect-continuous "will have been"
;;; future-in-past "was going to"
;;; future-in-future "will be going to" 
;;; future-in-past-perfect "had been going to" 
;;; future-in-present-perfect "has been going to"
;;; future-in-future-perfect "will have been going to"
;;;
;;; Also reformatted old tenses so they are a bit easier to read.
;;; - Jon 07/05/96

(defspl-macro :tense
    ((present
      :speech-act-id (?sa / Speech-act
			  :speaking-time-id 
			  (?st / time
			       :time-in-relation-to-speaking-time-id ?et
			       :same-as-q (?st ?et) same
			       :precede-q (?st ?et) notprecedes))
      :event-time (?et / time
		       :precede-q (?et ?st) notprecedes))
     (past
      :speech-act-id (?sa / Speech-act
			  :speaking-time-id 
			  (?st / time
			       :time-in-relation-to-speaking-time-id ?et
			       :precede-q (?st ?et) notprecedes))
      :event-time (?et / time
		       :precede-q (?et ?st) precedes))
     (future
      :speech-act-id (?sa / Speech-act
			  :speaking-time-id 
			  (?st / time
			       :time-in-relation-to-speaking-time-id ?et
			       :precede-q (?st ?et) precedes))
      :event-time (?et / time
		       :precede-q (?et ?st) notprecedes))
     (present-continuous 
      :speech-act-id (?sa / Speech-act
			  :speaking-time-id 
			  (?st / time
			       :time-in-relation-to-speaking-time-id ?st
			       :time-in-relation-id (?st ?et ?st) ?et
			       :precede-q (?st ?et) notprecedes))
      :event-time (?et / time
		       :precede-q (?et ?st) notprecedes))
     (past-continuous
      :speech-act-id (?sa / Speech-act
			  :speaking-time-id 
			  (?st / time
			       :time-in-relation-to-speaking-time-id
			       (?rt / time
				    :precede-q (?rt ?st) precedes
				    :precede-q (?rt ?et) notprecedes)
			       :time-in-relation-id (?st ?et ?rt) ?et
			       ;; true, but not needed:  
			       ;; :precede-q (?st ?et) notprecedes
			       :precede-q (?st ?rt) notprecedes))
      :event-time (?et / time
		       ;; true, but not needed:	
		       ;; :precede-q (?et ?st) notprecedes
		       :precede-q (?et ?rt) notprecedes))
     (future-continuous 
      :speech-act-id (?sa / Speech-act
			  :speaking-time-id 
			  (?st / time
			       :time-in-relation-to-speaking-time-id
			       (?rt / time
				    :precede-q (?rt ?st) notprecedes
				    :precede-q (?rt ?et) notprecedes)
			       :time-in-relation-id (?st ?et ?rt) ?et
			       ;; true, but not needed:        
			       ;; :precede-q (?st ?et) precedes
			       :precede-q (?st ?rt) precedes))
      :event-time (?et / time
		       ;; true, but not needed:		
		       ;; :precede-q (?et ?st) notprecedes
		       :precede-q (?et ?rt) notprecedes))

     ;; ALTERNATE FORMS OF -CONTINUOUS TENSES:
     (past-progressive
      :tense past-continuous)
     (present-progressive
      :tense present-continuous)
     (future-progressive
      :tense future-continuous)
     
     (present-perfect
      :speech-act-id (?sa / Speech-act
			  :speaking-time-id 
			  (?st / time
			       :time-in-relation-to-speaking-time-id ?st
			       :time-in-relation-id (?st ?et ?st) ?et
			       :precede-q (?st ?et) notprecedes))
      :event-time (?et / time
		       :precede-q (?et ?st) precedes))     
     (past-perfect
      :speech-act-id (?sa / Speech-act
			  :speaking-time-id 
			  (?st / time
			       :time-in-relation-to-speaking-time-id
			       (?rt / time
				    :precede-q (?rt ?st) precedes
				    :precede-q (?rt ?et) notprecedes)
			       :time-in-relation-id (?st ?et ?rt) ?et
			       ;; true, but not needed:    
			       ;; :precede-q (?st ?et) notprecedes
			       :precede-q (?st ?rt) notprecedes))
      :event-time (?et / time
		       ;; true, but not needed:	
		       ;; :precede-q (?et ?st) precedes
		       :precede-q (?et ?rt) precedes))
     (future-perfect 
      :speech-act-id (?sa / Speech-act
			  :speaking-time-id 
			  (?st / time
			       :time-in-relation-to-speaking-time-id
			       (?rt / time
				    :precede-q (?rt ?st) notprecedes
				    :precede-q (?rt ?et) notprecedes)
			       :time-in-relation-id (?st ?et ?rt) ?et
			       ;; true, but not needed:    
			       ;; :precede-q (?st ?et) precedes
			       :precede-q (?st ?rt) precedes))
      :event-time (?et / time
		       ;; true, but not needed:	
		       ;; :precede-q (?et ?st) notprecedes
		       :precede-q (?et ?rt) precedes))
     
     (present-perfect-continuous 
      :speech-act-id (?sa / Speech-act
			  :speaking-time-id 
			  (?st / time
			       :time-in-relation-to-speaking-time-id
			       (?rt / time
				    :precede-q (?rt ?st) notprecedes
				    :precede-q (?rt ?et) notprecedes
				    :precede-q (?rt ?r2t) notprecedes)				
			       :time-in-relation-id (?st ?et ?rt)
			       (?r2t / time
				     :precede-q (?r2t ?rt) precedes)
			       :precede-q (?r2t ?rt) precedes
			       :precede-q (?st ?et) notprecedes
			       :precede-q (?st ?rt) notprecedes))
      :event-time (?et / time
		       :precede-q (?et ?st) notprecedes
		       :precede-q (?et ?rt) notprecedes))
     
     ;;
     ;; New tenses added by Jon 07/05/96
     ;;
     
     (past-perfect-continuous 
      :speech-act-id (?sa / Speech-act
			  :speaking-time-id 
			  (?st / time
			       :time-in-relation-to-speaking-time-id
			       (?rt / time
				    :precede-q (?rt ?st) precedes
				    :precede-q (?rt ?et) notprecedes
				    :precede-q (?rt ?r2t) notprecedes)				
			       :time-in-relation-id (?st ?et ?rt)
			       (?r2t / time
				     :precede-q (?r2t ?rt) precedes)
			       :precede-q (?r2t ?rt) precedes
			       :precede-q (?st ?et) notprecedes
			       :precede-q (?st ?rt) notprecedes))
      :event-time (?et / time
		       :precede-q (?et ?st) notprecedes
		       :precede-q (?et ?rt) notprecedes))
     (future-perfect-continuous
      :speech-act-id (?sa / Speech-act
			  :speaking-time-id 
			  (?st / time
			       :time-in-relation-to-speaking-time-id
			       (?rt / time
				    :precede-q (?rt ?st) notprecedes
				    :precede-q (?rt ?et) notprecedes)
			       :time-in-relation-id (?st ?et ?rt) 
			       (?r2t / time
				     :precede-q (?r2t ?rt) precedes)
			       ;; true, but not needed: 
			       :precede-q (?st ?et) precedes
			       :precede-q (?st ?rt) precedes))
      :event-time (?et / time
		       ;; true, but not needed:	
		       :precede-q (?et ?st) notprecedes
		       :precede-q (?et ?rt) notprecedes))
     
     (future-in-past
      :speech-act-id (?sa / Speech-act
			  :speaking-time-id 
			  (?st / time
			       :time-in-relation-to-speaking-time-id
			       (?rt / time
				    :precede-q (?rt ?st) precedes
				    :precede-q (?rt ?et) precedes)
			       :time-in-relation-id (?st ?et ?rt) ?et
			       :precede-q (?rt ?et) precedes
			       :precede-q (?st ?et) precedes))
      :event-time (?et / time
		       :precede-q (?et ?st) notprecedes))

     (future-in-present
      :speech-act-id (?sa / Speech-act
              :speaking-time-id
              (?st / time
                   :time-in-relation-to-speaking-time-id ?st
                   :time-in-relation-id (?st ?et ?st) ?et
                   :precede-q (?st ?et) precedes))
      :event-time (?et / time
               :precede-q (?et ?st) notprecedes))

     (future-in-future
      :speech-act-id (?sa / Speech-act
			  :speaking-time-id 
			  (?st / time
			       :time-in-relation-to-speaking-time-id
			       (?rt / time
				    :precede-q (?rt ?st) notprecedes
				    :precede-q (?rt ?et) precedes)
			       :time-in-relation-id (?st ?et ?rt) ?et
			       :precede-q (?st ?rt) precedes
			       :precede-q (?rt ?et) precedes
			       :precede-q (?st ?et) precedes))
      :event-time (?et / time
		       :precede-q (?et ?rt) precedes
		       :precede-q (?et ?st) notprecedes))
     
     (future-in-present-perfect
      :speech-act-id (?sa / Speech-act
			  :speaking-time-id 
			  (?st / time
			       :time-in-relation-to-speaking-time-id ?st
			       :time-in-relation-id (?st ?et ?st)
			       (?r2t / time 
				     :precede-q (?r2t ?et) precedes
				     :precede-q (?r2t ?st) precedes)
			       :precede-q (?r2t ?st) precedes
			       :precede-q (?st ?et) notprecedes))
      :event-time (?et / time
		       :precede-q (?et ?st) notprecedes))
     (future-in-past-perfect
      :speech-act-id (?sa / Speech-act
			  :speaking-time-id 
			  (?st / time
			       :time-in-relation-to-speaking-time-id
			       (?rt / time
				    :precede-q (?rt ?st) precedes
				    :precede-q (?rt ?et) notprecedes
				    :precede-q (?rt ?r2t) notprecedes)
			       :time-in-relation-id (?st ?et ?rt)
			       (?r2t / time 
				     :precede-q (?r2t ?rt) precedes
				     :precede-q (?r2t ?et) precedes
				     :precede-q (?r2t ?st) precedes)
			       :precede-q (?r2t ?rt) precedes
			       :precede-q (?r2t ?st) precedes
			       :precede-q (?st ?rt) notprecedes
			       :precede-q (?st ?et) notprecedes))
      :event-time (?et / time
		       :precede-q (?et ?rt) notprecedes
		       :precede-q (?et ?st) notprecedes))
     (future-in-future-perfect
      :speech-act-id (?sa / Speech-act
			  :speaking-time-id 
			  (?st / time
			       :time-in-relation-to-speaking-time-id
			       (?rt / time
				    :precede-q (?rt ?st) notprecedes
				    :precede-q (?rt ?et) precedes)
			       :time-in-relation-id (?st ?et ?rt)
			       (?r2t / time
				     :precede-q (?r2t ?et) precedes
				     :precede-q (?r2t ?st) precedes
				     :precede-q (?r2t ?rt) precedes)
			       :precede-q (?r2t ?st) precedes
			       :precede-q (?st ?rt) precedes
			       :precede-q (?rt ?et) precedes
			       :precede-q (?st ?et) precedes))
      :event-time (?et / time
		       :precede-q (?et ?rt) precedes
		       :precede-q (?et ?st) notprecedes))
     ))
  
