Chapter 5

Clause layers


5.1    Introduction

This chapter introduces clause (IP) layers. Section 5.2 has rules for building clause structure. Section 5.3 looks at matrix interrogative clauses where the subject is not under question. Section 5.4 sees an expansion of potential for clause structure with catenative verbs. Section 5.5 adds rules to join up clause content for statement word order. Section 5.6 covers ripple effects in the clause that existential there starts.


5.2    Clause structure

The clause_top_layer rules of (5.1) and (5.2) establish the initial elements of a clause. All have a Store parameter to list index information for already identified structure that has yet to integrate with the overall parse structure. Also, all have a clause Type parameter.

    The rules of (5.1), all of which are non-recursive, each have something to say about the clause subject. For [rule 2], with the clause Type set to imperative_clause, there can be no subject. The other rules need to:

Rules 1 and 3–6 that find subject content with subject vary in regard to where the subject occurs in the word list and the value taken by the clause Type parameter, as follows:

    Rules 2–4 and 7 restrict how the clause SbjType parameter is set:

    When there is clause Infl (inflection) information, occurring with calls to verb_phrase_layer, this varies:

    When there is clause Voice information, occurring with calls to verb_phrase_layer [rules 2 and 5] or verb_complements_top_layer [rule 6], this is always active.

(5.1)
clause_top_layer(statement_order,Store,L,L0) -->
  subject(SbjType,L,L1),
  clause_middle_layer(Store,SbjType,L1,L0).
clause_top_layer(imperative_clause,Store,L,L0) -->
  verb_phrase_layer(Store,filled_sbj,imperative,active,L,L0).
clause_top_layer(tag_question,[],L,L0) -->
  do_operator_layer(L,L1),
  {
    member(SbjType,[filled_sbj,expletive_sbj])
  },
  subject(SbjType,L1,L0).
clause_top_layer(tag_question,[],L,L0) -->
  have_be_or_md_finite_layer(_,L,L1),
  {
    member(SbjType,[filled_sbj,expletive_sbj])
  },
  subject(SbjType,L1,L0).
clause_top_layer(Type,Store,L,L0) -->
  {
    member(Type,[matrix_interrogative,matrix_constituent_interrogative])
  },
  do_operator_layer(L,L2),
  subject(SbjType,L2,L1),
  verb_phrase_layer(Store,SbjType,do_supported_infinitive,active,L1,L0).
clause_top_layer(Type,Store,L,L0) -->
  {
    member(Type,[matrix_interrogative,matrix_constituent_interrogative])
  },
  have_be_or_md_finite_layer(Code,L,L2),
  subject(SbjType,L2,L1),
  verb_complements_top_layer(Code,Store,SbjType,active,L1,L0).
clause_top_layer(matrix_constituent_interrogative,[np(ICH)|Store],[node('NP-SBJ',[ICH])|L],L0) -->
  {
    member(SbjType,[filled_sbj,derived_sbj])
  },
  clause_middle_layer(Store,SbjType,L,L0).

    In addition to the rules of (5.1), there are also the rules of (5.2), all of which are recursive, to enable:

(5.2)
clause_top_layer(Type,Store,L,L0) -->
  initial_adverbial(L,L2),
  optional_punc_non_final(L2,L1),
  clause_top_layer(Type,Store,L1,L0).
clause_top_layer(Type,Store,L,L0) -->
  clause_top_layer(Type,Store,L,L2),
  optional_punc_non_final(L2,L1),
  adverbial(L1,L0).
clause_top_layer(matrix_interrogative,Store,L,L0) -->
  {
    gensym('-',Index),
    atom_concat('*ICH*',Index,ICH)
  },
  noun_phrase(Index,interrogative,L,L1),
  clause_top_layer(matrix_constituent_interrogative,[np(node(ICH,[]))|Store],L1,L0).
clause_top_layer(matrix_interrogative,Store,L,L0) -->
  {
    gensym('-',Index),
    atom_concat('*ICH*',Index,ICH)
  },
  preposition_phrase(Index,interrogative,L,L1),
  clause_top_layer(matrix_constituent_interrogative,[pp(node(ICH,[]))|Store],L1,L0).
clause_top_layer(matrix_interrogative,Store,L,L0) -->
  {
    gensym('-',Index),
    atom_concat('*ICH*',Index,ICH)
  },
  adjective_phrase(Index,interrogative,L,L1),
  clause_top_layer(matrix_constituent_interrogative,[adjp(node(ICH,[]))|Store],L1,L0).
clause_top_layer(matrix_interrogative,Store,L,L0) -->
  {
    gensym('-',Index),
    atom_concat('*ICH*',Index,ICH)
  },
  adverb_phrase(Index,interrogative,L,L1),
  clause_top_layer(matrix_constituent_interrogative,[advp(node(ICH,[]))|Store],L1,L0).
clause_top_layer(matrix_interrogative,Store,L,L0) -->
  adverb_phrase('-NIM',interrogative,L,L1),
  clause_top_layer(matrix_constituent_interrogative,Store,L1,L0).
clause_top_layer(statement_order,Store,L,L0) -->
  {
    gensym('-',Index),
    atom_concat('*ICH*',Index,ICH)
  },
  noun_phrase(Index,non_interrogative,L,L2),
  optional_punc_non_final(L2,L1),
  clause_top_layer(statement_order,[np(node(ICH,[]))|Store],L1,L0).
clause_top_layer(statement_order,Store,L,L0) -->
  {
    gensym('-',Index),
    atom_concat('*ICH*',Index,ICH)
  },
  preposition_phrase(Index,non_interrogative,L,L2),
  optional_punc_non_final(L2,L1),
  clause_top_layer(statement_order,[pp(node(ICH,[]))|Store],L1,L0).
clause_top_layer(statement_order,Store,L,L0) -->
  {
    gensym('-',Index),
    atom_concat('*ICH*',Index,ICH)
  },
  punc(left_quotation_mark,L,L4),
  utterance(Index,L4,L3),
  punc(right_quotation_mark,L3,L2),
  optional_punc_non_final(L2,L1),
  clause_top_layer(statement_order,[utterance(node(ICH,[]))|Store],L1,L0).
