With my wh-tests now passing without lexical threading, I started looking into information structure failures.
The information structure library has so-called “non-canonical” head subject and head-complement rules, the point of which is (I think) to license non-canonical word order given certain information structure.
In the pseudolanguage I am looking at right now, for example, with lexical threading, in matrix.tdl:
; SSH 2013-04-08 non-canonical and non-matrix clausal head-comp-phrase ; This type cannot be a root node by itself ([MC -]). ; This typed phrase is supposed to be combined with a filler-phrase. basic-head-comp-nmc-phrase := head-valence-phrase & head-compositional & binary-headed-phrase & [ SYNSEM phr-synsem & [ LOCAL.CAT [ MC -, VAL [ SUBJ < >, SPR #spr ], POSTHEAD #ph, HC-LIGHT #light ], LIGHT #light ], HEAD-DTR.SYNSEM [ LOCAL.CAT [ VAL [ SUBJ < [ LOCAL #slash ] >, SPR #spr ], HC-LIGHT #light, POSTHEAD #ph ], NON-LOCAL.SLASH [ LIST < #slash > ] ], NON-HEAD-DTR.SYNSEM canonical-synsem, C-CONT [ RELS.LIST < >, HCONS.LIST < >, ICONS.LIST < > ] ].
…and then further in customization:
head-comp-nmc-phrase := basic-head-comp-nmc-phrase & head-initial & [ SYNSEM [ R-PERIPH -, LOCAL.CAT.VAL.COMPS #comps ], HEAD-DTR.SYNSEM [ LOCAL.CAT.VAL.COMPS < #synsem . #comps >, NON-LOCAL.SLASH.LIST < [ CONT.HOOK.ICONS-KEY non-topic ] > ], NON-HEAD-DTR.SYNSEM #synsem ].
This results in 4 trees for the “sentence” TV PN CN (transitive verb proper noun common noun):
Where there are two NP on top of each other, that’s the narrow-focused-phrase:
narrow-focused-phrase := head-only & [ C-CONT [ HOOK #hook, RELS.LIST < >, HCONS.LIST < >, ICONS.LIST < focus-or-topic & #icons & [ IARG2 #target ] > ], SYNSEM [ LIGHT -, INFOSTR-FLAG +, LOCAL [ CAT.VAL [ SPR < >, SUBJ < >, COMPS < >, SPEC < > ], CONT.HOOK [ INDEX #target, ICONS-KEY #icons ] ] ], HEAD-DTR.SYNSEM [ LIGHT -, INFOSTR-FLAG -, LOCAL [ CAT.HEAD noun, CONT [ HOOK #hook, ICONS.LIST < > ] ] ] ].
The single NP is the bare-NP rule.
Now, without lexical threading, I can get the same 4 trees (and MRS) as follows, by saying that the head daughter’s SUBJ’s LOCAL is the mother’s SLASH:
basic-head-comp-nmc-phrase := head-compositional & binary-headed-phrase & [ SYNSEM phr-synsem & [ LOCAL.CAT [ MC -, VAL [ SUBJ < >, SPR #spr ], POSTHEAD #ph, HC-LIGHT #light ], LIGHT #light, NON-LOCAL.SLASH [ LIST < #slash > ] ], HEAD-DTR.SYNSEM [ LOCAL.CAT [ VAL [ SUBJ < [ LOCAL #slash ] >, SPR #spr ], HC-LIGHT #light, POSTHEAD #ph ] ], NON-HEAD-DTR.SYNSEM canonical-synsem, C-CONT [ RELS.LIST < >, HCONS.LIST < >, ICONS.LIST < > ] ].
…and then similarly fixing the customization so it places the constraint on the mother instead of the daughter. This gives me the exact same result as the gold.
However, this does not say anything about any of the other nonlocal features. If I make the rule inherit from the new basic-nonloc-phrase (which appends all nonlocal features of the daughters on the mother), then I lose two of the trees. Specifically, the only two trees which remain are the ones which have the lower NP narrow-focused. The lower bare NP ones are gone.
Assuming this is a regression, why would something like that happen? I of course happily get an interactive unification result, unifying the bare NP from the chart with the non-head daughter of the comp-nmc rule… But that doesn’t surprise me anymore; I think interactive unification may not always work with the new append types (given how often I get the “surprises” recently…)