Trigger rules for case marking adpositions working with ace but not lkb

Hi all,

I have students reporting that trigger rules of this form:

erg-marker_hë_gr_1 := arg0e_gtr &
  [ CONTEXT.RELS.LIST < [ ARG1 individual & #i ] >,
    FLAGS [ SUBSUME < #i >,
            TRIGGER "erg-marker_hë" ] ].

are working in ace, but not in the LKB. We’re using LKB 5.6 from June 2023. I believe that other trigger rules are still working, just not this type.

@johnca do you have any guesses for us? Thanks!

@ebender I have no intuitions about trigger rules so I’m afraid I can’t make any guesses. Could you please email me a complete grammar and a brief description of the desired behaviour? Thanks.

Both ACE and the LKB are presumably happy with Unicode, but it would be worth checking whether the presence of a diacritic-marked character in the name of the rule could cause trouble: just change the name of the rule to not use that character and see if the behavior changes. I can’t see anything else in the rule that should be at all surprising, and it should fire a lot since any MRS with an EP containing a non-empty ARG1 should cause this ergative marker to be inserted into the chart.

Thanks, @Dan, this might conceivably be a Unicode issue. The name of the rule shouldn’t matter, but in Unicode the string "ë" can formed either from a single codepoint U+00EB or from the ASCII character 'e' followed by U+0308 (combining-diaeresis). So the difference might come about from whether the attempt to match FLAGS.TRIGGER is done on normalised strings or not… or something like that. Impossible to say without an actual example.

Apologies for going silent on this one! I have been unable to create a minimal working example, and so need to ask the students for permission to share their grammar.

Meanwhile, I discovered that with the version of the LKB I’m using (LKB 5.6 (built with SBCL, 07:15:03 20 Jun 2023), and similarly the version that’s on the current Ubuntu+LKB, which was updated late last year) the following constraint that we put in to get the ace generator to behave causes the LKB to quickly fail in generation on all sentences:

;;; qeq rule for multiply embedded clauses
qeq :+
[ HARG.INSTLOC #il,
LARG.INSTLOC #il ].

Without that, the ace generator tends to swap around arguments between matrix and embedded clauses. With it, the LKB is unhappy…

Does it help to set the parameter *gen-equate-qeqs-p* to t?

Yes, that seems to solve it!

The next oddity is that the LKB doesn’t seem to be respecting the initial symbol in generation. That is, if I parse dogs sleep and then generate from the resulting MRS, I get back both dogs sleep and that dogs sleep … even though that dogs sleep (correctly) won’t parse as a stand-alone sentence. Is there another parameter I’m missing?

Great, I’m glad that *gen-equate-qeqs-p* is the answer. I think ACE always equates qeqs, whereas it’s an option in the LKB (default not).

Regarding the initial symbol in generation, the parameter you need is *gen-start-symbol* (I added it in 2018 and it’s only in LKB-FOS). For convenience, both this and the analogous parser *start-symbol* parameter are in the ‘Set Options’ dialog.

Thank you! I guess I should probably put both of these things in the globals.lsp file provide by the Grammar Matrix customization system.