Lost ICONS in some of the infostructure tests

Related to this but I will start a new thread as this is a different example and issue.

In some of the information structure tests, we at some point lost the ICONS. In the example below, I think that is because of the lexical rule.

Screen Shot 2020-07-27 at 2.43.22 PM

The second V is the lexical rule that adds the -fc (focus) suffix. I am assuming it should add something to the ICONS but it does not, the mother’s ICONS is empty:

Am I right in thinking it should probably add something to the ICONS, seeing as it’s a focus marker?

If I am right, where should I look for fixing this?

Right now, the rule is a no-ccont rule:

v1-lex-rule-super := add-only-no-ccont-rule & infl-lex-rule &
  [ DTR verb-lex ].

r1-lex-rule := v1-lex-rule-super &
                   CONT.HOOK.ICONS-KEY semantic-focus ] ].
no-ccont-lex-rule := no-rels-hcons-lex-rule &
  [ C-CONT.ICONS 0-alist ].

What kind of rule should it instead be?

no-rels-hcons-lex-rule := lex-rule &
  [ C-CONT [ RELS 0-alist, HCONS 0-alist  ] ].

and then what should it say about the ICONS? @sanghoun

Could you share the choices file for this? At least the info-str and morphology sections.

Dear Olga,

ICONS-KEY just aims to specify the type of information structure assigned to the element. The use of ICONS-KEY does not guarantee the presence of an element in the ICONS list. I think the ICONS element needs to be inserted on the C-CONT in this case. That is, I guess this is not an instance of “no-ccont-rule”.



Thank you, Sanghoun.

It is still mysterious to me that this code is just missing. It is hard to imagine it would happen by accident.

Right now the lexical rule simply goes through this function:

    def validate_supertypes(x):
        if pc.is_lex_rule:
            if not any(st in LEX_RULE_SUPERTYPES for st in x.supertypes):
                # if str(pc.identifier()) in _infostr_pc.values():
                #   x.supertypes.add('add-only-no-rels-hcons-rule')
                if pc.has_incorporated_stems():
                    # TJT 2014-08-21: Incorporated Adjective lexical rule supertypes
                elif pc.has_valchg_ops():
                    # CMC 2017-02-20: Valence-changing operations need
                    # less-constrained supertype
                elif pc.has_evidential():
                    # MTH 2017-11-13: Lexical rule types that contribute
                    # evidential semantics must be able to add a predicate
                    # in CCONT
                # EKN 2017-12-18 Possessive lexical rules have too much variation to 
                # add any supertype but lex-rule, but adding this causes inheritance issues.
                # So no supertypes for possessive rules are added here; instead, supertypes
                # are handled by write_possessive_behavior(). If any other lrt shares a pc
                # with a possessive rule, it wil have its specific supertypes added
                # in write_possessive_behavior() as well.
                elif not pc.has_possessive():

(I note the commented out code which has something to do with infostructure but that infostr_pc thing is not defined.)

And even if I add similar code to avoid adding no-ccont to the supertypes,
any code which would add ICONS constraints to a lexical rule is still just entirely missing. How could this be by accident?.. Hmm.

OK, I think I know how to fix this though, assuming that’s the right thing to do. Thanks :slight_smile: I will continue on github…

If focus is being added on the noun itself, by an affix:

noun-FOC verb

Whose responsibility should it be to establish the link between the event variable and the referent? Here’s the gold MRS:

But at the time the affix is added, there is no link between the x3 and the e2. So I can add something to the ICONS but it can’t be that link, can it? (It was easy to do for the affixes which go on the verb…)

@sanghoun, do you happen to remember, have you actually finished the affix marking work? I am starting to wonder if maybe you put some gold MRS together by hand, maybe? And then ran out of time and did not finish (and the tests were passing because the old system was not comparing ICONS).

I cannot locate any code that does this kind of work (put ICONS in the lexical rule). I added a couple new rules myself but there is a lot more to do and I am wondering if I should instead remove the remaining tests for now. There are lots of possibilities, for example, in this other test, the gold is:

Screen Shot 2020-07-29 at 2.26.17 PM

There is no lexical rule type that does this kind of work. Seems like I’d need to write it from scratch and then also ensure that it only gets called for this specific set of choices. Although the choices in this case are just:


nothing about contrastive focus pr topic; probably needs to be inferred, so, I feel like, unless I am missing something and all of this was already implemented, I’d be doing original information structure work which might take too long and not let me do other things.

Or maybe someone can help me locate that code after all! Usually when something like this happens, it means the code should be there, it just no longer gets called. But in this case it doesn’t look like it. I think I’ve looked in most places where this could live (information structure, morphotactics, lexbase).

The customize_information_structure_marker() function (which in principle does take irules as a parameter but isn’t currently doing anything with it) just says:

        else:#affix or adp

This looks like future work to me; I am just puzzled where the gold MRS came from.

As a small update on this, the example above in fact does have meaningful choices associated with the MRS result. It’s just that they are in the lexical rule specification, not in the information structure choices. But the code that would do something like that I still could not find.