clause_top_layer(Type,Store,[node('ILYR',[node('ILYR',IL)|CL])|L],L) -->
  clause_top_layer(Type,Store,IL,[]),
  clause_top_tail(Type,Store,CL,[]).
(5.3)
clause_top_tail(Type,Store,[node('CONJP',[CONJ,node('ILYR',IL)])|L],L) -->
  conj(CONJ),
  clause_top_layer(Type,Store,IL,[]).
clause_top_tail(Type,Store,[PU,node('CONJP',[node('ILYR',IL)])|L],L0) -->
  punc(non_final,[PU],[]),
  clause_top_layer(Type,Store,IL,[]),
  clause_top_tail(Type,Store,L,L0).

    Note how, with the recursive rules of (5.2): noun phrases [rules 3 and 8], preposition phrases [rules 4 and 9], adjective phrases [rule 5], adverb phrases [rules 6 and 7] and utterances [rule 10], all receive an index coindexed with an *ICH* (interpret constituent here marker) that goes into the Store parameter to ultimately be:

    Note that rules of (5.2) with indexed items that carry interrogative type information [rules 3–7] change the clause Type parameter from matrix_interrogative to matrix_constituent_interrogative. Consequently, only one stored index related to an item with interrogative type information is possible with a matrix clause. Moreover, when under question, the noun phrase subject of a matrix clause must be the one indexed phrase with interrogative type information.

    Also, note how [rule 1] of (5.2) has an initial_adverbial call (from section 2.10) to pick up:

    [Rule 2] for clause_top_layer of (5.1) calls verb_phrase_layer of (5.4). This subsequent rule layer ensures there is a place for introducing inflection and voice information before the verb and its complements are encountered. Having the clause type value imperative_clause, [rule 2] of (5.1) gives the values of imperative for the Infl (inflection) parameter and active for the Voice parameter.

    The full range of options for the Infl parameter are:

Options for the Voice parameter are:

    With (5.4), in addition to passing on information for verb_complements_top_layer [rule 1], there is, provided the clause has imperative inflection, a non-recursive rule [rule 2] to support the presence of an imperative DO with operator function (so tagged DO and with no verb code) possibly followed by a clitic negation (added with optional_clitic_negation from section 2.10).

    Calls to verb_phrase_layer can also be recursive, allowing the parse to either:

(5.4)
verb_phrase_layer(Store,SbjType,Infl,Voice,L,L0) -->
  verb(Infl,Code,L,L1),
  verb_complements_top_layer(Code,Store,SbjType,Voice,L1,L0).
verb_phrase_layer(Store,SbjType,Infl,Voice,[node('DO',[node(Word,[])])|L],L0) -->
  {
    SbjType == filled_sbj,
    Infl == imperative,
    Voice == active
  },
  [w('DO','',Word)],
  optional_clitic_negation(L,L1),
  verb_phrase_layer(Store,SbjType,infinitive,Voice,L1,L0).
verb_phrase_layer(Store,SbjType,Infl,Voice,L,L0) -->
  adverb_phrase('-NIM',non_privileged,L,L1),
  verb_phrase_layer(Store,SbjType,Infl,Voice,L1,L0).
verb_phrase_layer(Store,SbjType,Infl,Voice,L,L0) -->
  verb_phrase_layer(Store,SbjType,Infl,Voice,L,L1),
  adverbial(L1,L0).
verb_phrase_layer(Store,SbjType,Infl,Voice,[node('ILYR',[node('ILYR',IL)|CL])|L],L) -->
  verb_phrase_layer(Store,SbjType,Infl,Voice,IL,[]),
  verb_phrase_tail(Store,SbjType,Infl,Voice,CL,[]).
(5.5)
verb_phrase_tail(Store,SbjType,Infl,Voice,[node('CONJP',[CONJ,node('ILYR',IL)])|L],L) -->
  conj(CONJ),
  verb_phrase_layer(Store,SbjType,Infl,Voice,IL,[]).
verb_phrase_tail(Store,SbjType,Infl,Voice,[PU,node('CONJP',[node('ILYR',IL)])|L],L0) -->
  punc(non_final,[PU],[]),
  verb_phrase_layer(Store,SbjType,Infl,Voice,IL,[]),
  verb_phrase_tail(Store,SbjType,Infl,Voice,L,L0).

    Query (5.6) illustrates how a word list can have content for the top layer of a resulting clause, placed under a clause_top_layer node for presentation as a tree structure.

(5.6)
| ?- tphrase_set_string([w('FRM','Please'), w('VB',';~I','smile')]), parse(clause_top_layer(imperative_clause,[])).

( (FRM Please)
  (VB;~I smile))

yes

Calls to reach the output of (5.6) follow (5.7). Notably, verb_complements_by_code succeeds because it receives the empty word list.

(5.7)
clause_top_layer imperative_clause
initial_adverbial

[w('FRM','Please')]
optional_punc_non_final

[]
clause_top_layer imperative_clause
verb_phrase_layer filled_sbj imperative active
verb imperative ;~I

[w('VB',';~I','smile')]
verb_complements_top_layer ;~I filled_sbj active
verb_complements_by_code ;~I filled_sbj active

[]

5.3    Matrix interrogatives

