C# HermitCrab synthesis generates iiiaiii from aaaa for a simultaneous aa → iii rule, but its own analysis rejects that surface form
Maintainer antworten meist innerhalb von 1 Tag
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 5/5
- Geschätzter Aufwand
- Über eine Woche
- Anfängerfreundlichkeit
- 35/100
Rechercherichtung
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.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
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.
- Vorherrschende Sprache
- C#
- Sterne
- 29
- Forks
- 16
- Ø Merge
- 4 T. 14 Std.
- Gemergte PRs (30 T.)
- 13
Entwicklungsumgebung
- Kein Dockerfile und keine Docker-Compose-Datei
- Hat eine Pull-Request-Vorlage
- Kein Beitragsleitfaden
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus sillsdev/machine
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
Maintainer antworten meist innerhalb von 1 Tag
-
HermitCrab: allomorph environments are tested at each piece of a root split by an infixEvtl. vergeben @johnml1135 hat das heute übernommen. Offen
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 35/100
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 57/100
Maintainer antworten meist innerhalb von 1 Tag
-
HermitCrab analysis can spin on simultaneous rewrites with incompatible environmentsEvtl. vergeben @johnml1135 hat das vor 1 Tag übernommen. Offen
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 58/100
Maintainer antworten meist innerhalb von 1 Tag
-
HermitCrab: analysis metathesis drops the middle context that synthesis keepsEvtl. vergeben @johnml1135 hat das vor 5 Tagen übernommen. Offen
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 78/100
Maintainer antworten meist innerhalb von 1 Tag
Alle Issues in sillsdev/machine
Ähnliche Issues
-
Schwierigkeit 1/5 1-3 Stunden Anfängerfreundlichkeit 90/100
ShareX/XerahS#316 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
SubtitleEdit/subtitleedit#16825 ·
Maintainer antworten meist innerhalb von 1 Tag
-
ci-flake kind:tests size:S type:bug
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 82/100
elsa-workflows/elsa-foundation#4058 · 1 Reaktion ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 77/100
games-on-whales/wolf-ui#23 ·
-
SkillsOffenwayfinder:grilling
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 64/100
DigiBanks99/lopen#37 ·