This lab has two goals:
Correction: Contrary to what I said in lecture, MSG is not a HOOK feature. Rather, it is a feature parallel to HOOK. This is important, as we want to systematically identify the C-CONT.HOOK (and therefore the SYNSEM..CONT.HOOK) with the CONT.HOOK of the semantic head daughter if there is one. However, in many cases the CONT.MSG of the phrase and the CONT.MSG of the semantic head daughter will be different.
< h1, e2:SEMSORT:TENSE:ASPECT:MOOD, { h3:_cat_n_rel(x4:SEMSORT:BOOL:THIRD:PL), h5:indef_q_rel(x4,h7,h6), h8:_sleep_v_rel(e2,x4), h1:proposition_m_rel(h9)}, {h6 qeq h3, h9 qeq h8 }>
Things to note: The proposition_m_rel has the same handle as the (local) top, and the single argument of the proposition_m_rel qeqs the handle of the verb.
< h1, e2:SEMSORT:TENSE:ASPECT:MOOD, { h3:_cat_n_rel(x4:SEMSORT:BOOL:THIRD:PL), h5:indef_q_rel(x4,h7,h6), h8:_sleep_v_rel(e2,x4), h1:question_m_rel(h9), h9:proposition_m_rel(h10)}, {h6 qeq h3, h10 qeq h8 }>
The main difference between this and the previous mrs is addition of the question_m_rel. The local top handle is now the label of the question_m_rel, which takes the proposition_m_rel's handle directly as its sole argument. The argument of the proposition_m_rel is still related via qeq to the label of the _sleep_v_rel.
< h1, e2:SEMSORT:TENSE:ASPECT:MOOD, { h3:_cat_n_rel(x4:SEMSORT:BOOL:THIRD:PL), h5:indef_q_rel(x4,h7,h6), h8:_know_v_rel(e2,x4,h9), h10:_dog_n_rel(x11:SEMSORT:BOOL:THIRD:PL), h12:_indef_q_rel(x11,h14,h13), h15:_sleep_v_rel(e16:SEMSORT:TENSE:ASPECT:MOOD,x11), h9:proposition_m_rel(h17), h1:proposition_m_rel(h18)}, {h6 qeq h3, h13 qeq h10, h17 qeq h15, h18 qeq h8 }>
Now there are two proposition_m_rels, one for the matrix clause and one for the embedded clause. The arguments of the proposition_m_rels qeq the handles of the verbs, but the argument of _know_v_rel takes the handle of the lower proposition_m_rel directly.
< h1, e2:SEMSORT:TENSE:ASPECT:MOOD, { h3:_cat_n_rel(x4:SEMSORT:BOOL:THIRD:PL), h5:indef_q_rel(x4,h7,h6), h8:_know_v_rel(e2,x4,h9), h11:_dog_n_rel(x12:SEMSORT:BOOL:THIRD:PL), h13:_indef_q_rel(x12,h15,h14), h16:_sleep_v_rel(e17:SEMSORT:TENSE:ASPECT:MOOD,x11), h9:question_m_rel(h10), h10:proposition_m_rel(h18), h1:proposition_m_rel(h19)}, {h6 qeq h3, h14 qeq h11, h18 qeq h16, h19 qeq h8 }>
This one is just like the preceding one, except there is a question_m_rel in addition to the proposition_m_rel for the embedded clause. Note that _know_v_rel takes the handle of the embedded question_m_rel as its argument directly (no qeq) and the embedded question_m_rel takes the embedded proposition_m_rel as its argument directly (again, no qeq). The next link in the chain (between the argument of the embedded proposition_m_rel and the _sleep_v_rel) does have a qeq.
Once you've got all of these, matrix interrogatives with embedded declaratives or interrogatives should follow!
There is an updated version of matrix.tdl, which you'll need for this lab. Download it, reload your grammar, and test to make sure your coverage hasn't changed. If it has, talk to me, and I'll help you debug.
Your first step in this lab should be to cover the syntax of your clause types. Once that it working, worry about the semantics.
Everyone will need to implement a clause-embedding verb type (another subtype of verb-lex). This one should inherit from clausal-second-arg-trans-lex-item (defined in matrix.tdl) as well as verb-lex (defined in esperanto.tdl), and constrain the CAT value of its complement appropriately.
In addition, you may need to implement one or more of the following:
Think before you code! There's too much variety across languages in this domain for me to sketch out all the relevant possibilities in this lab, so you'll need to plan out what you're going to try. I'm happy to answer questions as you do.
To give you some guidance, I describe below what I did for English while testing out the matrix for this lab.
There are two parts to the problem of getting the semantics right for clauses:
The matrix has done most of the work for (1), it's just a matter of hooking it in to your grammar in the right way. Hopefully, the English examples below will be useful in this regard.
The analyses I'm going to describe here cover a lot of the possibilities, although you might find that what's useful for embedded interrogatives in English is actually what you need for matrix polar questions in your language, etc. That isn't to say that everything you need is here. If it doesn't seem to be, talk to me!
head-subj-phrase := basic-head-subj-phrase & head-final & declarative-clause & [ SYNSEM.LOCAL.CAT.VAL.COMPS < >, HEAD-DTR.SYNSEM.LOCAL.CAT.VAL.COMPS < >, C-CONT [ RELS < ! *top* ! >, HCONS < ! *top* ! > ]].
inv-lex-rule := const-ltol-rule & [ INFLECTED +, SYNSEM [ NON-LOCAL #non-loc, LOCAL [ CAT [ HEAD verb & [ AUX +, INV +, FORM #form], VAL [ SPR #spr, COMPS < #subj . #comps >, SUBJ < anti-synsem >, SPEC #spec ], MC #mc, HC-LIGHT #hc, POSTHEAD #ph ], CONT #cont, CTXT #ctxt, ARG-S #arg-s, AGR #agr ], LIGHT #light ], DTR.SYNSEM [ NON-LOCAL #non-loc, LIGHT #light, LOCAL [ CAT [ HEAD [ AUX +, FORM #form ], VAL [ SPR #spr, COMPS #comps, SUBJ < #subj & synsem >, SPEC #spec ], MC #mc, HC-LIGHT #hc, POSTHEAD #ph ], CONT #cont, CTXT #ctxt, ARG-S #arg-s, AGR #agr ]]].
inv-lex-rule := const-ltol-rule & [ INFLECTED +, SYNSEM.LOCAL.CAT [ HEAD verb & [ AUX +, INV +, FORM #form], VAL [ COMPS < #subj . #comps >, SUBJ < anti-synsem > ]], DTR.SYNSEM.LOCAL.CAT [ HEAD [ AUX +, FORM #form ], VAL [ COMPS #comps, SUBJ < #subj & synsem > ]]].
yes-no-q-phrase := interrogative-clause & head-only & [ SYNSEM.LOCAL.CAT [ VAL [ SPR #spr & <>, COMPS #comps & <>, SUBJ #subj & < anti-synsem >, SPEC #spec ], MC + ], C-CONT [ RELS < ! [ MARG #marg1 ], [ LBL #marg1, PRED proposition_m_rel, MARG #marg2 ] ! >, HCONS < ! qeq & [ HARG #marg2, LARG #hdtop ] ! > ], HEAD-DTR.SYNSEM.LOCAL [ CAT [ VAL [ SPR #spr, COMPS #comps, SUBJ #subj, SPEC #spec ], HEAD.INV + ], CONT [ MSG no-msg, HOOK.LTOP #hdtop ]]].
root := phrase & [ SYNSEM.LOCAL [ CAT [ HEAD verb & [ FORM fin ], VAL [ SUBJ < anti-synsem >, COMPS null ]], CONT.MSG message ]].To make this effective, I also had to say something about the MSG value of the head-comp rule. In anticipation of my treatment of embedded clauses, I make it depend on the MSG value of the daughter. (This means that I will have to rely on other constraints conspiring with this one to rule certain other things as matrix clauses. So far, it works.)
head-comp-phrase := basic-head-comp-phrase & head-initial & [ SYNSEM.LOCAL.CONT.MSG #msg, HEAD-DTR.SYNSEM.LOCAL.CONT.MSG #msg ].Accordingly, I constrain verbs to be [MSG no-msg].
verb-lex := basic-verb-lex & [ SYNSEM.LOCAL [ CAT [ HEAD verb & [ INV - ], VAL [ SPR < >, SUBJ < #subj & [ LOCAL [ CAT.VAL.SPR < >, CONT.HOOK.INDEX #xarg ]] >, SPEC < > ] ], ARG-S < #subj, ... >, CONT [ MSG no-msg, HOOK.XARG #xarg ]]].
do-support-lex := no-hcons-lex-item & [ SYNSEM.LOCAL [ CAT [ HEAD verb & [ AUX +, INV - ], VAL [ SUBJ < #subj & [ LOCAL [ CAT [ HEAD noun & [ CASE nom ], VAL.SPR < >], CONT.HOOK.INDEX #ind ]]>, SPR < >, COMPS < #comps & [ LOCAL [ CAT [ HEAD verb & [ FORM base, AUX - ], VAL [ SUBJ < unexpressed-reg >, COMPS < >]], CONT.HOOK #hook & [ XARG #ind ]]] >, SPEC < > ]], CONT [ HOOK #hook, RELS < ! ! >, MSG no-msg ], ARG-S < #subj, #comps > ]].
no-mod := head & [ MOD < >]. verbal := no-mod & [ FORM form ]. verb := verbal & [ AUX bool, INV bool ]. comp := verbal.
complementizer-lex := basic-one-arg & [ SYNSEM.LOCAL [ CAT [ HEAD comp, VAL [ SPR < >, SUBJ < anti-synsem >, COMPS < #comps & [ LOCAL [ CAT [ HEAD verb & [ FORM fin ], VAL [ SUBJ < anti-synsem >, COMPS < > ]], CONT [ MSG.PRED proposition_m_rel, HOOK.INDEX #ind ]]] >, SPEC < > ]], CONT.HOOK.INDEX #ind, ARG-S < #comps > ]].
that-comp-lex := complementizer-lex & [ SYNSEM.LOCAL [ CAT.VAL.COMPS < [ LOCAL.CONT [ MSG #msg, HOOK.LTOP #ltop ]] >, CONT [ MSG #msg, HOOK.LTOP #ltop, RELS < ! ! >, HCONS < ! ! > ]]]. whether-comp-lex := complementizer-lex & [ SYNSEM.LOCAL [ CAT.VAL.COMPS < [ LOCAL.CONT.HOOK.LTOP #marg ] >, CONT [ MSG message & #msg & [ LBL #ltop, PRED question_m_rel, MARG #marg ], HOOK.LTOP #ltop, RELS < ! #msg ! >, HCONS < ! ! > ]]].
clausal-comp-verb-lex := main-verb-lex & clausal-second-arg-trans-lex-item & [ SYNSEM.LOCAL [ CAT.VAL.COMPS < #comps & [ LOCAL [ CAT [ HEAD verbal & [ FORM fin ], VAL [ SUBJ < anti-synsem >, COMPS < > ], MC - ], CONT.MSG message ]]>, ARG-S < [] , #comps > ]].