C# HermitCrab synthesis generates iiiaiii from aaaa for a simultaneous aa → iii rule, but its own analysis rejects that surface form
Les mainteneurs répondent en général sous 1 jour
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Accessibilité débutants
- 35/100
Piste de recherche
Start with the listed HermitCrab files under src/SIL.Machine.Morphology.HermitCrab/PhonologicalRules/, then trace how simultaneous synthesis and analysis handle overlapping matches in the pinned C# engine. Use the supplied aa → iii grammar with roots aaaa and aa to reproduce the mismatch. Done means synthesis and analysis agree for the literal grammar, or the sources and tests establish that the difference is intended.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Pinned C# HermitCrab (Machine 4d9b454d42a0da35e058641a65596339a79d115b) generates iiiaiii from root aaaa under one simultaneous rule aa → iii, yet its own analysis rejects iiiaiii as a surface form of that root. The same engine's analysis does accept ROOT|iiiaiii in a variant where the input carries an unbound feature variable.
Found while checking a Rust port of HermitCrab in PanGloss (sillsdev/PanGloss#199). The PanGloss port now rejects iiiaiii on analysis, matching C#, but its synthesis still produces iiiaiii, matching C#. The disagreement is inside the C# engine itself, and the sources do not say which behaviour the rule intends.
Next: decide what the rule intends for overlapping simultaneous matches. Then either make C# synthesis and analysis agree, or document the synthesis/analysis difference as intended.
Minimal repro
Grammar (strict XML, fully specified features):
- Segments:
a(+back, -round),i(-back, -round),u(+back, +round). - One phonological rule,
multipleApplicationOrder="simultaneous", with twoasegments as input and threeisegments as output:
<PhonologicalRule id="rExpand" multipleApplicationOrder="simultaneous">
<PhoneticInput><PhoneticSequence><Segment segment="cA" /><Segment segment="cA" /></PhoneticSequence></PhoneticInput>
<PhonologicalSubrules><PhonologicalSubrule><PhoneticOutput><PhoneticSequence><Segment segment="cI" /><Segment segment="cI" /><Segment segment="cI" /></PhoneticSequence></PhoneticOutput></PhonologicalSubrule></PhonologicalSubrules>
</PhonologicalRule>
- Two roots:
ROOTwith shapeaaaaandSHORTwith shapeaa.
Pinned C# run (XmlLanguageLoader.Load, then Morpher.GenerateWords and Morpher.ParseWord), output:
ROOT generate iiiaiii
SHORT generate iii
iii SHORT|iii
iiiaiii -
iiiiii -
aaaa -
So synthesis from ROOT yields iiiaiii, while analysis of iiiaiii yields no analysis. SHORT|iii is the positive control.
Variant where C# analysis accepts the form
Two input constraints over an unrestricted feature natural class, both carrying the same alpha variable on back (bound on the input side only), with roots ROOT/aaaa and SHORT/aa. Pinned C# generates and analyses iiiaiii as ROOT|iiiaiii. The PanGloss review recorded the same unbound-input behaviour in a second replay, so the literal grammar and this variant disagree within C# analysis.
Source locations
The PanGloss reviews read these files at 4d9b454d (paths confirmed with git ls-tree) under src/SIL.Machine.Morphology.HermitCrab/PhonologicalRules/:
SimultaneousPhonologicalPatternRule.cs: the review reads simultaneous synthesis as collecting matches and subrules against the original input before applying RHS operations.AnalysisRewriteRule.cs,FeatureAnalysisRewriteRuleSpec.csNarrowAnalysisRewriteRuleSpec.cs: the reviewed captured-output guard at lines 67–97 is a different case from this one.
The sources do not name the C# lines that decide overlap selection for the literal grammar. That is the open question.
PanGloss context
- PanGloss's Rust analysis was changed so that the literal grammar rejects
iiiaiii, matching C#. Its generation regression requires the C# synthesis outputiiiaiii, so the PanGloss change only touched analysis. - A PanGloss review (
ba8957dd) proposed matching the unbound-input two-constraint case to C# analysis; the reports do not confirm it has merged. - Oracle outputs, fixture files, and review reports are held in PanGloss's review workspace, not in this issue.
- Langage dominant
- C#
- Étoiles
- 29
- Forks
- 16
- Merge moyen
- 4 j 14 h
- PR mergées (30 j)
- 13
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Propose un modèle de pull request
- Aucun guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de sillsdev/machine
-
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
Les mainteneurs répondent en général sous 1 jour
-
HermitCrab: allomorph environments are tested at each piece of a root split by an infixPeut-être pris @johnml1135 l’a pris aujourd’hui. Ouverte
Difficulté 4/5 3-5 jours Accessibilité débutants 35/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 3/5 1-2 jours Accessibilité débutants 57/100
Les mainteneurs répondent en général sous 1 jour
-
HermitCrab analysis can spin on simultaneous rewrites with incompatible environmentsPeut-être pris @johnml1135 l’a pris il y a 1 jour. Ouverte
Difficulté 4/5 3-5 jours Accessibilité débutants 58/100
Les mainteneurs répondent en général sous 1 jour
-
HermitCrab: analysis metathesis drops the middle context that synthesis keepsPeut-être pris @johnml1135 l’a pris il y a 5 jours. Ouverte
Difficulté 3/5 1-2 jours Accessibilité débutants 78/100
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de sillsdev/machine
Issues similaires
-
Difficulté 1/5 1-3 heures Accessibilité débutants 90/100
ShareX/XerahS#316 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
SubtitleEdit/subtitleedit#16825 ·
Les mainteneurs répondent en général sous 1 jour
-
ci-flake kind:tests size:S type:bug
Difficulté 1/5 Moins d'une heure Accessibilité débutants 82/100
elsa-workflows/elsa-foundation#4058 · 1 réaction ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 77/100
games-on-whales/wolf-ui#23 ·
-
SkillsOuvertewayfinder:grilling
Difficulté 2/5 1-3 heures Accessibilité débutants 64/100
DigiBanks99/lopen#37 ·