File Information

File: 05-lr/acl_arc_1_sum/cleansed_text/xml_by_section/metho/90/c90-2060_metho.xml

Size: 25,194 bytes

Last Modified: 2025-10-06 14:12:24

<?xml version="1.0" standalone="yes"?>
<Paper uid="C90-2060">
  <Title>HOW TO INVERT A NATURAL LANGUAGE PARSER INTO AN EFFICIENT GENERATOR: AN ALGORITHM FOR LOGIC GRAMMARS</Title>
  <Section position="4" start_page="0" end_page="0" type="metho">
    <SectionTitle>
1N AND OUT ARGUMENTS
</SectionTitle>
    <Paragraph position="0"> Arguments in a PROLOG literal can be marked as either &amp;quot;in&amp;quot; or &amp;quot;out&amp;quot; depending on whether they are bound at the time the literal is submitted for execulion or after the computation is completed. For exmnple, in tovo ( \[to, eat, fish\], T4, \[np, \[n, john\] \] , P3) the first and the third arguments are &amp;quot;in&amp;quot;, while the Barring the presence of non-reversible operators.</Paragraph>
    <Paragraph position="1"> remaining two are &amp;quot;out&amp;quot;. When tovo is used for genu eration, i.e., tOvo (TI, T4, Pl, \[eat, \[np, \[n, john\] \] , \[np, \[n, fish\] \] \] ) then the last argument is &amp;quot;in&amp;quot;, while the first and the third are &amp;quot;out&amp;quot;; T4 is neither &amp;quot;in&amp;quot; nor &amp;quot;out&amp;quot;. The infixmation about &amp;quot;in&amp;quot; and &amp;quot;out&amp;quot; status of arguments is important in determining the &amp;quot;direx'tion&amp;quot; in which predicates containing them ca~ be run 2. As a further example consider the literal stibject (AI, A2, WHQ, h~JM, P) where A1 and A2 arc input and output strings of words, WttQ indicates whether the subject phrase is a part of a clause within a wh-question, ~ is the number of the subject phrase, and P is the final translation. During parsing, the &amp;quot;in&amp;quot; arguments are: A1 and WgQ, the &amp;quot;out&amp;quot; arguments are A2, ~ and P; during generation, the &amp;quot;in&amp;quot; arguments are p and WrlQ, the &amp;quot;out&amp;quot; arguments are A1 a~d NUN. In generating, A2 is neither &amp;quot;in&amp;quot; nor &amp;quot;out&amp;quot;. 'lqms, upon reversing the diroction of computation, ar~ &amp;quot;out&amp;quot; argument does not automatically become an '%&amp;quot; argument, nor does an &amp;quot;in&amp;quot; argument automatically become an &amp;quot;out&amp;quot; argument. Below is a method for computing &amp;quot;in&amp;quot; and &amp;quot;out&amp;quot; status of arguments in any given literal in a PROLOG program, as required by the inversion procedure. This algorithm is already general enough to handle any PRO-LO(~ program.</Paragraph>
    <Paragraph position="2"> An argument X of literal pred( * *. X * *. ) on the rhs of a clause is &amp;quot;in&amp;quot; if  (A) it is a constant; or (B) it is a function and all its arguments are &amp;quot;in&amp;quot;; or (C) it is &amp;quot;in&amp;quot; or immediately &amp;quot;out&amp;quot; in some previous literal predo on the rhs of the same clause, i.e., l (Y) :-- pred o (X, Y),pred (X); or (D) it is &amp;quot;out&amp;quot; in an rhs literal predo delayed until after some predicate pred~ such that predo precedes 2 For more discussion on directed predicates in PROLOO see Shoham and McDermott (1984), and Debray (1989).</Paragraph>
    <Paragraph position="4"> predl, and predt precedes pred on the rhs; 3 or (E) it is &amp;quot;in&amp;quot; in the head literal L on lhs of the same clause.</Paragraph>
    <Paragraph position="5"> An argument X is &amp;quot;in&amp;quot; in the head literal L = pred (&amp;quot; * X... ) of a clause if (A), or (B), or (F) L is the top-level literal and X is &amp;quot;in&amp;quot; in it (known a priori); or (G) X occurs more than once in L and at least one of these occurrences is &amp;quot;in&amp;quot;; or (H) for every literal L 1 : pred (. * * Y. *. ) unifiable with L on the rhs of any clause with the head predicate predl different than pred, and such that Y unifies with X, Y is &amp;quot;in&amp;quot; in L 1.</Paragraph>
    <Paragraph position="6"> We distinguish two categories of &amp;quot;out&amp;quot; arguments in literals appearing on the right-hand side of a clause: immediate and delayed. An argument X occurring in literal pred(... X... ) is immediately &amp;quot;out&amp;quot; if it is fully bound 4 immediately after pred(...X...) is executed. An argument X in pred ( * * * X * * * ) is &amp;quot;out&amp;quot; delayed until after predo, if it is fully bound only after predo, following pred on rhs, is executed. For example, consider the following fragment:</Paragraph>
    <Paragraph position="8"> If VN is immediately &amp;quot;out&amp;quot; in v, then SN in agree is &amp;quot;out&amp;quot; delayed until after v. For arguments with their &amp;quot;out&amp;quot; status delayed until after predo, the &amp;quot;out&amp;quot; status is assigned only after predo is executed.</Paragraph>
    <Paragraph position="9"> An argument X of literal pred (.. * X * * * ) on the rhs of a clause is immediately &amp;quot;out&amp;quot; if (A) it is &amp;quot;in&amp;quot; inpred(...X ... ); or (B) it is a functional expression and all its arguments are either &amp;quot;in&amp;quot; or immediately &amp;quot;out&amp;quot;; or (C) tbr every clause with the head literal pred( . . . Y ...) unifiable with pred( . . . X * ..) and such that Y unifies with X, Y is either &amp;quot;in&amp;quot;, &amp;quot;out&amp;quot; or &amp;quot;unknwn&amp;quot;, and Y is marked &amp;quot;in&amp;quot; or &amp;quot;out&amp;quot; in at least one case.</Paragraph>
    <Paragraph position="10"> An argument X of literal pred( * * * X * *. ) on the rhs of a clause is &amp;quot;out&amp;quot; delayed until after predo(&amp;quot; * * Y&amp;quot; &amp;quot;&amp;quot; ) following pred if (D) Y is immediately &amp;quot;out&amp;quot; in predo and X=f (Y); or (E) X is a functional expression and all of its arguments are either &amp;quot;in&amp;quot; or immediately &amp;quot;out&amp;quot; or &amp;quot;out&amp;quot; delayed until after predo; or 3 The precedence is with respect to the order of evaluation, which in PROLO6 is left-to-right.</Paragraph>
    <Paragraph position="11"> &amp;quot; An argument is considered fully bound if it is a constant or it is bound by a constant; an argument is partially bound if it is, or is bound by, a te.n in which at least one variable is unbound.</Paragraph>
    <Paragraph position="12"> (F) there is a predicate predl('&amp;quot;X&amp;quot;'Z''&amp;quot;) preceding predo on the rhs, where Z* is a subset of arguments ofpredl such that every argument in Z* is &amp;quot;out&amp;quot; delayed until after predo and whenever Z* is &amp;quot;in&amp;quot; then X is immediately &amp;quot;out&amp;quot; in pred,. An argument X of literal pred (. * * X * * * ) on the lhs of a clause is &amp;quot;out&amp;quot; if (G) it is &amp;quot;in&amp;quot; inpred(... X. * * ); or (H) it is &amp;quot;out&amp;quot; (immediately or delayed) in literal pred i ( &amp;quot; &amp;quot;&amp;quot; X * * * ) on the rhs of this clause, providing that predl ~pred (again, we must take provisions to avoid infinite descend, cf. (H) in &amp;quot;in&amp;quot; algorithm); if predl =pred then X is marked &amp;quot;unknwn&amp;quot;.</Paragraph>
  </Section>
  <Section position="5" start_page="0" end_page="0" type="metho">
    <SectionTitle>
