From: Mike Speed
Subject: SMSPEC
Date: 
Message-ID: <1120883515.650084.287360@z14g2000cwz.googlegroups.com>
(DEFUN SMVG NIL
       ;;CALLED INSIDE ANY VG
       (PROG (TSS TENSE)
	     (SETQ TSS (GETR 'TIME (MOVE-PT C U (CLAUSE))))
	     (AND (CQ NEG) (ADD-F-PT 'NEG PT))
								       ;NEG IS TRANSFERRED FROM THE
	     (SETQ TENSE (GETR 'TENSE C))
								       ;VG TO THE CLAUSE IN WHICH IT
	     (COND ((MEMBER TENSE
			    '((PRESENT) (IMPER) (INFINITIVE)))
		    T)
								       ;IS EMBEDDED.
		   ((EQUAL TENSE '(MODAL))
		    (SETQ GLOBAL-MESSAGE '(THAT DOESN/'T
						MAKE
						ANY
						SENSE
						TO
						ME/.))
		    (ADD-F-PT 'MODAL PT))
								       ;CLAUSES ARE ALSO MARKED AS
		   ((AND (EQUAL TENSE '(FUTURE))
								       ;MODAL.
			 (ISQ PT QUEST)
			 (EQUAL (REFER? (CAR (SM (GETR 'SUBJECT
						       PT))))
				'(:SHRDLU)))
								       ; FUTURE QUESTIONS WITH /"YOU/"
		    (SETQ TENSE '(PRESENT))
								       ;SUBJECT IS REALLY IMPERATIVE
		    (REMOVE-F-PT 'QUEST PT)
								       ; THE CLAUSE IS NO LONGER
		    (ADD-F-PT 'IMPER PT))
								       ;QUESTION  BUT RATHER,
		   ((SETDIF TENSE '(PAST PRESENT))
								       ;IMPERATIVE
		    (GLOBAL-ERR '(I DON/'T
				    KNOW
				    HOW
				    TO
				    HANDLE
				    TENSES
				    INVOLVING
				    FUTURE
				    EVENTS
				    OR
				    MODALS
				    OTHER
				    THAN
				    IN
				    THE
				    PRESENT))))
	     (PUTPROP TSS TENSE 'TENSE=)
	     (RETURN T)))

(DEFUN SMADJGQSHORT NIL (ERT SMADJQSHORT NOT WRITTEN YET))

(DEFUN SMPRON (NODE)
       (EVAL (SM NODE))
       (COND ((NULL SM)
	      (SETQ GLOBAL-MESSAGE (APPEND '(I DON/'T KNOW WHAT /")
					   (FROM (NB H) (N H))
					   '(/" REFERS TO)))))
       SM)

(DEFUN SMVAUX NIL
       (COND ((ISQ H NEG) (FQ NEG)) (T))
       (PUTPROP (GETR 'TIME C)
		(OR (MEET (FE H) '(PRESENT PAST MODAL))
		    (ERTERR SMVAUX -- FUNNY TENSE))
		'TENSE=))

(DEFUN SMADV NIL (ERT SMADV NOT WRITTEN YET))

(DEFUN SMPLACE NIL (ERT SMPLACE NOT WRITTEN YET))

(DEFUN SMTOADJ NIL (ERT SMTOADJ (UNCT) NOT WRITTEN YET))

(DEFUN SMPROP NIL
       ;;THIS IS THE SEMANTICS FOR PROPER NOUNS.  IT PRODUCES TWO
       ;;INTERPRETATIONS.  ONE IS THE OPAQUE REFERENCE TO THE NAME
       ;;ITSELF, AS IN /"CALL IT SAM/".  THE OTHER IS THE TRANSPARENT
       ;;REFERENT AS IN /"PICK UP SAM/".
       (SMSET (LIST (BUILD OSSNODE=
			   (MAKESYM 'OSS)
			   VARIABLE=
			   'NAME
			   DETERMINER=
			   (1. DEF NIL)
			   PARSENODE=
			   C
			   MARKERS=
			   (/#NAME)
			   REFER=
			   (LIST (WORD (NB H))))
		    (BUILD OSSNODE=
			   (MAKESYM 'OSS)
			   DETERMINER=
			   (1. DEF NIL)
			   PARSENODE=
			   C
			   VARIABLE=
			   (MAKESYM 'X)
			   RELATIONS=
			   (LIST (LIST '/#NAME
				       OSSNODE=
				       (WORD (NB H)))))))
       (SMNG2))

(DEFUN SMADJ (WORD-BEING-INTERPRETED)
       ;; THIS FUNCTION TAKES AS INPUT THE PARSE NODE FOR AN
       ;;ADJECTIVE - NOT COMPARATIVE OR SUPERLATIVE.  IT JUST EVAL'S
       ;;THE DEFINITION.  THAT DEFINITION (WHICH SHOULD BE AN NMEANS)
       ;;MAP'S DOWN THE LIST OF OSS'S IN THE FREE VARIABLE /"SM/".  IT
       ;;CHECKS FOR MARKER COMPATIBILITY AND ATTACHES ITS /"PLANNER/"
       ;;TO THAT OF THE OSS.  IT SHOULD MAKE UP NEW OSS'S IN CASE OF
       ;;MULTIPLE INTERPRETATIONS OF THE PHRASE.  THE OSS'S IT
       ;;CREATES ARE LEFT IN THE FREE VARIABLE /"SM/".  THIS FUNCTION
       ;;CALLED BY: SMNG1 IT NEEDS TO BE HAIRED UP FOR CONJOINED
       ;;ADJECTIVES LIKE /"GREEN AND RED BALL/".
       (EVAL (SM WORD-BEING-INTERPRETED)))
								       ; EVALUATE THE DEFINITION OF THE ADJECTIVE

;;---------------------------------------------
;;;--------------------------------------------

(DEFUN SMADJG-PREPG NIL
								       ;HANDLES ADJECTIVE GROUPS AND
       (PROG (X SMSUB)
								       ;PREPGS BOTH AS COMPLEMENTS
	     (AND (OR (CQ AGENT) (CQ OF)) (RETURN T))
								       ;AND QUALIFIERS DO NOTHING
	     (SETR 'LOGICAL-SUBJECT
								       ;FOR /"BY/" PHRASES IN PASSIVE
		   (COND ((CQ COMP)
			  (GETR 'SUBJECT
				(MOVE-PT C U (CLAUSE))))
								       ;CLAUSES OR /"OF/" PHRASES LIKE
			 ((CQ LOBJ)
								       ;IN THREE OF THE BLOCKS.
			  (OR (GETR 'OBJ1
				    (MOVE-PT C U (CLAUSE)))
								       ;SEMANTIC SUBJECT IS THE
			      (GETR 'SUBJECT PT)))
								       ;SUBJECT OF AN INTENSIVE OR
			 ((ISQ (MOVE-PT C
					U
					(NOT (ISQ PT COMPONENT))
					U)
			       NG)
			  PT)
								       ;THE NG TO WHICH THE GROUP IS
			 ((ISQ PT CLAUSE) PT)
								       ;A QUALIFIER, OR THE CLAUSE
			 ((ERTERR SMADJG-PREPG FUNNY POSITION)))
								       ;OF WHICH IT IS AN ADJUNCT.
		   C)
	     (SETQ SMSUB (SM (GETR 'LOGICAL-SUBJECT C)))
	     (AND (CQ ADJG)
		  (GETR 'OBJ1 C)
		  (SETR 'ADJGHEAD
			(COMPARE-BUILD (GETR 'HEAD C)
				       (COND ((CQ AS) '/#ASMUCH)
					     ((CQ THAN) '/#MORE)
					     ((ERTERR SMADJG-PREPG
						      FUNNY
						      TYPE))))
			C))
	     (COND
	      ((GETR 'OBJ1 C) (SMCL1) (RETURN SM))
	      ((RETURN
		(SMSET
		 (PROG (SM)
		       (SMSET (MAPCAR
			       '(LAMBDA (OSS)
					(BUILD OSSNODE=
					       (MAKESYM 'OSS)
					       MARKERS=
					       (MARKERS? OSS)
					       SYSTEMS=
					       (SYSTEMS? OSS)
					       VARIABLE=
					       (VARIABLE? OSS)
					       REFER=
					       (REFER? OSS)
					       REL=
					       OSS
					       REFER=
					       (REFER? OSS)
					       DETERMINER=
					       '(NS-PL INDEF NIL)))
			       SMSUB))
		       (EVAL (COND ((OR (CQ COMPAR) (CQ SUP))
				    (FINDMEASURE (GETR 'HEAD
						       C)))
				   (T (SM (GETR 'HEAD C)))))
		       (RETURN SM))))))))

;;;--------------------------------------------

(DEFUN SMIT (PRONOUN)
								       ; PRONOUN IS (IT THEY ONE)
       (PROG (CANDIDATES AMBIGUITIES)
								       ; A NODE LIST OF POSSIBLE
	     (OR DISCOURSE (ERT SMIT: DISCOURSE SWITCH NOT ON))
								       ;REFERENTS
	     (AND MVB;IS THIS A /"DO IT!/" COMMAND?
		  (ISQ MVB DO)
		  (CQ OBJ1)
		  (RETURN (SMSET LASTEVENT)))
								       ;IF SO, RETURN THE LAST EVENT
	     (COND ((GET PRONOUN 'BIND)
								       ;MENTIONED IF THIS PRONOUN
		    (MAP (FUNCTION (LAMBDA (BINDNODE)
					   (SMIT2 BINDNODE 0.)))
								       ;HAS BEEN USED BEFORE IN THIS
			 (GET PRONOUN 'BIND))
								       ;SENTENCE THEN USE THE SAME
		    (RETURN SM))
								       ;CANDIDATES
		   ((SMIT2 (GET PRONOUN 'LASTBIND) 0.)
								       ; IF THIS PRONOUN WAS USED IN
		    (GO DONE))
								       ;THE PREVIOUS SENTENCE
		   ((OR (MOVE-PT C U U (NG) U U (NG))
								       ;LOOK FOR A STRUCTURE LIKE  /"
			(MOVE-PT C U U (NG) U (COMP) PV (SUBJ)))
								       ;A BLOCK WHICH IS TALLER THAN
		    (SMIT2 PT 0.)
								       ;ANYTHING WHICH SUPPORTS IT/"
		    (MOVE-PT C U U (NG))
								       ;OR /"A
		    (COND ((ISQ PT DEF)
			   (ADD-F-PT 'INDEF PT)
			   (REMOVE-F-PT 'DEF PT)
			   (MAPC '(LAMBDA (INTERP)
					  (PUTPROP INTERP
						   '((EXACTLY 1.)
						     INDEF
						     NIL)
						   'DETERMINER=))
				 (SM PT))))
		    (RETURN SM))
								       ;BLOCK TALLER THAN ANYTHING
		   ((OR (MOVE-PT C U (BOUND) U)
								       ;WHICH SUPPORTS IT/"
			(MOVE-PT C
				 U
				 (AND (ISQ PT CLAUSE)
				      (ISQ PT COMPONENT))
				 U
				 DLC))
		    (SMIT2 (GETR 'OBJ2 PT) 0.)
		    (SMIT2 (GETR 'OBJ1 PT) 0.)
		    (SMIT2 (GETR 'SUBJECT PT) 0.)
		    (AND (NULL SM)
			 (ISQ PT RSQ)
			 (SMIT2 (GETR 'RELHEAD PT) 0.))
		    (AND SM (RETURN SM))))
	     (SMIT2 (GETR 'SUBJECT LASTSENT) 192.)
	     (SMIT2 (PARSENODE? LASTREL) 128.)
								       ;TRY REL (I.E. QUESTION FOCUS
	     (MOVE-PT LASTSENT DLC)
								       ;) OF THE LAST SENTENCE. GO
	UP   (COND ((NOT (MOVE-PT PV (NG))) (GO ON))
		   (ELSE (SMIT2 PT 64.)))
								       ;THROUGH TOP LEVEL NG'S OF
	     (AND (MOVE-PT PV) (GO UP))
								       ;LAST SENTENCE
	ON   (OR SM  ; IF WE HAVEN'T YET FOUND A
		 (MAP (FUNCTION (LAMBDA (ANSNODE) (SMIT2 ANSNODE 0.)))
								       ;REFERENT MAP DOWN THE ANSREF
		      ANSNAME))
								       ;(NG'S IN LAST ANSWER)
	     (OR SM  ; IF WE HAVEN'T YET FOUND A
		 (MAP
		  (FUNCTION (LAMBDA (BACKNODE) (SMIT2 BACKNODE 0.)))
								       ;REFERENT MAP DOWN THE
		  BACKREF2))
								       ;BACKREF2 (NG'S IN LAST
	DONE (PUTPROP PRONOUN CANDIDATES 'BIND)
								       ;SENTENCE) LIST
	     (OR (CDR SM) (REMPROP (CAR SM) 'AMBIGUITIES=))
	     (RETURN SM)))

(DEFUN SMIT2 (NODE PLAUSIBILITY)
       (AND
	NODE	       ; MAKE SURE NODE IS REALLY
	(GETR 'HEAD NODE)
								       ;THERE  QUEST NODES (SUCH AS
	(NOT (MEMQ (CAR NODE) CANDIDATES))
								       ;/"WHAT/") OR OTHER NODES WITHOUT HEAD NOUNS ARE
	(COND ((EQ PRONOUN 'IT)
								       ;NOT SUITABLE FOR REFERENTS  MAKE SURE THAT NODE
	       (AND (ISQ NODE NS) (NOT (ISQ NODE PRONG))))
								       ;HASN'T ALREADY BEEN USED AS
	      (ELSE (ISQ NODE NPL)))
								       ;REFERENT  MAKE SURE NODE AND
	(SETQ CANDIDATES (CONS (CAR NODE) CANDIDATES))
								       ;PRONOUN AGREE IN NUMBER
	(SMSET
	 (NCONC
	  (MAPCAR
	   (FUNCTION
	    (LAMBDA (REFERENT-OSS)
		    (BUILD OSSNODE=
			   (MAKESYM 'OSS)
			   MARKERS=
			   (MARKERS? REFERENT-OSS)
			   SYSTEMS=
			   (SYSTEMS? REFERENT-OSS)
			   PLAUSIBILITY=
			   PLAUSIBILITY
			   AMBIGUITIES=
			   (LIST (LIST OSSNODE=
				       (FROM (NB NODE) (N NODE))
				       C))
			   REFER=
			   (REFER? REFERENT-OSS)
			   VARIABLE=
			   (VARIABLE? REFERENT-OSS)
								       ; INPUT PARAMETER
			   PARSENODE=
			   C
								       ; USE THE REFERENT'S REFERENT
			   DETERMINER=
								       ;IF IT HAS ONE
			   (LIST (COND ((ISQ C NPL) 'NPL)
				       ('NS))
				 'INDEF
				 NIL)
			   RELATIONS=
			   (LIST (LIST '/#REFERS
								       ; DONE SO THAT IF VARIBLE IS BOUND, PLANNER
				       (VARIABLE? REFERENT-OSS))))))
								       ;GENERATOR WILL USE IT  RELATION SAYS
	   (SM NODE));THAT THIS OSS /"REFERS/" TO
	  SM))))     ;THE OSS WHOSE VARIABLE NAME IS GIVEN END OF
								       ;BUILD

(DEFUN SMNGOF NIL
       ;; USED TO PROCESS NOUN GROUPS LIKE= /"THREE OF THE BLOCKS/"
       ;;/"BOTH OF THEM/"
       ;;;
       ;; SINCE THE OBJECT OF THE /"OF/" MUST BE
       ;;DEFINITE(SYNTACTICALLY) AND HAS ALREADY BEEN PROCESSED, THE
       ;;PLANNER CODE BUILT IS JUST A THAMONG EXPRESSION OF THE LIST
       ;;OF POSSIBLE REFERENTS OF THE /"OF/" OBJECT
       ;;;
       (SMSET
	(MAPBLAND
	 (FUNCTION
	  (LAMBDA (OFOSS)
		  (BUILD OSSNODE=
			 (MAKESYM 'OSS)
			 VARIABLE=
			 (VARIABLE? OFOSS)
			 SYSTEMS=
			 (SYSTEMS? OFOSS)
			 MARKERS=
			 (MARKERS? OFOSS)
			 PARSENODE=
			 C
			 DETERMINER=
			 (LIST (COND ((CQ NUM)
				      (SM (MOVE-PT H PV (NUM))))
				     ((ISQ NB BOTH) 2.)
				     ('NPL))
			       (COND ((MOVE-PT H PV (QNTFR))
				      (EVAL (SM PT)))
				     ('INDEF))
			       (COND ((CQ HOWMANY) 'HOWMANY)
				     ((CQ QDET) 'WHICH)))
			 RELATIONS=
			 (LIST (LIST 'THAMONG
				     (LIST 'THV
					   (VARIABLE? OFOSS))
				     (LIST 'QUOTE
					   (REFER? OFOSS)))))))
	 (SM (MOVE-PT H DLC)))))
								       ;MAP DOWN THE LIST OF /"OF/" OBJECT
								       ;INTERPRETATIONS

;;;=============================================================


--cont--