################################################ # # Grammar for detection of WH-questions # ################################################ ########## DELIMITERS ########################## DELIMITERS = ""; # sentence window ########## SETS ################################ # all wh-words LIST WH_WORDS = WDT WP WP$ WRB; LIST WH_WORDS_C = "" "" "" "" "" "" "" "" ""; LIST WH_WORDS_S = "" "" "" "" "" "" "" "" ""; # wh-words that take an adv or adj complement LIST WH_ADV_ADJ = "<(H|h)ow>"r; # wh-words that take an np complement LIST WH_NP = "<(W|w)hat>"r "<(W|w)hich>"r "<(W|w)hose>"r; # wh-words that take no extensions on the right LIST WH_NONE = "<(W|w)ho>"r "<(W|w)hom>"r "<(W|w)here>"r "<(W|w)hen>"r "<(W|w)hy>"r; LIST WH_PREP = IN TO; # some prep. which can appear before a wh-phrase and are part of it ('to what extent', 'in which ways') LIST NOUN = NNS NN NPS CD PP NPhr NP; # nouns LIST ADV = RB RBR RBS; # adverbs LIST ADJ = JJ JJR JJS POS; # adjectves SET ADV_ADJ = ADV OR ADJ; # adv and adj LIST AUX_VERB = VBD VBP VBZ VHD VHP VHZ MD VH "" "" ""; # auxiliary verbs LIST VERB = VVD VVN VVP VVG VV VVZ VHD VDD VBD VHN VDN VBN VHP VDP VBP VHG VDG VBG VH VHZ VDZ VBZ VD VB MD; # all verbs LIST GER_OR_PP = VVN VVG VHN VHG VDN VDG VBN VBG; # gerunds and past participles LIST PUNCT = , : CC; # some punctuation tags (important for detecting a wh phrase) LIST IS_UPPER = "<[A-Z].*>"r; # matches words that start with an uppercase SET MOD = ADV_ADJ OR (CC) OR NOUN; # everything which can appear before a noun in an NP SET NP_SOME = ADV_ADJ OR (PP$) OR (DT) OR (ADJ_CONJ) OR (""); # some things which can appear in an NP LIST NONF_V = VB VVG VVN VBG VBN VHG VV VHN VH VVD VHP VVP VHD; # non-finite verbs LIST FNV_BE = VVG VBG VHG VVN; # possible 'first_nonfin_verb_tags' for the auxiliary 'be' LIST FNV_DO = VV VH VB VHP VVP; # possible 'first_nonfin_verb_tags' for the auxiliary 'do' LIST FNV_HAVE = VVN VHD VHN VBN VVD; # possible 'first_nonfin_verb_tags' for the auxiliary 'have' LIST WH = WH-I WH-B; ########## CORRECTIONS ######################### BEFORE-SECTIONS SUBSTITUTE (PP) (CD) TARGET ("") IF (-1 ("")); # 'one' is assigned 'PP' instead of 'CD' (eg.'Which one is the student?') SUBSTITUTE (IN) (VVP) TARGET (""); # 'like' is assigned 'IN' instead of 'VB' (eg.'Do you like apples') SUBSTITUTE (RB) (NEG) TARGET (""); # need another tag for this negation SUBSTITUTE (POS) (VBZ) TARGET ("<'s>") IF (-1 ("")); # "What's" is tagged WP POS instead of WP VBZ ########## MAPPINGS ############################ SECTION ### recognize a wh-question ### ADD (Q) TARGET WH_WORDS_C IF (*1 ("")); ADD (Q) TARGET WH_WORDS_S IF (-1 PUNCT) (*1 ("")); ADD (Q) TARGET WH_WORDS_S IF (-1 WH_PREP) ((-2 PUNCT) OR (-1 IS_UPPER)) (*1 ("")); ADD (Q) TARGET WH_WORDS_S IF (-1 ("")) (*1 ("")); ### recognize a noun phrase ### ADD (HEAD) TARGET NOUN IF (0* (Q)); #for counting nps SUBSTITUTE (HEAD) (NPhr) TARGET (HEAD) IF (NOT0 (PP)) (NOT1 (PP)) (1 (HEAD)); ADD (NPhr) TARGET NOUN IF (0* (Q)); # all nouns ADD (NPhr) TARGET ADV_ADJ IF (0* (Q)) (*1 NOUN BARRIER (*) - MOD); # including modified nouns 'much more expensive book' ADD (ADJ_CONJ) TARGET (CC) IF (-1 ADV_ADJ) (1 ADV_ADJ); # 'shiny and fast' ADD (NPhr) TARGET (PP$) IF (1 (NPhr)); # 'my cat' ADD (NPhr) TARGET (CC) IF (-1 (NPhr)) (1 (NPhr)); # 'girls and boys' SUBSTITUTE (HEAD) (NPhr) TARGET (HEAD) IF (1 (CC)) (1 (NPhr)); ADD (NPhr) TARGET ("") IF ((-1 ("")) OR (-1 (""))); # 'some of the ..' ADD (NPhr) TARGET (DT) IF (1 (NPhr)); # 'the cat' ADD (NPhr) TARGET ("") IF (-1 (NPhr)); # 'the cat of..' SUBSTITUTE (HEAD) (NPhr) TARGET (HEAD) IF (1 ("")); ADD (NPhr) TARGET ("") IF (-1 (HEAD)) (1 (HEAD)); # What is the unit's target/mission? SUBSTITUTE (HEAD) (NPhr) TARGET (HEAD) IF (1 ("")) (1 (NPhr)); # detect prep. phrases which are NP adjuncts ADD (NPadj) TARGET (IN) IF (-1 (NPhr)) (1 (NPhr)); ADD (NPadj) TARGET (NPhr) IF (-1 (NPadj)); ### some corrections: ### SUBSTITUTE (Q) (IGNORE) TARGET WH_NONE IF (1 (NPhr)); # if the subj comes directly after a wh-word that takes no comp., this is not a wh-question SUBSTITUTE (Q) (IGNORE) TARGET WH_NP IF ((1 (DT)) OR (1 (PP))); # if an np with a det. or PP comes after the wh-word that takes no such comp., this is not a wh-q SUBSTITUTE (Q) (IGNORE) TARGET WH_WORDS IF (1* (HEAD) BARRIER (*) - MOD LINK 1* (HEAD) BARRIER (*) - MOD); # a wh-p. cannot be followed by more than one subjects SUBSTITUTE (Q) (IGNORE) TARGET WH_WORDS IF (1 GER_OR_PP); # a wh-p. cannot be followed by any gerunds or PP verbs ### recognize a wh-phrase ### # find the beginning of the wh-phrase ADD (WH-B) TARGET WH_WORDS_C IF (0 (Q)); # a wh-word, if it is located in the beginning of the sentence ADD (WH-B) TARGET WH_WORDS_S IF (0 (Q)) (NOT-1 WH_PREP); # a wh-word, if the prev. word is not a prep. ADD (WH-B) TARGET WH_PREP IF (1 WH_WORDS) (1 (Q)); # FOR how long..? ADD (WH-I) TARGET WH_WORDS IF (-1 WH_PREP) (-1 (WH-B)); # for HOW long..? ADD (WH-I) TARGET (CC) IF (-1 WH_WORDS) (1 WH_WORDS) (-1 (Q)); # could be followed by CC: When AND where are we going? SUBSTITUTE (WH-B) (WH-I) TARGET (WH-B) IF (-1 (WH-I)); ADD (Q) TARGET (WH-B); # for easier determination of the elements of the wh-question # add Q to all words in a wh-question: ## ! ## Adding Q to every word in the sentence causes problems with some headlines, e.g.: "Questions
What is your name?", ## where 'Questions' is a headline, gets treated as one sentence; solution: ADD (Q) TARGET (*) IF (-1 (Q)) (NOT-1 ("")); # add Q to all words in a wh-question (from WH-B to '?') # recognize a HOW-question # according to the code: #ADD (WH-I) TARGET (RB) IF (-1 WH_ADV_ADJ) (-1 (WH-B)); # may be followed by an adv ("How much..") #ADD (WH-I) TARGET (JJ) IF (-1 WH_ADV_ADJ) (-1 (WH-B)); # may be followed by an adj ("How nice..") #ADD (WH-I) TARGET (NN) IF (-2 WH_ADV_ADJ) (-2 (WH-B)) (-1 (JJ)); # may be followed by a modified noun #ADD (WH-I) TARGET (NNS) IF (-2 WH_ADV_ADJ) (-2 (WH-B)) (-1 (JJ)); # may be followed by a modified noun #ADD (WH-I) TARGET (JJR) IF (-1 WH_ADV_ADJ) (-1 (WH-B)) (1 (JJ)); # How MORE beautiful.. #ADD (WH-I) TARGET (JJ) IF (-2 WH_ADV_ADJ) (-2 (WH-B)) (-1 (JJR)); # How more BEAUTIFUL.. # # problems are sentences like: # # How many old books? # How much more old and dusty books do you have? # # solution: ADD (WH-I) TARGET ADV_ADJ IF (-1 WH_ADV_ADJ) (-1 (WH-B)); # may be followed by an adv or adj ("How nice..") ADD (WH-I) TARGET ADV_ADJ IF (-1 ADV_ADJ) (-1 (WH-I)); # may be followed by more advs or adjs ("How more beautiful..") ADD (WH-I) TARGET (NPhr) IF (*-1 (WH-B) BARRIER (*) - MOD) (-1 (WH-I)); # or by a modified noun without a det ("How many books..") # A special case of 'how'-questions, where the word order is SVO; since the grammar has a special flow of analyzis # (find WH-phrase, AUX verb [if any], SUBJ [if any], NONFIN-verb [if any], main verb [if any]) a small trick is # needed to analyze this type of questions where the word order is WH-phrase, SUBJ, AUX, NONFIN-verb; # We let the grammar accept the SUBJ as a part of the WH-phrase so that the rest of the sentence is analyzed correctly, # and then correct the mistake at the end. ADD (WH-I) TARGET ("") IF (-1 WH_ADV_ADJ) (-1 (WH-B)); # 'How come' questions # recognize an NP-question ("what", "which", "whose") ADD (WH-I) TARGET (NPhr) IF (-1 WH_NP) (-1 (WH-B)); # may be followed by an np: Which girl.. ADD (WH-I) TARGET (NPhr) IF (*-1 (WH-I) BARRIER (*) - (WH-I)); # may be followed by an np ADD (WH-I) TARGET (NPhr) IF (-1 WH_NP) (-1 (WH-I)) (-2 WH_PREP); # In what ways is... ADD (WH-I) TARGET ("") IF (-2 WH_NP) (-1 (WH-I)); # Which one OF you.. ADD (WH-I) TARGET ("") IF (-1 WH_NP) (-1 (WH-B)); # Which OF you.. ADD (WH-I) TARGET (NPhr) IF (-1 (WH-I)) (-1* ("") BARRIER (*) - (WH-I)); # Which (one) of YOU../of THE FAST CARS.. # if there is a comma/bracket after the wh-phrase, the part after or surrounded by # the comma(s)/brackets has to be ignored, as in: 'What car[, if I may ask you]?' 'Who[, if anyone,] did you invite?' LIST IGNORE_EL = "" "" VVG; ADD (IGNORE-C) TARGET ("<,>") IF (-1 WH) (1 IGNORE_EL); ADD (IGNORE-C) TARGET ("<,>") IF (-1 WH) (1 ("")) (2 (PP$)) (3 ("")); ADD (IGNORE-B) TARGET ("<(>") IF (-1 WH); ADD (IGNORE-C) TARGET (*) IF (-1 (IGNORE-C)) (NOT0 ("<,>")); ADD (IGNORE-B) TARGET (*) IF (-1 (IGNORE-B)) (NOT0 ("<)>")); ADD (IGNORE-C) TARGET ("<,>") IF (-1 (IGNORE-C)); ADD (IGNORE-B) TARGET ("<)>") IF (-1 (IGNORE-B)); REPLACE (IGNORE) (IGNORE-C); REPLACE (IGNORE) (IGNORE-B); # in case we have a sequence of verbs, combined with a CC or '/' (see below) ADD (VCC) TARGET (CC) IF (0 (Q)) (-1 VERB) (1 VERB); ADD (VCC) TARGET ("") IF (0 (Q)) (-1 VERB) (1 VERB); ADD (VCC) TARGET VERB IF (-1 (VCC)); ### find the auxiliary verb (if any) ### ADD (AUX) TARGET AUX_VERB IF (-1* WH BARRIER (*) - (IGNORE)) # accounts for cases such as 'Which car, if any, do you like?' as well ADD (AUX) TARGET ("") IF (-1 (AUX)); ### find the subject ### LIST PSUBJ = NPhr ""; # including 'that' since it could be a subj. as in "What would that be?" ADD (SUBJ) TARGET PSUBJ IF (-1 (AUX)); ADD (SUBJ) TARGET PSUBJ IF (-1* (AUX) BARRIER (*) - (IGNORE)); ADD (SUBJ) TARGET (NPhr) IF (-1 (NPhr)) (-1 (SUBJ)); ### embedded clause ### # check if there is a subject directly after the other subject # in case there is a comma following: ADD (EC-SUBJ) TARGET (NPhr) IF (-1 ("<,>")) (-2 (SUBJ)); ADD (EC-SUBJ) TARGET (NPhr) IF (-1 (EC-SUBJ)); # in case there is no comma SUBSTITUTE (SUBJ) (EC-SUBJ) TARGET (HEAD) IF (*-1 (HEAD) BARRIER (*) - NP_SOME); SUBSTITUTE (SUBJ) (EC-SUBJ) TARGET NP_SOME IF (*1 (EC-SUBJ) BARRIER (*) - NP_SOME); # find the finite verb of the embedded clause LIST FIN_VERBS = VVZ VVD VVP; # some finite verbs ADD (FV_EC) TARGET FIN_VERBS IF (-1 (EC-SUBJ)); # a fin. verb LIST BE_SOME = VBZ VBP VBD; # some of the forms of 'be' ADD (FV_EC_BE) TARGET BE_SOME IF (-1 (EC-SUBJ)); # fin verb is a form of 'be' LIST HAVE_SOME = VHZ VHP VHD VH; # some of the forms of 'have' ADD (FV_EC_HAVE) TARGET HAVE_SOME IF (-1 (EC-SUBJ)); # fin verb is a form of 'have' LIST DO_OR_MODAL = MD "" "" ""; # some of the forms of 'do' or a MD ADD (EC_FV_MD_DO) TARGET DO_OR_MODAL IF (-1 (EC-SUBJ)); # fin verb is a form of 'do' or a modal # possible nonfin verbs for every fin verb (possibly preceded by an adverb) ADD (EC_NFV) TARGET FNV_DO IF (-1 (EC_FV_MD_DO)); ADD (EC_NFV) TARGET FNV_DO IF (-1 (RB)) (-2 (EC_FV_MD_DO)); ADD (EC_NFV) TARGET FNV_HAVE IF (-1 (FV_EC_HAVE)); ADD (EC_NFV) TARGET FNV_HAVE IF (-1 (RB)) (-2 (FV_EC_HAVE)); ADD (EC_NFV) TARGET FNV_BE IF (-1 (FV_EC_BE)); ADD (EC_NFV) TARGET FNV_BE IF (-1 (RB)) (-2 (FV_EC_BE)); # there can only be one or two finite verbs following, as in: # 'the car/s that is/are/was/were being stolen' # 'the car/s that has/have/had been stolen' # 'the car that you have/had been stealing' # 'the car that MODAL be stolen' # 'the car you MODAL have stolen' # 'the car that MODAL have been stolen' LIST BEING_BE = "" ""; LIST FOLLOW_1 = VVN VVD; # verbs that may follow 'being' and 'be' ADD (EC_NFV) TARGET FOLLOW_1 IF (-1 BEING_BE) ((-2 (FV_EC_BE)) OR (-2 (MD))); LIST FOLLOW_2 = VVN VVD VVG; # verbs that may follow 'been' ADD (EC_NFV) TARGET FOLLOW_2 IF (-1 ("")) (-2 (FV_EC_HAVE)); LIST FOLLOW_3 = VVN VVD VBN; # verbs that may follow 'have' ADD (EC_NFV) TARGET FOLLOW_3 IF (-1 ("")) (-2 (MD)); LIST FOLLOW_4 = VVN VVD; # verbs that may follow 'have been' ADD (EC_NFV) TARGET FOLLOW_4 IF (-1 ("")) (-2 ("")); # after recognizing all the components of the embedded clause # it could be IGNOREd for easier processing REPLACE (IGNORE) (EC-SUBJ); REPLACE (IGNORE) (FV_EC); REPLACE (IGNORE) (FV_EC_HAVE); REPLACE (IGNORE) (EC_FV_MD_DO); REPLACE (IGNORE) (FV_EC_BE); REPLACE (IGNORE) (EC_NFV); ### find the first non-finite verb ### SET BARR = (IGNORE) OR ("<,>") OR (NPadj); ADD (NFIN-B) TARGET NONF_V IF (-1* (SUBJ) BARRIER (*) - BARR); # either after the subject ADD (NFIN-B) TARGET NONF_V IF (-1* (AUX) BARRIER (*) - BARR); # or after the auxiliary (if any) # to avoid markikg gerund as a part of the predicate like in 'What were your reasons FOR SELECTING your college?' LIST PREP_OR_POSS = IN PP$ ; REMOVE (NFIN-B) IF (0 (VVG)) (-1 PREP_OR_POSS); # find the other verbs that may follow the finite one LIST NV_HAVE = VVN VVD VBN VHD VHN; # possible nonfin tags following nonf. 'have', eg. 'have used' LIST NV_BEEN = VVG VVN VVD VHG VBN VBG; # possible nonfin tags following nonf. 'been', eg. 'been used' LIST NV_BE = VVG VVN VVD VHG VBN VV VVP VBG; # possible nonfin tags following nonf. 'be', eg. 'be used' ADD (NFIN-I) TARGET NV_HAVE IF (-1 (NFIN-B)) (-1 ("")); # What could he have done? ADD (NFIN-I) TARGET NV_BEEN IF (-1 (NFIN-B)) (-1 ("")); # How could he be doing this? ADD (NFIN-I) TARGET NV_BE IF (-1 (NFIN-B)) (-1 ("")); # Why has he been doing this? ADD (NFIN-I) TARGET NV_BEEN IF (-1 (NFIN-I)) (-1 ("")); LIST FOLLOW_5 = VVN VVD; # verbs that may follow 'being' ADD (NFIN-I) TARGET FOLLOW_5 IF (-1 (NFIN-I)) (-1 ("")); # in case we have more than one verbs, combined with a CC ADD (NFIN-I) TARGET (VCC) IF (-1 (NFIN-B)); ADD (NFIN-I) TARGET (VCC) IF (-1 (NFIN-I)); # to account for questions with a perfect form of 'to be' as in # What has/had been your most important accomplishment?, where # 'your most important accomplishment' is considered the subject # of the wh-question: ADD (SUBJ) TARGET (NPhr) IF (-1 (NFIN-B)) (-1 ("")); ADD (SUBJ) TARGET (NPhr) IF (-1 (NFIN-I)) (-1 ("")) (-2 (NFIN-B)) (-2 ("")); ADD (SUBJ) TARGET (NPhr) IF (NOT0 (EC-SUBJ)) (-1 (SUBJ)); ### if we haven't found a non-finite verb ### # if we haven't found a non-finite verb and the auxiliary was # a form of 'have' or 'do' then it is not an auxiliary, but the # main verb and the wh-phrase is the subject LIST MAIN_VERB_1 = VHD VDD VHP VDP VHZ VDZ VBD VBZ VBP MD; SUBSTITUTE (AUX) (MVERB) TARGET MAIN_VERB_1 IF (NOT1* (NFIN-B)); # remove subject after main verb (which appears when main verb is aux-like) SUBSTITUTE (SUBJ) (OBJ) TARGET (SUBJ) IF (-1* (MVERB) BARRIER WH); ### if we haven't found an auxiliary so far, look for the main verb LIST WH_SOME = "<(W|w)ho>"r "<(W|w)hat>"r "<(W|w)hich>"r "<(W|w)hose>"r; #some of the wh-questions LIST MAIN_VERB_2 = VVD VVZ VVP; # but not VVN!!! ADD (MVERB) TARGET MAIN_VERB_2 IF ((-1* WH_SOME) OR (-1* ("") LINK -1 WH_ADV_ADJ)) (NOT0 (AUX)) (0 (Q)) (NOT-1* (MVERB) BARRIER (WH-B)) (NOT1* (MVERB) BARRIER (WH-B)) (NOT-1* (AUX) BARRIER (WH-B)) (NOT1* (AUX) BARRIER (WH-B)) (-1* (WH-B)); # incl. 'How come' questions # more than one main verbs: ADD (MVERB) TARGET (VCC) IF (-1 (MVERB)); ### mark the wh-phrases in subject position LIST BAR = WH-I WH-B IGNORE MVERB RB; SUBSTITUTE (WH-B) (WHS-B) TARGET WH_SOME IF (1* (MVERB) BARRIER (*) - BAR); SUBSTITUTE (WH-B) (WHS-B) TARGET WH_PREP IF (1 WH_SOME) (2* (MVERB) BARRIER (*) - BAR); SUBSTITUTE (WH-B) (WHS-B) TARGET WH_SOME IF (1* (AUX) LINK 1 (NFIN-B)); SUBSTITUTE (WH-B) (WHS-B) TARGET WH_PREP IF (1 WH_SOME) (2* (AUX) BARRIER (*) - BAR LINK 1 (NFIN-B)); SUBSTITUTE (WH-I) (WHS-I) TARGET (WH-I) IF ((-1 (WHS-B)) OR (-1 (WHS-I))); AFTER-SECTIONS ### some final corrections ### # To fix the problem with elliptical questions like 'Why dignify such slap with a response?' or # 'Who to ask for such a favor?', which have the pattern [WH-PHRASE][VV] or [WH-PHRASE][TO][VV] # AAB: ellipsis is somehow interfering with conjunctions: # Which tools and techniques would you use? #SUBSTITUTE (Q WH-B WH-I) (ELLIP) TARGET WH IF (0 WH) ((1* (VV) BARRIER (*) - (IGNORE)) OR (1* (TO) LINK 1 (VV) BARRIER (*) - (IGNORE))) (NOT0* (SUBJ)) (NOT0* (WHS-B)); #SUBSTITUTE (Q) (ELLIP) TARGET (*) IF (0* (ELLIP)); # Subject REPLACE (IGNORE) ("") IF (0 (NPhr)); # 'How come' questions SUBSTITUTE (WH-I) (SUBJ) TARGET (NPhr) IF (-1 ("")) (-2 WH_ADV_ADJ); SUBSTITUTE (WH-I) (SUBJ) TARGET (NPhr) IF (-1* ("") LINK -1 WH_ADV_ADJ BARRIER (*) - (SUBJ)); SUBSTITUTE (SUBJ) (SUBJ-I) TARGET (SUBJ); SUBSTITUTE (SUBJ-I) (SUBJ-B) TARGET (SUBJ-I) IF (NOT-1 (SUBJ-I)) (NOT-1 (SUBJ-B)); SUBSTITUTE (OBJ) (OBJ-I) TARGET (OBJ); SUBSTITUTE (OBJ-I) (OBJ-B) TARGET (OBJ-I) IF (NOT-1 (OBJ-I)) (NOT-1 (OBJ-B)); # Type of Wh-question (Subject-verb inversion vs. standard English subject-verb-object word order) SUBSTITUTE (IGNORE) (Q) TARGET (IGNORE) IF (0* (Q)); ADD (SVI-I) TARGET (AUX) IF (NOT1 (AUX)) (NOT1 (NFIN-B)) (1* (NFIN-B)); ADD (SVO-I) TARGET WH_SOME IF (0 (WHS-B)) (NOT1* (SVI-I)) ((NOT0* (NFIN-B)) OR (1* (AUX) LINK 1 (NFIN-B))); ADD (SVO-I) TARGET WH_ADV_ADJ IF (1 ("")) (NOT1* (SVI-I)); # 'How come' questions ADD (SVO-I) TARGET (*) IF (0 (Q))(0* (SVO-I)); ADD (SVI-I) TARGET (*) IF (0 (Q))(NOT-1* (SVO-I)) (NOT1* (SVO-I)); SUBSTITUTE (SVO-I) (SVO-B) TARGET (SVO-I) IF (NOT-1 (SVO-I)) (NOT-1 (SVO-B)); SUBSTITUTE (SVI-I) (SVI-B) TARGET (SVI-I) IF (NOT-1 (SVI-I)) (NOT-1 (SVI-B)); # Verbs of the main predicate # Auxiliary verbs SUBSTITUTE (AUX) (AUX-B) TARGET (AUX); SUBSTITUTE (AUX-B) (AUX-I) TARGET (AUX-B) IF (-1 (AUX-B)); # Main verbs SUBSTITUTE (MVERB) (MVERB-B) TARGET (MVERB); SUBSTITUTE (MVERB-B) (MVERB-I) TARGET (MVERB-B) IF (-1 (MVERB-B)); # The equivalent of the -RELEVANT- span: SUBSTITUTE (Q) (Q-I) TARGET (Q); SUBSTITUTE (Q-I) (Q-B) TARGET (Q-I) IF (NOT-1 (Q-I)) (NOT-1 (Q-B));