ESSENTIAL ARGUMENTS
</SectionTitle>
    <Paragraph position="0"> Some arguments of every literal are essential in the sense that the literal cannot be executed successfully unless all of them are bound, at least partially, at the time of execution. A literal may have several alternative, possibly overlapping, sets of essential arguments. If all arguments in any one of such sets of essential arguments are bound, then the literal can be executed. Any set of essential arguments which have tile above property is called essential. We shall call the set MSEA of essential arguments a minimal set of essential arguments if it is essential, and no proper subset of MSEA is essential. If we alter the ordering of the rhs literals in the definition of a predicate, we may also change its set of MSEA's. We call the set of MSEA's existing for a current definition of a predicate the set of active MSEA's for this predicate. To run a predicate in a certain direction requires that a specific MSEA is among the currently active MSEA's for this predicate, and if this is not already the case, then we have to alter the definition of this predicate so as to make this MSEA become active. As an example consider the following clause from our PROLOG parser: objectbe (01,02, PI, P2, PSA, P) --</Paragraph>
    <Paragraph position="2"> Assuming that {O1} and {P3} are MSEA's of venpass and that P3 is &amp;quot;out&amp;quot; in venpass whenever el is &amp;quot;in&amp;quot;, we obtain that {O1} is the only candidate for an active MSEA in objectbe. This is because P3 is not present on the argument list of objectbe, and thus cannot receive a binding before the execution of venpass commences. Moving to the coneat literal, we note that its first argument is partially bound since P3 is &amp;quot;out&amp;quot; in venpass. This is enough for eoneat to execute, and we conclude that O1 is in fact the only essential argument in objeetbe. If we reverse the order of venpass and concat, then {p} becomes the new active MSEA for objectbe, while {O1} is no longer active. Given the binding to its third argument, eoneat returns bindings to the 348 2 first two, and thus it also binds P3, which is an essential argument in venpaas. 5 Below is the general procedure MSEAS for computing the active sets of essential arguments in the head literal of a clause as proposed in (Strzalkowski and Peng, 1990).</Paragraph>
    <Paragraph position="3"> Let's consider the following abstract clause defining a predicate R~:</Paragraph>
    <Paragraph position="5"> Q.(...).</Paragraph>
    <Paragraph position="6"> Suppose that, as defined by (R), R i has the set MSi = {m 1, &amp;quot; &amp;quot; ' ,mj} of active MSEA's, and let MRI ~_ MSI be the set of all MSEA for R~ that can be obtained by permuting the order of literals on the right-hand side of (R). Let us assume further that R i occurs on rhs of some other clause, as shown below:</Paragraph>
    <Paragraph position="8"> R,.(x~, ~,-.. ,x~,k~).</Paragraph>
    <Paragraph position="9"> We want to compute MS, the set of active MSEA's for P, as defined by (P), where s &gt;_ 1, assuming that we know the sets of active MSEA for each R~ on the rhs. 6 In the following procedure, the expression VAR (T), where 7&amp;quot; is a set of terms, denotes the the set of all vari- null ables occurring in the terms in T.</Paragraph>
    <Paragraph position="10"> MSEAS (MS,MSEA, VP,i, OUT) (1) Start with VP = VAR ({X1, &amp;quot; &amp;quot; ,X.}), MSEA = f~,  i=1, and OUT = O. When the computation is completed, MS is bound to the set of active MSEA's for P.</Paragraph>
    <Paragraph position="11"> (2) Let MR 1 be the set of active MSEA's of R 1, and let MRU1 be obtained from MR ~ by replacing all variables in each member of MR1 by their corresponding actual arguments of R~ on the rhs  of (C1).</Paragraph>
    <Paragraph position="12"> (3) IfR I = P then for every rnl,k e MRU1 if every argument Yt e m 1,k is always unifiable 7 with its s We note that since concat could also be executed with P2 bound, the set {O1, P2} constitutes another active MSEA for inverted objeetbe. Ilowever, this MSEA is of little use since the binding to O'I is unlikely to be, known in generation. 6 MSEA's of basic predicates, such as concat, are assumed to be known a priori; MSEA's for recursive predicates are first computed from non-recursive clauses. We assume that symbols Xi in definitions (P) and (R) above represent terms, not just variables. For more details see (Strzalkowsld and Peng, 1990). The case of s=O is discussed below.</Paragraph>
    <Paragraph position="13"> 7 A term Y is always unifiable with a term X if they unify re null gardless of the possible bindings of any variables occurring in Y (variables standardized apart), while the variables occurring in X are unbound. Any term is always unifiable with a variable, but the inverse is not necessarily true.</Paragraph>
    <Paragraph position="14"> corresponding .argument Xt in P then remove m I,k from MRU 1. For every set ml,kj = ml,k vo {X I,j}, where X 1,j is an argument in R 1 such that it is not already in m l,k and it is not always unifiable with its corresponding argument in P, and m 1,kj is not a superset of any other ml,t remaining in MRUt,  add ml&amp;. to MRU 1.</Paragraph>
    <Paragraph position="15"> (4) For each ml,j e MRU1 O'=l ''' rl) compute bh,j := VAR(ml,j) c~ VP. Let MP1 = {t/1,./ I ~(t-tx,j), j=l ... r}, where r&gt;0, and ~(I-q,j) = \[I-h,j C/ ~ or (lth,j = O and VAR (m I,j) = ~D)\], If MP 1 = O then QUIT: (C1) is ill-formed and cannot be executed.</Paragraph>
    <Paragraph position="16"> (5) For each I-q,j 6 MP1 we do the following: (a) assume that bh,j is &amp;quot;in&amp;quot; in R1; (b) compute set OUT1, j of &amp;quot;out&amp;quot; arguments for R i; (c) call MSEAS (MS Lj,btl.j,VP, 2,0UTI,j); (d) assign MS := ~ MSI,j.</Paragraph>
    <Paragraph position="17"> j=l..r (6) In some i-th step, where l&lt;i&lt;_s, and MSEA = ~/i-l,k, let's suppose that MR i and MRUi are the sets of active MSEA's and their instantiations with actual arguments of R i, for the literal R i on the rhs of (p).</Paragraph>
    <Paragraph position="18"> (7) If Ri = P then for every mi,. e MRUi if every argument Y, e mi,u is always unifiable with its corresponding argument Xt in P then remove mi, u  from MRUi. For every set mi,~, 1 = mi.u u \[Xi,j} where X~.i is an argument in R i such that it is not already in mi, u and it is not always unifiable with its corresponding argument in P and mi,.j is not a superset of any other mi, t remaining in MRUi, add mi..j to MRU 1 .</Paragraph>
    <Paragraph position="19"> (8) Again, we compute the set MP i = {t.ti,j I j=l ... ri}, where P-i,j = (VAR (mi,j) - OUTi&lt;,k), where OUT~&lt;.k is the set of all &amp;quot;out&amp;quot; arguments in litemls R 1 to Ri_ 1 .</Paragraph>
    <Paragraph position="20"> (9) For each \].ti, j remaining in MP i where i&lt;_s do the following:</Paragraph>
    <Paragraph position="22"> minimal size sets v, c VP such that whenever the arguments in vt are &amp;quot;in&amp;quot;, then the arguments in ~i,j are &amp;quot;out&amp;quot;, If such v/s exist, then for every vt do: (i) assume v, is &amp;quot;in&amp;quot; in P; (ii) compute the set OUT~,j, of &amp;quot;out&amp;quot; arguments in all literals from R 1 to Ri; (iii) call MSEA S (MSi,j, , ~i- 1, k WV t, VP, i + 1,0 UT i,j, );  (c) otherwise, if no such vt exist, MSi,j := O.</Paragraph>
    <Paragraph position="23"> (10) Compute MS := U M&amp;,j;</Paragraph>
    <Paragraph position="25"> In order to compute the set of all MSEA's for P, the procedure presented above need to be modified so that it would consider all feasible orderings of literals on the rhs of (P), using information about all MSEA's for Ri's. This modified procedure would regard the rhs of (P) as an unordered set of literals, and use various heuristics to consider only selected orderings. We outline the modified procedure briefly below.</Paragraph>
    <Paragraph position="26"> Let RR denote this set, that is, RR = {Ri I i=1 &amp;quot;'s}. We add RR as an extra argument to MSEAS procedure, so that the call to the modified version becomes MSEAS (MS,MSEA,VP,RR,i, OUT).</Paragraph>
    <Paragraph position="27"> Next we modify step (2) in the procedure as follows: (2') F:or every element Rt. 1 ~ RR, do (2) to (5): (2) Let MR,. 1 be the set of all MSEA's of R,. 1, and let MRU,. 1 be obtained from MR,. 1 by replacing all variables in each member of MR,, 1 by their corresponding actual arguments of R,, 1.</Paragraph>
    <Paragraph position="28"> Further steps are modified accordingly. The reader may note that the modified MSEAS procedure will consider all feasible ways of ordering elements of RR.</Paragraph>
    <Paragraph position="29"> In the steps shown above, we select all literals as potential leading elements on the right hand side, even though most of them will be rejected by steps (3) and (4). For those that survive, we will select elements from the rest of RR that can follow them. In step (5) the recursive call to MSEAS will be M SEAS (MS,. 1.y,l-t,, 1,j, VP,RR-{R,. 1},2,OUT,. 1.j). In step (6), that is, in i-th step of the recursion, we consider all elements of RR-{R,,j I j=l * * * i-1}, for selection of the i-th literal on the right-hand side. By this time we will have already generated a number of possible orderings of {R t I l=l * *. i-1}. We add step (6') which contains the head of an iteration over the remaining elements of RR, and covering steps (6) to (11). Again, some of the elements of RR will be rejected in steps (7) and (10). We continue until RR is completely ordered, possibly in several different ways.</Paragraph>
    <Paragraph position="30"> For each such possible ordering a set of MSEA's will be computed. Step (12) is an end condition with RR=~. To obtain a meaningful result, MSEA's in MR,,j's must be grouped into sets of these which are active at the same time, that is, they belong to the set of active MSEA's for a specific definition of P (i.e., ordering of RR). MSEA's belonging to different groups give rise to alternative sets of MSEA's in the final set MS. Note that in this modified algorithm, MS becomes a set of sets of sets.</Paragraph>
    <Paragraph position="31"> An important part in the process of computing essential arguments for literals is the selection of MSEA's for lexicon access and other primitives whose definitions are not subject to change. As an example, consider a fragment of a lexicon: verb ( \[looks IV\] ,V, sg, look) .</Paragraph>
    <Paragraph position="32"> verb( \[looklV\] ~V,pl, look) .</Paragraph>
    <Paragraph position="33"> verb ( \[arrives IV\], V, sg, arrive) .</Paragraph>
    <Paragraph position="34"> verb ( \[arrive IV\], V, pl, arrive) .</Paragraph>
    <Paragraph position="35"> The lexicon access primitive verb (VI, V2, Nm, P) has two sets of essential arguments: {Vl} and {Nm, P}. This is because {vl} can be consistently unified with at most one of {\[lookalV\]}, { \[look I Vl }, { \[arrive I V\] }, etc., at a time. Similarly, {Nm, P} can be consistently unified at any one time with at most one of {sg, look}, {pl, look}, {sg, arrive}, etc. Note that neither {P} nor {Nm} alone are sufficient, since they would unify with corresponding arguments in more than one clause.</Paragraph>
    <Paragraph position="36"> This indeterminacy, although not necessarily fatal, may lead to severe inefficiency if the generator has to make long backups before a number agreement is established between, say, a verb and its subject. On the other hand, if the representation from which we generate does not include information about the lexical number for constituents, we may have to accept {P } as the generation-mode MSEA for verb, or else we risk that the grammar will not be reversed at all.</Paragraph>
  </Section>
  <Section position="6" start_page="0" end_page="0" type="metho">
    <SectionTitle>
REORDERING LITERALS IN CLAUSES
</SectionTitle>
    <Paragraph position="0"> When attempting to expand a literal on the rhs of any clause the following basic rule should be observed: never expand a literal before at least one its active MSEA's is &amp;quot;in&amp;quot;, which means that all arguments in at least one MSEA are bound. The following algorithm uses this simple principle to reorder rhs of parser clauses for reversed use in generation. This algorithm uses the information about &amp;quot;in&amp;quot; and &amp;quot;out&amp;quot; arguments for literals and sets of MSEA's for predicates. If the &amp;quot;in&amp;quot; MSEA of a literal is not active then the rhs's of every definition of this predicate is recursively reordered so that the selected MSEA becomes active. We proceed top-down altering definitions of predicates of the literals to make their MSEA's active as necessary, starting with the top level predicate parse(S,P), where P is marked &amp;quot;in&amp;quot; (parse structure) and S is marked &amp;quot;out&amp;quot; (generated sentence). We continue until we reach the level of atomic or non-reversible primitives such as concat, member, or dictionary look-up routines. If this process succeeds at reversing predicate definitions at each level, then the reversed-parser generator is obtained.</Paragraph>
    <Paragraph position="1"> INVERSE(&amp;quot;head :- old-rhs&amp;quot;,ins,outs); {ins and outs are subsets of VAR(head) which are &amp;quot;in&amp;quot; and are required to be &amp;quot;out&amp;quot;, respectively } begin compute M the set of all MSEA's for head; for every MSEA m e M do begin</Paragraph>
    <Paragraph position="3"> if m is an active MSEA such that me ins then begin compute &amp;quot;out&amp;quot; arguments in head; add them to OUT;</Paragraph>
    <Paragraph position="5"> for every literal L do M L := ~; {done only once during the inversion} repeat mark &amp;quot;in&amp;quot; old-rhs-1 arguments which are either constants, or marked &amp;quot;in&amp;quot; in head, or marked &amp;quot;in&amp;quot;, or &amp;quot;out&amp;quot; in new-rhs; select a literal L in old-rhs-1 which has an &amp;quot;in&amp;quot; MSEA m L and if m L is not active in L then either M L = 0 or m L e ML; set up a backtracking point containing all the remaining alternatives to select L from old-rhs-1; if L exists then begin if m L is non-active in L then bbegin if M L = O then M~, := M L ~3 {mL} ; for every clause &amp;quot;L1 :- rhSL/' such that L1 has the same predicate as L do begin INVERSECL1 :- rhsu&amp;quot;,ML,~); if GIVEUP returned then backup, undoing all changes, to the latest backtracking  point and select another alternative end end; compute &amp;quot;i~f' and &amp;quot;out&amp;quot; arguments in L; add &amp;quot;out&amp;quot; arguments to OUT; ncw-rhs := APPEND-AT-THE-END(ncw-rhs,L); old-rhs- 1 := REMOVE(old-rhs- 1,L) end {if} else begin backup, undoing all changes, to the latest backtracking point and select another alternative; if no such backtracking point exists then QUIT := true end {else} until old-rhs-1 = O or QUIT; if outscOUT and not QUIT then DONE C head:-new -rh s&amp;quot;) end {elseif} end; {for} GIVEUPCgrammar can't be inverted as specified&amp;quot;) end;</Paragraph>
  </Section>
  <Section position="7" start_page="0" end_page="0" type="metho">
    <SectionTitle>
MOVING LITERALS BETWEEN CLAUSES
</SectionTitle>
    <Paragraph position="0"> The inversion algorithm, as realized by the procedure INVERSE, requires that for each clause in the parser code we can find a definite order of literals on its right-hand side that would satisfy the requirements of running this clause in the reverse: appropriate minimal sets of essential arguments (MSEA's) are bound at the fight time. However, this requirement is by no means guaranteed and INVERSE may encounter clauses for which no ordering of the literals on the right-hand side would be possible. It may happen, of course, that the clause itself is ill-formed but this is not the only situation. It may be that two or more literals on tile right-hand side of a clause cannot be scheduled because each is waiting for the other to deliver the missing bindings to some essential arguments. As an example, consider the grammar fragment below:  In the generation mode, that is, with the variable P instantiated by the parse structure of a sentence, the following active MSEA's and &amp;quot;out&amp;quot; arguments have been computed:  In order to use these rules for generation, we would have to change the order of literals on the right-hand side of sent clause, so that the vp is expanded first. However, doing so would require that the variable N1 is bound. This we could get by firing subj first, but we can't do this either, since we wouldn't know the binding to P1. We note, however, that if we consider the two clauses together, then a consistent ordering of literals can be found. To see it, we expand vp on the right-hand side of the first clause replacing it with the appropriately unified literals in the right-hand side of the second clause, and obtain a single new clause that can be reordered for generation as follows: sent(P) :- obj(PI,P2,P), v (N2, P2) , sub (NI, PI) , agree (NI, N2 ) .</Paragraph>
    <Paragraph position="1"> Now we can reintroduce the non-terminal vp, and break the above rule back into two. Note that as a result agree migrated to the first clause, and N2 replaced N1 on the argument list of vp. Note also that N2 is not an essential argument in the new vp.</Paragraph>
    <Paragraph position="3"> The only thing that remains to be done is to automatically determine the arguments of the new vp predicate. Doubtless, it will be a subset of the arguments occurring in the literals that create the right-hand side of the new clause. In the example given this set is {N2,1?1, I72,17}. From this set, we remove all those arguments which do not occur in other literals of the original clause, that is, before the break up. The only such argument is 172, and thus the final set of arguments to vp becomes {N2,P:I.,1?}, as shown above.</Paragraph>
    <Paragraph position="4"> The complete algorithm for interclausal reordering of goals can be described by a largely straightforward extension to INVERSE (Strzalkowski, 1989) 8</Paragraph>
  </Section>
class="xml-element"></Paper>
Download Original XML