I didn’t test all aspects of my append-list version of the Matrix – and that includes the behaviour of the NON-LOCAL lists! So don’t assume it’s doing the right thing here… I know it does the right thing for RELS, HCONS, ICONS, but I won’t promise more than that without looking more closely!
There are some edge cases where converting a grammar from diff-lists to append-lists would lead to different behaviour, but these are cases where the use of diff-lists is fragile – for example, if a grammar exploits the fact that a diff-list can have extra elements on the LIST after the LAST (e.g. a 0-dlist identifies the LIST and LAST but the LIST can still be non-empty, so that diff-list appends are possible). May or may not be relevant here, but I thought I’d mention it.
@guyemerson would you be interested in looking more closely? I am not sure at this point how to proceed with this. (My ultimate goal is to use these lists to model multiple extraction).
Right now the only thing I can guess (but it is pure guessing as I don’t yet have a good understanding of the mechanics) is that the VP somehow ended up hard-constrained to be SLASH-empty… and so it cannot be the daughter of subject extraction. It sounds weird but that’s the only direction I can come up with for now.
Maybe after the ACL deadline
The specific problem that I was having here were the types which were created in parallel to diff-list types (0-1-alist, 1-alist). @ebender suggested that I remove them entirely for now and just have SLASH be of type append-list everywhere.
This fixed the problem and I can now extract the subject and form a wh-question properly. Thank you, @ebender!
(The question of how to do something like adjunct extraction without specific constraints on lists length is for now open.)
I can see one problem – I didn’t create a subtype inheriting from both 1-list and cons-copy. We would need to add
1-list-copy := 1-list & cons-copy.. But then 0-1-list and list-copy will be assigned a glb-type… which is probably okay, but probably worth checking this in practice, and maybe worth defining the glb explicitly just for clarity.
The above omission might explain the strange unification failures, because my wrapper-type grammar has the glb of 0-1-list and list-copy being null-copy. This might be enough to explain the null-copy types in your screenshots.
Could you share the grammars with and without 0-1-alist types? I’ll like to check if anything else is going wrong.
By the way, what is the right way of saying: an append-list of length one or more?
I am finding that simply underconstraining SLASH lists is very confusing. I probably must specify whether the list is empty or non-empty, at the very least, in my filler-head rules… (see related thread)
[ SLASH.LIST < [ ], ... > ]
cons is a list of length one or more, so the simplest way is:
My impression from the related thread is that some of the confusion comes from lexical threading rather the behaviour of append-lists. So this may not be the right solution for your use case.