This section considers matrix interrogative clauses where the subject is not under question. Prior to its non-interrogative subject, such a clause will have either a finite DO, a finite HAVE, a finite BE or a modal verb, any of which the contracted form of negation (n't) can follow. This section adds rules to match these pre-subject components, so that a parse can integrate them with calls of clause_top_layer from section 5.2 above.

5.3.1    DO operator layer

Having the do_operator_layer rule of (5.8) leads to inclusion of a finite DO and also allows for an optional presence for negation as clitic n't (integrated with optional_clitic_negation from section 2.10).

(5.8)
do_operator_layer([node(Tag,[node(Word,[])])|L],L0) -->
  [w(Tag,'',Word)],
  {
    member(Tag,['DOP','DOD'])
  },
  optional_clitic_negation(L,L0).

    As example content for a constituent question that needs a do_operator_layer call to parse a finite DO, consider (5.9).

(5.9)
| ?- tphrase_set_string([w('WADV','Why'), w('DOD','','did'), w('NEG;_clitic_','n<apos>t'), w('PRO','you'), w('VB',';~I','go')]), parse(clause_top_layer(matrix_interrogative,[])).

( (ADVP-NIM (WADV Why))
  (DOD did)
  (NEG;_clitic_ n<apos>t)
  (NP-SBJ (PRO you))
  (VB;~I go))

yes

Note how operator DO, as seen in (5.9), is distinguished by having no verb code with its word list contribution (w('DOP','','do')) and so occurring with only its word class tag (DOP) in the tree structure.

    Calls to reach the output of (5.9) follow (5.10).

(5.10)
clause_top_layer matrix_interrogative
adverb_phrase -NIM interrogative
adverb_phrase_layer interrogative
adv interrogative

[w('WADV','Why')]
clause_top_layer matrix_constituent_interrogative
do_operator_layer

[w('DOP','','do')]
optional_clitic_negation

[w('NEG;_clitic_','n<apos>t')]
subject filled_sbj
noun_phrase -SBJ non_interrogative
noun_phrase_top non_interrogative
noun_head_full non_interrogative

[w('PRO','you')]
verb_phrase_layer filled_sbj infinitive active
verb infinitive ;~I

[w('VB',';~I','go')]
verb_complements_top_layer ;~I filled_sbj active
verb_complements_by_code ;~I filled_sbj active

[]

5.3.2    HAVE, BE or modal verb finite layers

Having the three have_be_or_md_finite_layer rules of (5.11) allows for the inclusion of either:

All three rules allow for an optional presence for negation as clitic n't with calls of optional_clitic_negation from section 2.10.

(5.11)
have_be_or_md_finite_layer(Code,[node(TagCode,[node(Word,[])])|L],L0) -->
  [w(Tag,Code,Word)],
  {
    member(Tag,['HVP','HVD']),
    verb_code('H',finite,Code),
    atom_concat(Tag,Code,TagCode)
  },
  optional_clitic_negation(L,L0).
have_be_or_md_finite_layer(Code,[node(TagCode,[node(Word,[])])|L],L0) -->
  [w(Tag,Code,Word)],
  {
    member(Tag,['BEP','BED']),
    verb_code('B',finite,Code),
    atom_concat(Tag,Code,TagCode)
  },
  optional_clitic_negation(L,L0).
have_be_or_md_finite_layer(Code,L,L0) -->
  modal(Code,L,L1),
  optional_clitic_negation(L1,L0).

    As example content for a yes/no question that needs a have_be_or_md_finite_layer call to parse a finite HAVE, consider (5.12).

(5.12)
| ?- tphrase_set_string([w('HVP',';~Tn','Has'), w('PRO','he'), w('D','a'), w('N','fever')]), parse(clause_top_layer(matrix_interrogative,[])).

( (HVP;~Tn Has)
  (NP-SBJ (PRO he))
  (NP-OB1 (D a)
          (N fever)))

yes

Calls to reach the output of (5.12) follow (5.13).

(5.13)
clause_top_layer matrix_interrogative
have_be_or_md_finite_layer ;~Tn

[w('HVP',';~Tn','Has')]
optional_clitic_negation

[]
subject filled_sbj
noun_phrase -SBJ non_interrogative
noun_phrase_top non_interrogative
noun_head_full non_interrogative

[w('PRO','he')]
verb_complements_top_layer ;~Tn filled_sbj active
verb_complements_by_code ;~Tn filled_sbj active
noun_phrase -OB1 non_privileged
noun_phrase_top non_privileged
noun_phrase_initial_layer non_privileged
determiner_phrase_layer non_privileged
det non_privileged

[w('D','a')]
internal_np_higher_layer
internal_np_lower_layer
noun

[w('N','fever')]

    As example content for a constituent question that needs a have_be_or_md_finite_layer call to parse a finite BE, consider (5.14).

(5.14)
| ?- tphrase_set_string([w('WPRO','What'), w('BEP',';~Ln','is'), w('PRO','he')]), parse(clause_top_layer(matrix_interrogative,[])).

( (NP-138 (WPRO What))
  (BEP;~Ln is)
  (NP-SBJ (PRO he))
  (NP-PRD2 *ICH*-138))

yes

Calls to reach the output of (5.14) follow (5.15).

(5.15)
clause_top_layer matrix_interrogative
noun_phrase -138 interrogative
noun_phrase_top interrogative
noun_head_full interrogative

[w('WPRO','What')]
clause_top_layer matrix_constituent_interrogative [np(node('*ICH*-138',[]))]
have_be_or_md_finite_layer ;~Ln

[w('BEP',';~Ln','is')]
optional_clitic_negation

[]
subject filled_sbj
noun_phrase -SBJ non_interrogative
noun_phrase_top non_interrogative
noun_head_full non_interrogative

[w('PRO','he')]
verb_complements_top_layer ;~Ln [np(node('*ICH*-138',[]))] filled_sbj active
verb_complements_by_code ;~Ln [np(node('*ICH*-138',[]))] filled_sbj active

[]

5.4    Clause structure with catenative verbs

So far, we have seen clause structure with only a single verb, but a clause might include a sequence of verbs. The main verb is either the only verb of a clause or the last verb to occur in a sequence of verbs of the same clause. Verbs of a verb sequence that are prior to the main verb are called catenative verbs.

    Section 4.10 provides verb_complements_by_code rules for the full range of catenative verbs. Now we focus on resulting clause structure from catenative verbs with code:

5.4.1    Catenative verbs with bare infinitive complements

The verb_complements_by_code rule of section 4.10 for code ;~cat_Vi involves selection of a bare infinitive clause as its complement with the verb_phrase_layer rules of (5.4) above.

    As an example involving selection of a bare infinitive clause as the complement of a modal verb, consider (5.16).

(5.16)
| ?- tphrase_set_string([w('MD',';~cat_Vi','Can'), w('PRO','I'), w('VB',';~I','help')]), parse(clause_top_layer(matrix_interrogative,[])).

( (MD;~cat_Vi Can)
  (NP-SBJ (PRO I))
  (IP-INF-CAT (VB;~I help)))

yes

Calls to reach the output of (5.16) follow (5.17).

(5.17)
clause_top_layer matrix_interrogative
have_be_or_md_finite_layer ;~cat_Vi
modal ;~cat_Vi

[w('MD',';~cat_Vi','Can')]
optional_clitic_negation

[]
subject filled_sbj
noun_phrase -SBJ non_interrogative
noun_phrase_top non_interrogative
noun_head_full non_interrogative

[w('PRO','I')]
verb_complements_top_layer ;~cat_Vi filled_sbj active
verb_complements_by_code ;~cat_Vi filled_sbj active
verb_phrase_layer filled_sbj infinitive active
verb_phrase_layer filled_sbj infinitive active
verb infinitive ;~I

[w('VB',';~I','help')]
verb_complements_top_layer ;~I filled_sbj active
verb_complements_by_code ;~I filled_sbj active

[]

5.4.2    Catenative verbs with to-infinitive complements

The verb_complements_by_code rule of section 4.10 for code ;~cat_Vt involves selection of a to-infinitive clause as its complement by picking up from the word list an initial to word (see section 2.10) and then the remainder of the infinitive clause with a call of verb_phrase_layer of (5.4) above with the clause Type set to infinitive and Voice kept as active.

    As an example involving selection of a to-infinitive clause as the complement of a modal verb, consider (5.18).

(5.18)
| ?- tphrase_set_string([w('MD',';~cat_Vt','Ought'), w('NEG;_clitic_','n<apos>t'), w('PRO','he'), w('TO','to'), w('VB',';~Ip','stand'), w('RP','up')]), parse(clause_top_layer(matrix_interrogative,[])).

( (MD;~cat_Vt Ought)
  (NEG;_clitic_ n<apos>t)
  (NP-SBJ (PRO he))
  (IP-INF-CAT (TO to)
              (VB;~Ip stand)
              (ADVP-CLR (RP up))))

yes

Calls to reach the output of (5.18) follow (5.19).

(5.19)
clause_top_layer matrix_interrogative
have_be_or_md_finite_layer ;~cat_Vt
modal ;~cat_Vt

[w('MD',';~cat_Vt','Ought')]
optional_clitic_negation

[w('NEG;_clitic_','n<apos>t')]
subject filled_sbj
noun_phrase -SBJ non_interrogative
noun_phrase_top non_interrogative
noun_head_full non_interrogative

[w('PRO','he')]
verb_complements_top_layer ;~cat_Vt filled_sbj active
verb_complements_by_code ;~cat_Vt filled_sbj active
to

[w('TO','to')]
verb_phrase_layer filled_sbj infinitive active
verb infinitive ;~Ip

[w('VB',';~Ip','stand')]
verb_complements_top_layer ;~Ip filled_sbj active
verb_complements_by_code ;~Ip filled_sbj active
adverb_phrase -CLR particle
adverb_phrase_layer particle
adv particle

[w('RP','up')]

5.4.3    Catenative verbs with active voice past participle clause complements

The verb_complements_by_code rule of section 4.10 for code ;~cat_Ve involves selection of an active past participle (-ed/-en) clause as its complement. This occurs when the word class tag is a form of HAVE (either HVP, HVD, HV, HAG or HVN).

    The ip_ppl_active rule of (5.20) finds an active participle clause for overall structure labelled IP-PPL, together with any extension from the Ext parameter. This works with a subsequent call to verb_phrase_layer with an active setting for Voice. A past participle clause follows when Infl is set to en_participle.

(5.20)
ip_ppl_active(Ext,Store,SbjType,Infl,[node(Label,VL)|L],L) -->
  {
    atom_concat('IP-PPL',Ext,Label)
  },
  verb_phrase_layer(Store,SbjType,Infl,active,VL,[]).

    As an example involving selection of a past participle (-ed/-en) clause as the complement of a catenative verb that is a form of HAVE, consider (5.21).

(5.21)
| ?- tphrase_set_string([w('HVP',';~cat_Ve','Has'), w('PRO','he'), w('VVN',';~I','gone')]), parse(clause_top_layer(matrix_interrogative,[])).

( (HVP;~cat_Ve Has)
  (NP-SBJ (PRO he))
  (IP-PPL-CAT (VVN;~I gone)))

yes

Calls to reach the output of (5.21) follow (5.22).

(5.22)
clause_top_layer matrix_interrogative
have_be_or_md_finite_layer ;~cat_Ve

[w('HVP',';~cat_Ve','Has')]
optional_clitic_negation

[]
subject filled_sbj
noun_phrase -SBJ non_interrogative
noun_phrase_top non_interrogative
noun_head_full non_interrogative

[w('PRO','he')]
verb_complements_top_layer ;~cat_Ve filled_sbj active
verb_complements_by_code ;~cat_Ve filled_sbj active
ip_ppl_active -CAT filled_sbj en_participle
verb_phrase_layer filled_sbj en_participle active
verb en_participle ;~I

[w('VVN',';~I','gone')]
verb_complements_top_layer ;~I filled_sbj active
verb_complements_by_code ;~I filled_sbj active

[]

5.4.4    Catenative verbs with active voice present participle clause complements

The verb_complements_by_code rule of section 4.10 for code ;~cat_Vg involves selection of a present participle (-ing) clause as its complement.

    To find a present participle (-ing) clause, the Infl parameter for a call to ip_ppl_active of (5.20) is set to ing_participle.

    As an example involving selection of a present participle (-ing) clause as the complement of a catenative verb that is a form of BE, consider (5.23).

(5.23)
| ?- tphrase_set_string([w('BEP',';~cat_Vg','Is'), w('PRO','he'), w('VAG',';~I','going')]), parse(clause_top_layer(matrix_interrogative,[])).

( (BEP;~cat_Vg Is)
  (NP-SBJ (PRO he))
  (IP-PPL-CAT (VAG;~I going)))

yes

Calls to reach the output of (5.23) follow (5.24).

(5.24)
clause_top_layer matrix_interrogative
have_be_or_md_finite_layer ;~cat_Vg

[w('BEP',';~cat_Vg','Is')]
optional_clitic_negation

[]
subject filled_sbj
noun_phrase -SBJ non_interrogative
noun_phrase_top non_interrogative
noun_head_full non_interrogative

[w('PRO','he')]
verb_complements_top_layer ;~cat_Vg filled_sbj active
verb_complements_by_code ;~cat_Vg filled_sbj active
ip_ppl_active -CAT filled_sbj ing_participle
verb_phrase_layer filled_sbj ing_participle active
verb ing_participle ;~I

[w('VAG',';~I','going')]
verb_complements_top_layer ;~I filled_sbj active
verb_complements_by_code ;~I filled_sbj active

[]

5.4.5    Catenative verb with passive voice past participle clause complements

The verb_complements_by_code rule of section 4.10 for code ;~cat_Ve_passive_ involves selection of a passive past participle (-ed/-en) clause as its complement.

    The ip_ppl_passive rule of (5.25) finds a passive participle clause for overall structure labelled IP-PPL, together with any extension from the Ext parameter. This works with a subsequent call to verb_phrase_layer that sets the clause state to being passive.

(5.25)
ip_ppl_passive(Ext,Store,SbjType,Infl,[node(Label,[node('NP-LGS',[node('*',[])])|VL])|L],L) -->
  {
    atom_concat('IP-PPL',Ext,Label)
  },
  verb_phrase_layer(Store,SbjType,Infl,passive,VL,[]).

    As an example involving selection of a past participle (-ed/-en) clause as the complement of a catenative verb that is a form of BE, consider (5.26).

(5.26)
| ?- tphrase_set_string([w('BED',';~cat_Ve_passive_','Was'), w('PRO','he'), w('VVN',';~Tn','scolded')]), parse(clause_top_layer(matrix_interrogative,[])).

( (BED;~cat_Ve_passive_ Was)
  (NP-SBJ (PRO he))
  (IP-PPL-CAT (NP-LGS *)
              (VVN;~Tn scolded)))

yes

Calls to reach the output of (5.26) follow (5.27).

(5.27)
clause_top_layer matrix_interrogative
have_be_or_md_finite_layer ;~cat_Ve_passive_

[w('BED',';~cat_Ve_passive_','Was')]
optional_clitic_negation

[]
subject filled_sbj
noun_phrase -SBJ non_interrogative
noun_phrase_top non_interrogative
noun_head_full non_interrogative

[w('PRO','he')]
verb_complements_top_layer ;~cat_Ve_passive _filled_sbj active
verb_complements_by_code ;~cat_Ve_passive _filled_sbj active
ip_ppl_passive -CAT filled_sbj en_participle
verb_phrase_layer filled_sbj en_participle passive
verb en_participle ;~Tn

[w('VVN',';~Tn','scolded')]
verb_complements_top_layer ;~Tn filled_sbj passive
verb_complements_by_code ;~Tn filled_sbj passive

[]

5.5    Statement word order with clause middle layers

So far, we have only seen subjects from a subject call form the subject of a matrix interrogative. Statement word order, which also has to include a subject, is accomplished by a non-recursive call of clause_top_layer [rule 1] of (5.1) that first finds the subject with a subject call and then goes on to call clause_middle_layer of (5.28). Similarly, there are [rules 9 and 10] of (5.1) for parsing matrix interrogatives where the subject is an inherited interrogative noun phrase, which also go on to call clause_middle_layer of (5.28).

    The non-recursive rules of (5.28) set the clause voice parameter to active. They will also either:

    There are also recursive rules allowing initial adverb phrases with -NIM (unselected adverbial) function [rule 4] and coordination at this middle clause level [rule 5] with non-initial conjuncts gathered by calls to clause_middle_tail of (5.29).

(5.28)
clause_middle_layer(Store,SbjType,L1,L0) -->
  verb_phrase_layer(Store,SbjType,finite,active,L1,L0).
clause_middle_layer(Store,SbjType,L,L0) -->
  do_operator_layer(L,L1),
  verb_phrase_layer(Store,SbjType,do_supported_infinitive,active,L1,L0).
clause_middle_layer(Store,SbjType,L,L0) -->
  have_be_or_md_finite_layer(Code,L,L1),
  verb_complements_top_layer(Code,Store,SbjType,active,L1,L0).
clause_middle_layer(Store,SbjType,L,L0) -->
  adverb_phrase('-NIM',non_privileged,L,L1),
  clause_middle_layer(Store,SbjType,L1,L0).
clause_middle_layer(Store,SbjType,[node('ILYR',[node('ILYR',IL)|CL])|L],L) -->
  clause_middle_layer(Store,SbjType,IL,[]),
  clause_middle_tail(Store,SbjType,CL,[]).
(5.29)
clause_middle_tail(Store,SbjType,[node('CONJP',[CONJ,node('ILYR',IL)])|L],L) -->
  conj(CONJ),
  clause_middle_layer(Store,SbjType,IL,[]).
clause_middle_tail(Store,SbjType,[PU,node('CONJP',[node('ILYR',IL)])|L],L0) -->
  punc(non_final,[PU],[]),
  clause_middle_layer(Store,SbjType,IL,[]),
  clause_middle_tail(Store,SbjType,L,L0).

    As an example of didn't occurring with statement word order, consider (5.30).

(5.30)
| ?- tphrase_set_string([w('PRO','he'), w('DOD','','did'), w('NEG;_clitic_','n<apos>t'), w('VB',';~Ip','stand'), w('RP','up')]), parse(clause_top_layer(statement_order,[])).

( (NP-SBJ (PRO he))
  (DOD did)
  (NEG;_clitic_ n<apos>t)
  (VB;~Ip stand)
  (ADVP-CLR (RP up)))

yes

Calls to reach the output of (5.30) follow (5.31).

(5.31)
clause_top_layer statement_order
subject filled_sbj
noun_phrase -SBJ non_interrogative
noun_phrase_top non_interrogative
noun_head_full non_interrogative

[w('PRO','he')]
clause_middle_layer filled_sbj
do_operator_layer

[w('DOD','','did')]
optional_clitic_negation

[w('NEG;_clitic_','n<apos>t')]
verb_phrase_layer filled_sbj infinitive active
verb infinitive ;~Ip

[w('VB',';~Ip','stand')]
verb_complements_top_layer ;~Ip filled_sbj active
verb_complements_by_code ;~Ip filled_sbj active
adverb_phrase -CLR particle
adverb_phrase_layer particle
adv particle

[w('RP','up')]

    As an example with catenative modal ought occurring with statement word order, consider (5.32).

(5.32)
| ?- tphrase_set_string([w('PRO','he'), w('ADV','really'), w('MD',';~cat_Vt','ought'), w('TO','to'), w('VB',';~Ip','stand'), w('RP','up')]), parse(clause_top_layer(statement_order,[])).

( (NP-SBJ (PRO he))
  (ADVP-NIM (ADV really))
  (MD;~cat_Vt ought)
  (IP-INF-CAT (TO to)
              (VB;~Ip stand)
              (ADVP-CLR (RP up))))

yes

Calls to reach the output of (5.32) follow (5.33).

(5.33)
clause_top_layer statement_order
subject filled_sbj
noun_phrase -SBJ non_interrogative
noun_phrase_top non_interrogative
noun_head_full non_interrogative

[w('PRO','he')]
clause_middle_layer filled_sbj
adverb_phrase
adverb_phrase_layer
adv

[w('ADV','really')]
clause_middle_layer filled_sbj
have_be_or_md_finite_layer ;~cat_Vt
modal ;~cat_Vt

[w('MD',';~cat_Vt','ought')]
optional_clitic_negation

[]
verb_complements_top_layer ;~cat_Vt filled_sbj active
verb_complements_by_code ;~cat_Vt filled_sbj active
to

[w('TO','to')]
verb_phrase_layer filled_sbj infinitive active
verb infinitive ;~Ip

[w('VB',';~Ip','stand')]
verb_complements_top_layer ;~Ip filled_sbj active
verb_complements_by_code ;~Ip filled_sbj active
adverb_phrase -CLR particle
adverb_phrase_layer particle
adv particle

[w('RP','up')]

    As an example with modal may occurring with statement word order in a clause that also has catenative have followed by catenative been followed by catenative being, consider (5.34).

(5.34)
| ?- tphrase_set_string([w('D','A'), w('N','ship'), w('MD',';~cat_Vi','may'), w('HV',';~cat_Ve','have'), w('BEN',';~cat_Vg','been'), w('BAG',';~cat_Ve_passive_','being'), w('VVN',';~Tn','sunk')]), parse(clause_top_layer(statement_order,[])).

( (NP-SBJ (D A)
          (N ship))
  (MD;~cat_Vi may)
  (IP-INF-CAT (HV;~cat_Ve have)
              (IP-PPL-CAT (BEN;~cat_Vg been)
                          (IP-PPL-CAT (BAG;~cat_Ve_passive_ being)
                                      (IP-PPL-CAT (NP-LGS *)
                                                  (VVN;~Tn sunk))))))

yes

Calls to reach the output of (5.34) follow (5.35).

(5.35)
clause_top_layer statement_order
subject filled_sbj
noun_phrase -SBJ non_interrogative
noun_phrase_top non_interrogative
noun_phrase_initial_layer non_interrogative
determiner_phrase_layer non_interrogative
det non_interrogative

[w('D','A')]
internal_np_higher_layer
internal_np_lower_layer
noun

[w('N','ship')]
clause_middle_layer filled_sbj
have_be_or_md_finite_layer ;~cat_Vi
modal ;~cat_Vi

[w('MD',';~cat_Vi','may')]
optional_clitic_negation

[]
verb_complements_top_layer ;~cat_Vi filled_sbj active
verb_complements_by_code ;~cat_Vi filled_sbj active
verb_phrase_layer filled_sbj infinitive active
verb infinitive ;~cat_Ve

[w('HV',';~cat_Ve','have')]
verb_complements_top_layer ;~cat_Ve filled_sbj active
verb_complements_by_code ;~cat_Ve filled_sbj active
ip_ppl_active -CAT filled_sbj en_participle
verb_phrase_layer filled_sbj en_participle active
verb en_participle ;~cat_Vg

[w('BEN',';~cat_Vg','been')]
verb_complements_top_layer ;~cat_Vg filled_sbj active
verb_complements_by_code ;~cat_Vg filled_sbj active
ip_ppl_active -CAT filled_sbj ing_participle
verb_phrase_layer filled_sbj ing_participle active
verb ing_participle ;~cat_Ve_passive_

[w('BAG',';~cat_Ve_passive_','being')]
verb_complements_top_layer ;~cat_Ve_passive _filled_sbj active
verb_complements_by_code ;~cat_Ve_passive _filled_sbj active
ip_ppl_passive -CAT filled_sbj en_participle
verb_phrase_layer filled_sbj en_participle passive
verb en_participle ;~Tn

[w('VVN',';~Tn','sunk')]
verb_complements_top_layer ;~Tn filled_sbj passive
verb_complements_by_code ;~Tn filled_sbj passive

[]

Question

Why do the success and failure results of (5.36)–(5.39) obtain?

(5.36)
| ?- tphrase_set_string([w('WPRO','Who'), w('VBD',';~Tn','saw'), w('WPRO','who'), w('PUNC','?')]), parse(sentence).

(CP-QUE-MAT (IP-SUB (NP-506 (WPRO Who))
                    (NP-SBJ *ICH*-506)
                    (VBD;~Tn saw)
                    (NP-OB1 (WPRO who)))
            (PUNC ?))

yes
(5.37)
| ?- tphrase_set_string([w('WPRO','Who'), w('WPRO','who'), w('VBD',';~Tn','saw'), w('PUNC','?')]), parse(sentence).

no
(5.38)
| ?- tphrase_set_string([w('WPRO','Who'), w('DOD','','did'), w('NPR','John'), w('VB',';~Tn','see'), w('PUNC','?')]), parse(sentence).

(CP-QUE-MAT (IP-SUB (NP-568 (WPRO Who))
                    (DOD did)
                    (NP-SBJ (NPR John))
                    (VB;~Tn see)
                    (NP-OB1 *ICH*-568))
            (PUNC ?))

yes
(5.39)
| ?- tphrase_set_string([w('WPRO','Who'), w('DOD','','did'), w('WPRO','who'), w('VB',';~Tn','see'), w('PUNC','?')]), parse(sentence).

no

Question

Why do the success and failure results of (5.40)–(5.42) obtain?

(5.40)
| ?- tphrase_set_string([w('NPR','John'), w('HVD',';~cat_Ve','had'), w('HVN',';~Tn','had'), w('D','some'), w('N','tea'), w('PUNC','.')]), parse(sentence).

(IP-MAT (NP-SBJ (NPR John))
        (HVD;~cat_Ve had)
        (IP-PPL-CAT (HVN;~Tn had)
                    (NP-OB1 (D some)
                            (N tea)))
        (PUNC .))

yes
(5.41)
| ?- tphrase_set_string([w('NPR','John'), w('HVD',';~cat_Ve','had'), w('HVN',';~cat_Ve','had'), w('HVN',';~Tn','had'), w('D','some'), w('N','tea'), w('PUNC','.')]), parse(sentence).

no
(5.42)
| ?- tphrase_set_string([w('NPR','John'), w('HVD',';~cat_Ve','had'), w('HVN',';~cat_Vt','had'), w('TO','to'), w('HV',';~cat_Ve','have'), w('HVN',';~Tn','had'), w('D','some'), w('N','tea'), w('PUNC','.')]), parse(sentence).

(IP-MAT (NP-SBJ (NPR John))
        (HVD;~cat_Ve had)
        (IP-PPL-CAT (HVN;~cat_Vt had)
                    (IP-INF-CAT (TO to)
                                (HV;~cat_Ve have)
                                (IP-PPL-CAT (HVN;~Tn had)
                                            (NP-OB1 (D some)
                                                    (N tea)))))
        (PUNC .))

yes

Question

Why do the success and failure results of (5.43)–(5.47) obtain?

(5.43)
| ?- tphrase_set_string([w('DO','','Do'), w('NEG;_clitic_','n<apos>t'), w('BE',';~La','be'), w('ADJ','shy'), w('PUNC','.')]), parse(sentence).

(IP-IMP (DO Do)
        (NEG;_clitic_ n<apos>t)
        (BE;~La be)
        (ADJP-PRD2 (ADJ shy))
        (PUNC .))

yes
(5.44)
| ?- tphrase_set_string([w('PRO','I'), w('DOP','','do'), w('NEG;_clitic_','n<apos>t'), w('BE',';~La','be'), w('ADJ','shy'), w('PUNC','.')]), parse(sentence).

no
(5.45)
| ?- tphrase_set_string([w('PRO','I'), w('HVP',';~cat_Ve','have'), w('BEN',';~La','been'), w('ADJ','busy'), w('PUNC','.')]), parse(sentence).

(IP-MAT (NP-SBJ (PRO I))
        (HVP;~cat_Ve have)
        (IP-PPL-CAT (BEN;~La been)
                    (ADJP-PRD2 (ADJ busy)))
        (PUNC .))

yes
(5.46)
| ?- tphrase_set_string([w('PRO','I'), w('DOP','','do'), w('NEG;_clitic_','n<apos>t'), w('HV',';~cat_Ve','have'), w('BEN',';~LA','been'), w('ADJ','busy'), w('PUNC','.')]), parse(sentence).

no
(5.47)
| ?- tphrase_set_string([w('PRO','I'), w('DOP','','do'), w('NEG;_clitic_','n<apos>t'), w('HV',';~Tn','have'), w('D','any'), w('N','money'), w('PUNC','.')]), parse(sentence).

(IP-MAT (NP-SBJ (PRO I))
        (DOP do)
        (NEG;_clitic_ n<apos>t)
        (HV;~Tn have)
        (NP-OB1 (D any)
                (N money))
        (PUNC .))

yes

Question

At what levels of the clause structure do the coordinations of (5.48)–(5.51) happen?

(5.48)
[w('NS','Phones'), w('BED',';~cat_Vg','were'), w('BAG',';~cat_Ve_passive_','being'), w('VVN',';~Tn','tapped'), w('CONJ','and'), w('VVN',';~Tn.pr','put'), w('P-ROLE','out_of'), w('N','action'), w('PUNC','.')]
(5.49)
[w('NS','Phones'), w('BED',';~cat_Vg','were'), w('BAG',';~cat_Ve_passive_','being'), w('VVN',';~Tn','tapped'), w('CONJ','and'), w('VAG',';~Ipr','going'), w('P-ROLE','out_of'), w('N','action'), w('PUNC','.')]
(5.50)
[w('NS','Phones'), w('BED',';~cat_Vg','were'), w('BAG',';~cat_Ve_passive_','being'), w('VVN',';~Tn','tapped'), w('CONJ','and'), w('VBD',';~Ipr','went'), w('P-ROLE','out_of'), w('N','action'), w('PUNC','.')]
(5.51)
[w('NS','Phones'), w('BED',';~cat_Vg','were'), w('BAG',';~cat_Ve_passive_','being'), w('VVN',';~Tn','tapped'), w('CONJ','and'), w('NS','computers'), w('VBD',';~Ipr','went'), w('P-ROLE','out_of'), w('N','action'), w('PUNC','.')]

5.6    Existential there

An existential there (tagged EX) starts the ripple effect of needing a locally present verb with an existential verb code by setting the clause SbjType parameter to there_sbj. The existential verb licensed by this SbjType setting might be the main verb (with code ;~ex_V, ;~ex_Vp or ;~ex_Vpr) or a catenative verb (with code ;~ex_cat_Vt, ;~ex_cat_Vg or ;~ex_cat_Ve_passive_). Either way, this verb itself gives rise to the additional need for an existential subject (NP-ESBJ) as one of its selected complements.

    As an example with there and an existential verb with code ;~ex_V, consider (5.52).

(5.52)
| ?- tphrase_set_string([w('BEP',';~ex_V','Is'), w('EX','there'), w('D','a'), w('N','doctor')]), parse(clause_top_layer(matrix_interrogative,[])).

( (BEP;~ex_V Is)
  (EX there)
  (NP-ESBJ (D a)
           (N doctor)))

yes

Calls to reach the output of (5.52) follow (5.53).

(5.53)
clause_top_layer matrix_interrogative
have_be_or_md_finite_layer ;~ex_V

[w('BEP',';~ex_V','Is')]
optional_clitic_negation

[]
subject there_sbj

[w('EX','there')]
verb_complements_top_layer ;~ex_V there_sbj active
verb_complements_by_code ;~ex_V there_sbj active
noun_phrase -ESBJ non_privileged
noun_phrase_top non_privileged
noun_phrase_initial_layer non_privileged
determiner_phrase_layer non_privileged
det non_privileged

[w('D','a')]
internal_np_higher_layer
internal_np_lower_layer
noun

[w('N','doctor')]

    There is in principle no limit to the distance between the instance of there which sets the clause SbjType to there_sbj and the occurrence of the existential verb that needs this setting, provided this happens in the same clause and the there_sbj setting of the SbjType parameter is able to hold at the location where the existential verb occurs. As an example of distance, consider (5.54).

(5.54)
| ?- tphrase_set_string([w('EX','there'), w('MD',';~cat_Vt','ought'), w('TO','to'), w('HV',';~cat_Ve','have'), w('BEN',';~ex_V','been'), w('D','a'), w('N','doctor')]), parse(clause_top_layer(statement_order,[])).

( (EX there)
  (MD;~cat_Vt ought)
  (IP-INF-CAT (TO to)
              (HV;~cat_Ve have)
              (IP-PPL-CAT (BEN;~ex_V been)
                          (NP-ESBJ (D a)
                                   (N doctor)))))

yes

Calls to reach the output of (5.54) follow (5.55).

(5.55)
clause_top_layer statement_order
subject there_sbj

[w('EX','there')]
clause_middle_layer there_sbj
have_be_or_md_finite_layer ;~cat_Vt
modal ;~cat_Vt

[w('MD',';~cat_Vt','ought')]
optional_clitic_negation

[]
verb_complements_top_layer ;~cat_Vt there_sbj active
verb_complements_by_code ;~cat_Vt there_sbj active
to

[w('TO','to')]
verb_phrase_layer there_sbj infinitive active
verb infinitive ;~cat_Ve

[w('HV',';~cat_Ve','have')]
verb_complements_top_layer ;~cat_Ve there_sbj active
verb_complements_by_code ;~cat_Ve there_sbj active
ip_ppl_active -CAT there_sbj en_participle
verb_phrase_layer there_sbj en_participle active
verb en_participle ;~ex_V

[w('BEN',';~ex_V','been')]
verb_complements_top_layer ;~ex_V there_sbj active
verb_complements_by_code ;~ex_V there_sbj active
noun_phrase -ESBJ non_privileged
noun_phrase_top non_privileged
noun_phrase_initial_layer non_privileged
determiner_phrase_layer non_privileged
det non_privileged

[w('D','a')]
internal_np_higher_layer
internal_np_lower_layer
noun

[w('N','doctor')]

    If the existential verb is a catenative verb, then the subject parameter changes from its initial there_sbj value to having a filled_sbj value for the -CAT complement selected by the catenative verb. We can see this change happen by considering (5.56), with its existential verb that has code ;~ex_cat_Vg.

(5.56)
| ?- tphrase_set_string([w('BEP',';~ex_cat_Vg','Is'), w('EX','there'), w('Q;_nphd_','nobody_else'), w('VAG',';~I','coming')]), parse(clause_top_layer(matrix_interrogative,[])).

( (BEP;~ex_cat_Vg Is)
  (EX there)
  (NP-ESBJ (Q;_nphd_ nobody_else))
  (IP-PPL-CAT (VAG;~I coming)))

yes

Calls to reach the output of (5.56) follow (5.57).

(5.57)
clause_top_layer matrix_interrogative
have_be_or_md_finite_layer ;~ex_cat_Vg

[w('BEP',';~ex_cat_Vg','Is')]
optional_clitic_negation

[]
subject there_sbj

[w('EX','there')]
verb_complements_top_layer ;~ex_cat_Vg there_sbj active
verb_complements_by_code ;~ex_cat_Vg there_sbj active
noun_phrase -ESBJ non_privileged
noun_phrase_top non_privileged
noun_phrase_initial_layer non_privileged
noun_head

[w('Q;_nphd_','nobody_else')]
ip_ppl_active -CAT filled_sbj ing_participle
verb_phrase_layer filled_sbj ing_participle active
verb ing_participle ;~I

[w('VAG',';~I','coming')]
verb_complements_top_layer ;~I filled_sbj active
verb_complements_by_code ;~I filled_sbj active

[]

Question

Consider (5.58)–(5.60) taken from Lumsden (1988, p. 4), illustrating the ‘left most be condition’. What are the parse results, if any? Do the results reflect your expectations? Can you describe the cause of any parse failure?

(5.58)
[w('EX','There'), w('BED',';~ex_cat_Vg','was'), w('D','a'), w('N','man'), w('BAG',';~cat_Ve_passive_','being'), w('VVN',';~Tn','interrogated'), w('PUNC','.')]
(5.59)
[w('EX','There'), w('BED',';~cat_Vg','was'), w('BAG',';~ex_cat_Ve_passive_','being'), w('D','a'), w('N','man'), w('VVN',';~Tn','interrogated'), w('PUNC','.')]
(5.60)
[w('EX','There'), w('BED',';~cat_Vt','was'), w('TO','to'), w('HV',';~cat_Ve','have'), w('BEN',';~ex_cat_Ve_passive_','been'), w('D','a'), w('N','man'), w('VVN',';~Tn','interrogated'), w('PUNC','.')]