Underspecified SLASH somewhere? Where?

Looks like the SLASH is not OK somewhere here, since I have a filler-gap rule licensing a structure without any extraction happening anywhere, none of these nodes are extraction, and the top S is the filler-gap:

Screenshot from 2024-09-03 14-24-53

If I inspect the participle comido in the parse chart, starting from the bottom, I see:

Screenshot from 2024-09-03 14-27-40

This LAST 30 list thing is not OK, right? So, this lexical rule would be the culprit? Would be logical, as I wrote that rule. But what should it do, apart from identifying the daughter’s SLASH with the mother’s?

Actually, it looks like things are a little suspect even at the v_np*_native_le node.LIST & LAST aren’t identified for SLASH (or QUE) there.

Does this grammar do lexical threading, do you know?

Yes, it has these things:

; Lexical threading types

basic-one-arg := lex-item &
  [ ARG-ST < [ NON-LOCAL [ SLASH #slash,
                           REL #rel,
                           QUE #que ] ] >,
    SYNSEM.NON-LOCAL [ SLASH #slash,
                       REL #rel,
                       QUE #que ] ]
"""
; These non-zero argument types only amalgamate the non-local
; feature values of their complements. They do not introduce any
; non-local values of their own, nor do they bind off any non-local
; feature values. This assumes that the bottom of most long-distance
; dependencies is handled by a rule that constrains an argument 
; (either on the ARG-ST list or a valence list) to be a synsem of 
; type gap. Elements like English tough adjectives which bind off a 
; slash value will need a new type that doesn't amalgamate that slash 
; value. Elements which both introduce REL or QUE values and take one 
; or more arguments will require appropriate new types as well, which
; amalgamate everything but add a value in addition.
""".

Then it’s possible that the problem is actually with the subject, actually.

But also: how does this tree compare to one where you want a filler-gap rule?

@olzama, can you provide the YY input and the invocation to start ACE that you used for this example, so I can produce that parse tree for myself? I see from the grammar that the SRG does indeed use lexical threading, and can see (1) the optional-complement rule closes off the COMPS…SLASH list for the particle “comido”, and (2) the auxiliary “haber” says its VP complement has an empty SLASH list for its subject, so I’d expect the “comido” that results from applying the past-participle rule and then the optional-complement rule and then being the complement of that “haber” to end up with an empty SLASH list. But I must not be using the same entries and rules that your example shows when I try to recreate those unifications manually.

@ebender

que there is the complement. The subject is dropped via the optsubj rule. The said optsubj rule identifies the mother’s nonlocal features with the daughter’s.

The complement looks ok?..

Screenshot from 2024-09-11 15-31-29

I do get a couple trees with the complement extraction rule (which is what I want here). In those, the nonlocal features look like this:

Screenshot from 2024-09-11 15-35-31

@Dan I am using the LKB actually, but I can reproduce it with ACE:

(1, 0, 1, <0:3>, 1, “qué” “qué”, 0, “pt00000”, “pt00000” 0.71251348) (2, 0, 1, <0:3>, 1, “qué” “qué”, 0, “dt0cn0”, “dt0cn0” 0.71251348) (3, 0, 1, <0:3>, 1, “qué” “qué”, 0, “de0cn0”, “de0cn0” 0.71251348) (4, 0, 1, <0:3>, 1, “qué” “qué”, 0, “pe00000”, “pe00000” 0.71251348) (5, 1, 2, <4:6>, 1, “haber” “ha”, 0, “vaip3s0”, “vaip3s0” 0.99988891) (6, 2, 3, <7:13>, 1, “comer” “comido”, 0, “vmp00sm”, “vmp00sm” 0.98939291) (7, 2, 3, <7:13>, 1, “comer” “comido”, 0, “vmp00sm-pp”, “vmp00sm-pp” 0.98939291)

ace -g ace/srg.dat -y --yy-rules -l

@Dan please note that the version of the grammar is specifically this one: Debug broken slash · delph-in/srg@0ab8323 · GitHub - I will go ahead and send it to you as a tar archive.

Thanks for the copy of the buggy grammar, which helped in identifying the source of the trouble. The SLASH in your unwanted tree is indeed unbound in the VP dominating ‘comido’, and it is because the type vpart-haber_ilr in irtypes.tdl does not include any constraint on its SUBJ…SLASH value, unlike the other subtype of vpart-basic_ilr, namely vpart_ilr, which correctly includes this constraint:

SYNSEM.LOCAL.CAT.VAL.SUBJ < synsem & [ NON-LOCAL.SLASH 0-dlist ] >

This constraint is also needed in vpart-haber_ilr, since otherwise that rule only constrains the SLASH in the first element of its ARG-ST (a feature which gets dropped in phrasal types) and in its DTR feature, which is also deleted on the mother of each phrase.

Thank you, @Dan !

Ah, of course. That’s because I wanted this rule to apply to too many different things, I guess… To participles which go with the auxiliary haber and to haber itself, of which there are several versions, and one of them is like the English there is, and in the SRG it is specified as SUBJ < >.

Sounds like these things should be separate. I wanted to avoid more additional lexical rules, but sounds like at least another one is needed.