Code-review: intersective-mod-lex in matrix.tdl

Based on the recent adverbs discussion, here’s a proposed change to matrix.tdl:

CURRENT:

intersective-mod-lex := no-hcons-lex-item & 
[ SYNSEM [ LOCAL.CAT.HEAD.MOD < [ LOCAL intersective-mod &
					  [ CONT.HOOK.INDEX #ind ]] >,
	     LKEYS.KEYREL.ARG1 #ind ] ].

PROPOSED:

basic-intersective-mod-lex := lex-item & 
[ SYNSEM [ LOCAL.CAT.HEAD.MOD < [ LOCAL intersective-mod &
					  [ CONT.HOOK.INDEX #ind ]] >,
	     LKEYS.KEYREL.ARG1 #ind ] ].

intersective-mod-lex :=  basic-intersective-mod-lex & no-hcons-lex-item.

; OZ 2019-05-22 Adverbs may need multiple relations (e.g. "where" we want
; to correspond to "to which place"), so we need to be able to
; use HCONS.

intersective-adverb-lex := basic-intersective-mod-lex.

no-mod-lex := no-hcons-lex-item &
  [ SYNSEM.LOCAL.CAT.HEAD.MOD < > ].

The regression tests pass.

I am interested in particular in how to phrase the comment so that it is as helpful as possible for the next generation of (new, inexperienced) developers.

; OZ 2019-05-22 Adverbs may need multiple relations (e.g. "where" we want
; to correspond to "to which place"), so we need to be able to
; use HCONS.

Maybe: “Some adverbs may contribute multiple relations, such as the analysis of “where” in the ERG that results in the predicates loc_nonsp, place_n, and which_q (effectively “to which place”). For these we need to be able to use HCONS.” ?

no-mod-lex := no-hcons-lex-item &
  [ SYNSEM.LOCAL.CAT.HEAD.MOD < > ].

This hasn’t changed, right?

Also, if I may pick some nits, this may be a good time to correct some terminology. intersective is not appropriate when what we mean is non-scopal, because intersective modification is just one kind of modification where we equate scope handles (or ltops), in addition to subsective (“cognitive scientist”) and intensional (“fake gun”). These are the examples from my dissertation, but there are some other categories, I think.

There are just a handful of places in the Matrix code (including the GMCS) where intersective or isect pops up, so it shouldn’t be hard to fix in the code, but we’d also need to update the wikis, 567 slides, etc., and also it might some mental effort to make the switch after more than a decade of use. So I think @ebender would need to sign off on such a change.

1 Like

It’s not the number of relations which is relevant for HCONS. I think it would be worth splitting the comment into two parts, to explain firstly why most intersective/non-scopal modifiers don’t need HCONS, and then secondly why a few do.

Intersective/non-scopal modifiers take the modified expression as a semantic argument (e.g. ARG1), and share a label. This doesn’t require HCONS.

In a few cases, we may need HCONS for something else. One example is when the modifier also introduces a quantifier (like “where”). Another example is when the modifier also takes a clausal complement (like “easy” and “eager” adjectives).

1 Like

@goodmami is right that the use of intersective for non-scopal (inherited from the ERG) is inaccurate and should be fixed, but that’s in a lot of places, so let’s hold off for now.

As for the comment – it sounds like you’ve gotten good feedback already. My only further suggestion is to put the comment above basic-intersective-mod-lex, rather than intersective-mod-lex.

Thank you everyone.

Here’s the new version.

; OZ 2019-05-23 Some nonscopal modifiers (such as adverbs like "where", "which place") need quantifiers, 
; which requires the use of the HCONS feature to link the handles between the relations properly.
; Other nonscopal modifiers take the modified expression as their semantic
; argument (such as ARG1) and share a label, which does not require linking handles via HCONS.
; basic-nonscopal-mod-lex is the supertype which makes both subtypes possible.

basic-nonscopal-mod-lex := lexitem
  [ SYNSEM [ LOCAL.CAT.HEAD.MOD < [ LOCAL intersective-mod &
					  [ CONT.HOOK.INDEX #ind ]] >,
	     LKEYS.KEYREL.ARG1 #ind ] ].


; OZ 2019-05-23 The use of "intersective" below is incorrect; it should just be 
; "nonscopal". 
; We are leaving it as intersective for now because it needs to be changed in lots 
; of places, inlucing Wikis.

intersective-mod-lex := basic-nonscopal-mod-lex & no-hcons-lex-item.

nonscopal-adverb-lex := basic-nonscopal-mod-lex.

I would change “other” to “all”, and switch the order (“All nonscopal modifiers… Some nonscopal modifiers”). In some cases the label-sharing and argument-taking involve different parts of the modifier (like “whose tail wagged”, where the wag rel shares a label but the poss rel takes the argument), but that kind of detail is probably not necessary here.

It is very confusing to define an intersective modifier as a no-HCONS nonscopal modifier. If nonscopal modifiers are always referred to as intersective, at least this is consistent. Using intersective in only one case makes the terminology even harder to follow.

Indeed: All modifiers that attach via the isect-mod-phrase (and its supertypes) share their LTOP with their MOD’s LTOP and take their MOD’s INDEX as their ARG1.

Some of these have decomposed lexical semantics, including quantifiers on their RELS list, which means they’ll have non-empty HCONS lists.

Others don’t, and therefore have empty HCONS lists, as opposed to scopal modifiers which all have at least one qeq on the HCONS relating their ARG1 to their MOD’s LTOP.

OK. @ebender, agreed that “intersective” should be used throughout?

; OZ 2019-05-23 The use of "intersective" below is incorrect; it should just be 
; "nonscopal". 
; We are leaving it as "intersective" for now because it needs to be changed in lots 
; of places, inlucing Wikis.

; OZ 2019-05-23 
; All nonscopal modifiers take the modified expression as their semantic
; argument (such as ARG1), which does not require HCONS.
; Some have empty HCONS lists (as opposed to 
; scopal modifiers which all have at least one qeq on the HCONS relating their ARG1 to 
; their MOD’s LTOP).
; Others (e.g. adverbs like "where", "which place") 
; have decomposed lexical semantics, including quantifiers on their RELS list, 
; which means they’ll have non-empty HCONS lists 
; linking the handles of relations. 

basic-intersective-mod-lex := lex-item &
  [ SYNSEM [ LOCAL.CAT.HEAD.MOD < [ LOCAL intersective-mod &
					  [ CONT.HOOK.INDEX #ind ]] >,
	     LKEYS.KEYREL.ARG1 #ind ] ].

intersective-mod-lex := basic-intersective-mod-lex & no-hcons-lex-item.

intersective-adverb-lex := basic-intersective-mod-lex.

Yes – keeping this as consistently “intersective” with one disclaimer somewhere is good.