Skip to content

POS-scoped deletion blocks metathesis analysis of other words (ParseWord incomplete) #520

Description

@johnml1135

A part-of-speech-scoped deletion rule makes metathesis words of another part of speech unparseable. Forward generation still produces them, so ParseWord is incomplete.

Repro

Start from conformance fixture languages/metathesis-phase-isolation (PR #480, 3421588) and add one deletion rule to the surface Morphology stratum, scoped to a part of speech that no metathesis word uses:

<PhonologicalRule id="prHDel">
  <PhoneticInput><PhoneticSequence><SimpleContext naturalClass="ncH" /></PhoneticSequence></PhoneticInput>
  <PhonologicalSubrules>
    <PhonologicalSubrule requiredPartsOfSpeech="posRedup">
      <PhoneticOutput><PhoneticSequence /></PhoneticOutput>
      <Environment>
        <LeftEnvironment><PhoneticTemplate><PhoneticSequence><SimpleContext naturalClass="ncVowel" /></PhoneticSequence></PhoneticTemplate></LeftEnvironment>
        <RightEnvironment><PhoneticTemplate><PhoneticSequence><SimpleContext naturalClass="ncVowel" /></PhoneticSequence></PhoneticTemplate></RightEnvironment>
      </Environment>
    </PhonologicalSubrule>
  </PhonologicalSubrules>
</PhonologicalRule>

(ncH = <SegmentNaturalClass id="ncH"><Segment segment="cH" /></SegmentNaturalClass>; add prHDel to the Morphology stratum's phonologicalRules.)

Word Root stratum / POS Expected Got
nui SimpleMeta / posSimpleMeta NIU none
mu+i ComplexMeta / posComplexMeta MI+3SGU none

Both words still generate forward (they are in the fixture's expected set, and removing prHDel restores them). The rule can never apply to either word in synthesis: wrong part of speech, and their roots live in deeper strata.

What seems to happen

Unapplying the deletion inserts an optional h between every vowel pair, before the part of speech is known, so n u (h) i. The deeper strata's metathesis rules then fail to match u–i adjacency across that optional node, so neither the (h)-present nor the (h)-absent reading reaches the metathesis unapplication. The optional node should be skippable, as it is for rewrite rules.

Notes

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    • Status
      🆕 New

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions