diff --git a/conformance-stress/README.md b/conformance-stress/README.md new file mode 100644 index 000000000..ab41cf68c --- /dev/null +++ b/conformance-stress/README.md @@ -0,0 +1,50 @@ +# Stress fixtures + +These grammars are for timing and optimization work on the analysis pass. They are not conformance +fixtures: they live outside `conformance/`, so no ledger, manifest, coverage report or default runner +sees them. Each `words.yaml` starts with `# kind: stress`. + +Expected output is a parity check: the original parses came from `master` (three identical runs were +required). The FLEx-style null-affix rows were updated against the #480 engine and reviewed against the +grammars; an optimization must return the same parses. The measure of a change is the number of +analysis steps, not wall-clock time. + +Run them only on request: + +``` +dotnet test tests/SIL.Machine.Morphology.HermitCrab.Tests --filter TestCategory=Stress +dotnet run --project src/SIL.Machine.Morphology.HermitCrab.Conformance -- --fixtures conformance-stress --include-pathological +``` + +The test fixture is `[Explicit]` and `[Category("Stress")]`, so a plain `dotnet test` skips it. + +| Fixture | What it exercises | Built for | +|---|---|---| +| `bantu-tam-templates` | Bantu slot templates with required slots (subject, object, extension, TAM, final vowel); 12 of 60 words have no parse | #575, #576 (required-slot look-ahead) | +| `bantu-tam-templates-shared` | the same words with three trailing slots shared across templates | #575, #576 (required-slot look-ahead) | +| `bantu-tam-fusion` | the same Bantu slot templates, but each object and subject rule has a plain and a vowel-fusion allomorph (synthetic, not a real language; 28 of 60 words have no parse) | the impure-slot look-ahead, stacked on #576 | +| `truncating-slot-chain` | slot templates whose required and optional suffix slots each delete the vowel before them, so required slots are always missing a segment a later slot restores (synthetic; the look-ahead prunes next to nothing; 12 of 60 words have no parse) | the supply-set look-ahead, stacked on #579 (its worst case) | +| `early-lexicon-agglutinative` | agglutinative words whose root is found early; root-substring and edge-segment prunes | #572, #574 (root-substring prune, edge-segment prefilter) | +| `bantu-extension-chain` | chained verbal extensions | excluded co-occurrence check (parked; #490 ledger) | +| `bantu-extension-required-slot` | extension chain with a required slot | template replay at lookup (dead end; #490 ledger) | +| `required-template-slot` | a required template slot with decoy branches | template replay at lookup (dead end; #490 ledger) | +| `athabaskan-prefix-complex` | a dense prefix complex | excluded co-occurrence check (parked; #490 ledger) | +| `excluded-cooccurrence` | dense morpheme co-occurrence exclusions | excluded co-occurrence check (parked; #490 ledger) | +| `allomorph-list-density` | many allomorphs per morpheme | #560 (allomorph-loop cutoff) | +| `prefix-class-density` | many prefix classes | #560 (allomorph-loop cutoff) | +| `derivation-chain-homophone-roots` | derivation chains over homophonous roots | template replay at lookup (dead end; #490 ledger) | +| `env-bantu-concord` | allomorphs conditioned by environment | environment input prefilter (dead end; #490 ledger) | +| `env-austronesian-nasal-prefix` | nasal-prefix allomorphs conditioned by environment | environment input prefilter (dead end; #490 ledger) | +| `env-zero-allomorphs` | zero allomorphs with rare-class environments | environment input prefilter (dead end; #490 ledger) | + +`mpr-bantu-concord` and `mpr-inflection-classes` were removed: both used custom-named `MorphologicalPhonologicalRuleFeatureGroup` +elements with `outputType="append"`, and HCLoader builds only three fixed groups (`inflClasses`, `exceptionFeatures`, +`lexEntryInflTypes`) with the default overwrite output, so they could not be kept as grammars a real project can produce. +An inflection-class benchmark can be rebuilt on the fixed `inflClasses` group, which a real project does produce. + +No expected parse of `bantu-tam-fusion` uses a fusion allomorph: the fixture passes unchanged (all 60 words, 32 with the same parse and 28 with none) after all 200 `fsub_*` subrules are deleted from its `grammar.xml`, because every plain subrule comes first, matches any stem, and HermitCrab applies allomorphs disjunctively. The parity check therefore cannot catch a regression that wrongly prunes a fused form there; the fixture guards the plain-allomorph paths only. + +`early-lexicon-agglutinative` omits the word `polundanasak`: engines before #548 (synthesis +filtered by the allomorphs used) trace an extra phonological rule for it that master does not, so no single expectation passes on both. +`deep-derivation-trace` is not included: it measures trace memory and +its words have up to 864 parses each. diff --git a/conformance-stress/edge-cases/allomorph-list-density/grammar.xml b/conformance-stress/edge-cases/allomorph-list-density/grammar.xml new file mode 100644 index 000000000..3ba4d802e --- /dev/null +++ b/conformance-stress/edge-cases/allomorph-list-density/grammar.xml @@ -0,0 +1,115 @@ + + + + + StressAllomorphListDensity + + nounverb + phaoueiyktlrndms + Main + a + o + u + e + i + y + k + t + l + r + n + d + m + s + + + Any + ncCons + ncVoiced + ncVless + ncV_a + ncV_e + ncV_ei + ncV_i + ncV_o + ncV_ou + ncV_u + ncV_y + + + + Main + + rPl + lor + lar + lyr + ler + PLPL + rPoss + ini + ana + yny + ene + ono + unu + POSSPOSS + rCase + ke + nko + ka + nky + ko + nke + ky + nka + CASECASE + rPast + te + da + ty + do + de + ta + to + dy + PASTPAST + rEvid + mys + mes + mas + mos + EVIDEVID + + + nounTemplateslotPlslotPossslotCase + verbTemplateslotPastslotEvid + + + katKATkat + kotKOTkot + kulKULkul + kelKELkel + kilKILkil + kylKYLkyl + salanSALANsalan + morutMORUTmorut + tilemTILEMtilem + nytseNYTSEnytse + masaMASAmasa + koneKONEkone + sarSARsar + tolTOLtol + murMURmur + kerKERker + sinSINsin + mydMYDmyd + tarkTARKtark + delsDELSdels + nukNUKnuk + kytKYTkyt + + + + + diff --git a/conformance-stress/edge-cases/allomorph-list-density/words.yaml b/conformance-stress/edge-cases/allomorph-list-density/words.yaml new file mode 100644 index 000000000..b0182ae27 --- /dev/null +++ b/conformance-stress/edge-cases/allomorph-list-density/words.yaml @@ -0,0 +1,373 @@ +# kind: stress (timing and optimization parity fixture, not conformance; see conformance-stress/README.md) +# HAND DERIVATION. Every suffix is a rule with several allomorphs, each with a RequiredEnvironments on the +# stem's left context (grammar.xml). The environments of one rule are mutually exclusive, so exactly one +# allomorph is valid for a given stem and no disjunctive re-check rejects. Rules: nouns take PL, POSS, CASE +# in that slot order (all optional); verbs take PAST then EVID. +# PL last vowel a -> lar, o/u -> lor, e/i -> ler, y -> lyr. +# POSS last vowel selects ana, ono, unu, ene, ini, yny (a, o, u, e, i, y). +# CASE vowel class of the last vowel x stem-final vowel (V) or consonant (C): a ka/nka, o/u ko/nko, e/i ke/nke, y ky/nky. +# PAST vowel class x stem-final voicing (voiced l r n d m -> d; voiceless k t s -> t): da ta, do to, de te, dy ty. +# EVID vowel class: mas, mos, mes, mys. +# "Last vowel" means the last vowel of the stem built so far, including earlier suffixes. +# Allomorph lists are ordered differently per rule, so recorded indices spread over 0..A-1; this is the point +# of the fixture (E1, the synthesis allomorph loop cutoff). Expected parses below were derived by applying +# these rules and enumerating every root and slot choice that produces each surface form, so ambiguous +# surfaces list every analysis. They were then confirmed against the engine with the cutoff off. +language: StressAllomorphListDensity +inspired_by: ["synthetic Turkic/Uralic vowel harmony written as separate environment-conditioned allomorphs"] +sources: + - "E1 stress fixture, hermitcrab-2026-10-27-synthesis-to-analysis-round" +requires: [] +fieldworks_producible: true +budget_ms: 60000 +words: + - word: katlarananka + note: >- + kat + PL + POSS + CASE: PL -> lar (allomorph 1); POSS -> ana (allomorph 1); CASE -> nka (allomorph 7). Surface katlarananka. + parses: + - signature: "KAT+PL+POSS+CASE|katlarananka" + gloss: kat-PL-POSS-CASE + rules: [rPl, rPoss, rCase] + exercises: [] + - word: katlarka + note: >- + kat + PL + CASE: PL -> lar (allomorph 1); CASE -> ka (allomorph 2). Surface katlarka. + parses: + - signature: "KAT+PL+CASE|katlarka" + gloss: kat-PL-CASE + rules: [rPl, rCase] + exercises: [] + - word: kotlorononko + note: >- + kot + PL + POSS + CASE: PL -> lor (allomorph 0); POSS -> ono (allomorph 4); CASE -> nko (allomorph 1). Surface kotlorononko. + parses: + - signature: "KOT+PL+POSS+CASE|kotlorononko" + gloss: kot-PL-POSS-CASE + rules: [rPl, rPoss, rCase] + exercises: [] + - word: kotononko + note: >- + kot + POSS + CASE: POSS -> ono (allomorph 4); CASE -> nko (allomorph 1). Surface kotononko. + parses: + - signature: "KOT+POSS+CASE|kotononko" + gloss: kot-POSS-CASE + rules: [rPoss, rCase] + exercises: [] + - word: kullorononko + note: >- + kul + PL + POSS + CASE: PL -> lor (allomorph 0); POSS -> ono (allomorph 4); CASE -> nko (allomorph 1). Surface kullorononko. + parses: + - signature: "KUL+PL+POSS+CASE|kullorononko" + gloss: kul-PL-POSS-CASE + rules: [rPl, rPoss, rCase] + exercises: [] + - word: kullorono + note: >- + kul + PL + POSS: PL -> lor (allomorph 0); POSS -> ono (allomorph 4). Surface kullorono. + parses: + - signature: "KUL+PL+POSS|kullorono" + gloss: kul-PL-POSS + rules: [rPl, rPoss] + exercises: [] + - word: kellerenenke + note: >- + kel + PL + POSS + CASE: PL -> ler (allomorph 3); POSS -> ene (allomorph 3); CASE -> nke (allomorph 5). Surface kellerenenke. + parses: + - signature: "KEL+PL+POSS+CASE|kellerenenke" + gloss: kel-PL-POSS-CASE + rules: [rPl, rPoss, rCase] + exercises: [] + - word: kellerke + note: >- + kel + PL + CASE: PL -> ler (allomorph 3); CASE -> ke (allomorph 0). Surface kellerke. + parses: + - signature: "KEL+PL+CASE|kellerke" + gloss: kel-PL-CASE + rules: [rPl, rCase] + exercises: [] + - word: killerenenke + note: >- + kil + PL + POSS + CASE: PL -> ler (allomorph 3); POSS -> ene (allomorph 3); CASE -> nke (allomorph 5). Surface killerenenke. + parses: + - signature: "KIL+PL+POSS+CASE|killerenenke" + gloss: kil-PL-POSS-CASE + rules: [rPl, rPoss, rCase] + exercises: [] + - word: kilininke + note: >- + kil + POSS + CASE: POSS -> ini (allomorph 0); CASE -> nke (allomorph 5). Surface kilininke. + parses: + - signature: "KIL+POSS+CASE|kilininke" + gloss: kil-POSS-CASE + rules: [rPoss, rCase] + exercises: [] + - word: kyllyrynynky + note: >- + kyl + PL + POSS + CASE: PL -> lyr (allomorph 2); POSS -> yny (allomorph 2); CASE -> nky (allomorph 3). Surface kyllyrynynky. + parses: + - signature: "KYL+PL+POSS+CASE|kyllyrynynky" + gloss: kyl-PL-POSS-CASE + rules: [rPl, rPoss, rCase] + exercises: [] + - word: kyllyryny + note: >- + kyl + PL + POSS: PL -> lyr (allomorph 2); POSS -> yny (allomorph 2). Surface kyllyryny. + parses: + - signature: "KYL+PL+POSS|kyllyryny" + gloss: kyl-PL-POSS + rules: [rPl, rPoss] + exercises: [] + - word: salanlarananka + note: >- + salan + PL + POSS + CASE: PL -> lar (allomorph 1); POSS -> ana (allomorph 1); CASE -> nka (allomorph 7). Surface salanlarananka. + parses: + - signature: "SALAN+PL+POSS+CASE|salanlarananka" + gloss: salan-PL-POSS-CASE + rules: [rPl, rPoss, rCase] + exercises: [] + - word: salanlarka + note: >- + salan + PL + CASE: PL -> lar (allomorph 1); CASE -> ka (allomorph 2). Surface salanlarka. + parses: + - signature: "SALAN+PL+CASE|salanlarka" + gloss: salan-PL-CASE + rules: [rPl, rCase] + exercises: [] + - word: morutlorononko + note: >- + morut + PL + POSS + CASE: PL -> lor (allomorph 0); POSS -> ono (allomorph 4); CASE -> nko (allomorph 1). Surface morutlorononko. + parses: + - signature: "MORUT+PL+POSS+CASE|morutlorononko" + gloss: morut-PL-POSS-CASE + rules: [rPl, rPoss, rCase] + exercises: [] + - word: morutununko + note: >- + morut + POSS + CASE: POSS -> unu (allomorph 5); CASE -> nko (allomorph 1). Surface morutununko. + parses: + - signature: "MORUT+POSS+CASE|morutununko" + gloss: morut-POSS-CASE + rules: [rPoss, rCase] + exercises: [] + - word: tilemlerenenke + note: >- + tilem + PL + POSS + CASE: PL -> ler (allomorph 3); POSS -> ene (allomorph 3); CASE -> nke (allomorph 5). Surface tilemlerenenke. + parses: + - signature: "TILEM+PL+POSS+CASE|tilemlerenenke" + gloss: tilem-PL-POSS-CASE + rules: [rPl, rPoss, rCase] + exercises: [] + - word: tilemlerene + note: >- + tilem + PL + POSS: PL -> ler (allomorph 3); POSS -> ene (allomorph 3). Surface tilemlerene. + parses: + - signature: "TILEM+PL+POSS|tilemlerene" + gloss: tilem-PL-POSS + rules: [rPl, rPoss] + exercises: [] + - word: nytselerenenke + note: >- + nytse + PL + POSS + CASE: PL -> ler (allomorph 3); POSS -> ene (allomorph 3); CASE -> nke (allomorph 5). Surface nytselerenenke. + parses: + - signature: "NYTSE+PL+POSS+CASE|nytselerenenke" + gloss: nytse-PL-POSS-CASE + rules: [rPl, rPoss, rCase] + exercises: [] + - word: nytselerke + note: >- + nytse + PL + CASE: PL -> ler (allomorph 3); CASE -> ke (allomorph 0). Surface nytselerke. + parses: + - signature: "NYTSE+PL+CASE|nytselerke" + gloss: nytse-PL-CASE + rules: [rPl, rCase] + exercises: [] + - word: masalarananka + note: >- + masa + PL + POSS + CASE: PL -> lar (allomorph 1); POSS -> ana (allomorph 1); CASE -> nka (allomorph 7). Surface masalarananka. + parses: + - signature: "MASA+PL+POSS+CASE|masalarananka" + gloss: masa-PL-POSS-CASE + rules: [rPl, rPoss, rCase] + exercises: [] + - word: masaananka + note: >- + masa + POSS + CASE: POSS -> ana (allomorph 1); CASE -> nka (allomorph 7). Surface masaananka. + parses: + - signature: "MASA+POSS+CASE|masaananka" + gloss: masa-POSS-CASE + rules: [rPoss, rCase] + exercises: [] + - word: konelerenenke + note: >- + kone + PL + POSS + CASE: PL -> ler (allomorph 3); POSS -> ene (allomorph 3); CASE -> nke (allomorph 5). Surface konelerenenke. + parses: + - signature: "KONE+PL+POSS+CASE|konelerenenke" + gloss: kone-PL-POSS-CASE + rules: [rPl, rPoss, rCase] + exercises: [] + - word: konelerene + note: >- + kone + PL + POSS: PL -> ler (allomorph 3); POSS -> ene (allomorph 3). Surface konelerene. + parses: + - signature: "KONE+PL+POSS|konelerene" + gloss: kone-PL-POSS + rules: [rPl, rPoss] + exercises: [] + - word: sardamas + note: >- + sar + PAST + EVID: PAST -> da (allomorph 1); EVID -> mas (allomorph 2). Surface sardamas. + parses: + - signature: "SAR+PAST+EVID|sardamas" + gloss: sar-PAST-EVID + rules: [rPast, rEvid] + exercises: [] + - word: sarda + note: >- + sar + PAST: PAST -> da (allomorph 1). Surface sarda. + parses: + - signature: "SAR+PAST|sarda" + gloss: sar-PAST + rules: [rPast] + exercises: [] + - word: toldomos + note: >- + tol + PAST + EVID: PAST -> do (allomorph 3); EVID -> mos (allomorph 3). Surface toldomos. + parses: + - signature: "TOL+PAST+EVID|toldomos" + gloss: tol-PAST-EVID + rules: [rPast, rEvid] + exercises: [] + - word: toldo + note: >- + tol + PAST: PAST -> do (allomorph 3). Surface toldo. + parses: + - signature: "TOL+PAST|toldo" + gloss: tol-PAST + rules: [rPast] + exercises: [] + - word: murdomos + note: >- + mur + PAST + EVID: PAST -> do (allomorph 3); EVID -> mos (allomorph 3). Surface murdomos. + parses: + - signature: "MUR+PAST+EVID|murdomos" + gloss: mur-PAST-EVID + rules: [rPast, rEvid] + exercises: [] + - word: murdo + note: >- + mur + PAST: PAST -> do (allomorph 3). Surface murdo. + parses: + - signature: "MUR+PAST|murdo" + gloss: mur-PAST + rules: [rPast] + exercises: [] + - word: kerdemes + note: >- + ker + PAST + EVID: PAST -> de (allomorph 4); EVID -> mes (allomorph 1). Surface kerdemes. + parses: + - signature: "KER+PAST+EVID|kerdemes" + gloss: ker-PAST-EVID + rules: [rPast, rEvid] + exercises: [] + - word: kerde + note: >- + ker + PAST: PAST -> de (allomorph 4). Surface kerde. + parses: + - signature: "KER+PAST|kerde" + gloss: ker-PAST + rules: [rPast] + exercises: [] + - word: sindemes + note: >- + sin + PAST + EVID: PAST -> de (allomorph 4); EVID -> mes (allomorph 1). Surface sindemes. + parses: + - signature: "SIN+PAST+EVID|sindemes" + gloss: sin-PAST-EVID + rules: [rPast, rEvid] + exercises: [] + - word: sinde + note: >- + sin + PAST: PAST -> de (allomorph 4). Surface sinde. + parses: + - signature: "SIN+PAST|sinde" + gloss: sin-PAST + rules: [rPast] + exercises: [] + - word: myddymys + note: >- + myd + PAST + EVID: PAST -> dy (allomorph 7); EVID -> mys (allomorph 0). Surface myddymys. + parses: + - signature: "MYD+PAST+EVID|myddymys" + gloss: myd-PAST-EVID + rules: [rPast, rEvid] + exercises: [] + - word: myddy + note: >- + myd + PAST: PAST -> dy (allomorph 7). Surface myddy. + parses: + - signature: "MYD+PAST|myddy" + gloss: myd-PAST + rules: [rPast] + exercises: [] + - word: tarktamas + note: >- + tark + PAST + EVID: PAST -> ta (allomorph 5); EVID -> mas (allomorph 2). Surface tarktamas. + parses: + - signature: "TARK+PAST+EVID|tarktamas" + gloss: tark-PAST-EVID + rules: [rPast, rEvid] + exercises: [] + - word: delstemes + note: >- + dels + PAST + EVID: PAST -> te (allomorph 0); EVID -> mes (allomorph 1). Surface delstemes. + parses: + - signature: "DELS+PAST+EVID|delstemes" + gloss: dels-PAST-EVID + rules: [rPast, rEvid] + exercises: [] + - word: nuktomos + note: >- + nuk + PAST + EVID: PAST -> to (allomorph 6); EVID -> mos (allomorph 3). Surface nuktomos. + parses: + - signature: "NUK+PAST+EVID|nuktomos" + gloss: nuk-PAST-EVID + rules: [rPast, rEvid] + exercises: [] + - word: kyttymys + note: >- + kyt + PAST + EVID: PAST -> ty (allomorph 2); EVID -> mys (allomorph 0). Surface kyttymys. + parses: + - signature: "KYT+PAST+EVID|kyttymys" + gloss: kyt-PAST-EVID + rules: [rPast, rEvid] + exercises: [] + - word: kotlar + note: >- + Harmony violation: no allomorph's environment holds for the stem, so no analysis survives. + expect_fail: true + exercises: [] + - word: kalyr + note: >- + Harmony violation: no allomorph's environment holds for the stem, so no analysis survives. + expect_fail: true + exercises: [] + - word: sarte + note: >- + Harmony violation: no allomorph's environment holds for the stem, so no analysis survives. + expect_fail: true + exercises: [] + - word: tolmes + note: >- + Harmony violation: no allomorph's environment holds for the stem, so no analysis survives. + expect_fail: true + exercises: [] + - word: kylnka + note: >- + Harmony violation: no allomorph's environment holds for the stem, so no analysis survives. + expect_fail: true + exercises: [] + - word: kotanaka + note: >- + Harmony violation: no allomorph's environment holds for the stem, so no analysis survives. + expect_fail: true + exercises: [] diff --git a/conformance-stress/edge-cases/athabaskan-prefix-complex/grammar.xml b/conformance-stress/edge-cases/athabaskan-prefix-complex/grammar.xml new file mode 100644 index 000000000..e3f6894b2 --- /dev/null +++ b/conformance-stress/edge-cases/athabaskan-prefix-complex/grammar.xml @@ -0,0 +1,460 @@ + + + + + StressAthabaskanPrefixComplex + + + v + + + Main + + a + i + k + n + t + + + ^0*0&0∅ + + + + + + Any + + + + Main + + + s1a + + + + a + + + S1a + + + s1b + + + + i + + + S1b + + + s1c + + + + ta + + + S1c + + + s1d + + + + ki + + + S1d + + + s1e + + + + na + + + S1e + + + s2a + + + + i + + + S2a + + + s2b + + + + a + + + S2b + + + s2c + + + + ti + + + S2c + + + s2d + + + + ka + + + S2d + + + s2e + + + + an + + + S2e + + + s3a + + + + a + + + S3a + + + s3b + + + + ta + + + S3b + + + s3c + + + + ni + + + S3c + + + s3d + + + + ik + + + S3d + + + s3e + + + + kia + + + S3e + + + s4a + + + + i + + + S4a + + + s4b + + + + ka + + + S4b + + + s4c + + + + na + + + S4c + + + s4d + + + + at + + + S4d + + + s4e + + + + ti + + + S4e + + + s5a + + + + a + + + S5a + + + s5b + + + + ti + + + S5b + + + s5c + + + + ak + + + S5c + + + s5d + + + + ni + + + S5d + + + s5e + + + + ki + + + S5e + + + s6a + + + + ta + + + S6a + + + s6b + + + + i + + + S6b + + + s6c + + + + ka + + + S6c + + + s6d + + + + na + + + S6d + + + s6e + + + + ^0+ + + + S6e + + + + + verbTemplate + + slot1 + + + slot2 + + + slot3 + + + slot4 + + + slot5 + + + slot6 + + + + + + tak + R1 + + + kin + R2 + + + nat + R3 + + + ink + R4 + + + kat + R5 + + + tin + R6 + + + ant + R7 + + + nik + R8 + + + kan + R9 + + + tik + R10 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/conformance-stress/edge-cases/athabaskan-prefix-complex/words.yaml b/conformance-stress/edge-cases/athabaskan-prefix-complex/words.yaml new file mode 100644 index 000000000..eb25c5f1c --- /dev/null +++ b/conformance-stress/edge-cases/athabaskan-prefix-complex/words.yaml @@ -0,0 +1,554 @@ +# kind: stress (timing and optimization parity fixture, not conformance; see conformance-stress/README.md) +# StressAthabaskanPrefixComplex: dense-exclusion stress fixture. The expected parses are engine output, not an +# independent enumeration: the original parses are master's (see conformance-stress/README.md) and the FLEx +# null-affix rows were regenerated from the #480 engine and checked against the grammar. +language: StressAthabaskanPrefixComplex +inspired_by: ["Athabaskan-style verb prefix complex (synthetic; not modeling a real language)"] +requires: [] +fieldworks_producible: true +budget_ms: 120000 +words: + - word: "tatianakan" + note: >- + 6 segmentations; 2 survive the exclude rules. + parses: + - signature: "S6a+S4e+S2b+S1e+R9|tatianakan" + rules: [mrS6a, mrS4e, mrS2b, mrS1e] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6a+S4e+S2e+S1a+R9|tatianakan" + rules: [mrS6a, mrS4e, mrS2e, mrS1a] + exercises: ["Morpheme co-occurrence rules"] + - word: "taaninik" + note: >- + 4 segmentations; 3 survive the exclude rules. + parses: + - signature: "S3b+S2e+S1b+R8|taaninik" + rules: [mrS3b, mrS2e, mrS1b] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6a+S2e+S1b+R8|taaninik" + rules: [mrS6a, mrS2e, mrS1b] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6e+S3b+S2e+S1b+R8|[(^0)(*0)(&0)∅]?+?taaninik" + rules: [mrS6e, mrS3b, mrS2e, mrS1b] + exercises: ["Morpheme co-occurrence rules"] + - word: "akiaaant" + note: >- + 10 segmentations; 3 survive the exclude rules. + parses: + - signature: "S5a+S3e+S1a+R7|akiaaant" + rules: [mrS5a, mrS3e, mrS1a] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S5a+S3e+S2b+R7|akiaaant" + rules: [mrS5a, mrS3e, mrS2b] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S5c+S4a+S2b+S1a+R7|akiaaant" + rules: [mrS5c, mrS4a, mrS2b, mrS1a] + exercises: ["Morpheme co-occurrence rules"] + - word: "aatkitik" + note: >- + 2 segmentations; 1 survive the exclude rules. + parses: + - signature: "S5a+S4d+S1d+R10|aatkitik" + rules: [mrS5a, mrS4d, mrS1d] + exercises: ["Morpheme co-occurrence rules"] + - word: "niatitakin" + note: >- + 4 segmentations; 2 survive the exclude rules. + parses: + - signature: "S5d+S3a+S2c+S1c+R2|niatitakin" + rules: [mrS5d, mrS3a, mrS2c, mrS1c] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S5d+S4d+S2a+S1c+R2|niatitakin" + rules: [mrS5d, mrS4d, mrS2a, mrS1c] + exercises: ["Morpheme co-occurrence rules"] + - word: "nikaanat" + note: >- + 10 segmentations; 5 survive the exclude rules. + parses: + - signature: "S3c+S2d+S1a+R3|nikaanat" + rules: [mrS3c, mrS2d, mrS1a] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S5d+S2d+S1a+R3|nikaanat" + rules: [mrS5d, mrS2d, mrS1a] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S5d+S4b+S1a+R3|nikaanat" + rules: [mrS5d, mrS4b, mrS1a] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S5d+S4b+S2b+R3|nikaanat" + rules: [mrS5d, mrS4b, mrS2b] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6e+S3c+S2d+S1a+R3|[(^0)(*0)(&0)∅]?+?nikaanat" + rules: [mrS6e, mrS3c, mrS2d, mrS1a] + exercises: ["Morpheme co-occurrence rules"] + - word: "naikat" + note: >- + 7 segmentations; 7 survive the exclude rules. + parses: + - signature: "S4c+S1b+R5|naikat" + rules: [mrS4c, mrS1b] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S4c+S2a+R5|naikat" + rules: [mrS4c, mrS2a] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6d+S1b+R5|naikat" + rules: [mrS6d, mrS1b] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6d+S2a+R5|naikat" + rules: [mrS6d, mrS2a] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6d+S4a+R5|naikat" + rules: [mrS6d, mrS4a] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6e+S4c+S1b+R5|[(^0)(*0)(&0)∅]?+?naikat" + rules: [mrS6e, mrS4c, mrS1b] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6e+S4c+S2a+R5|[(^0)(*0)(&0)∅]?+?naikat" + rules: [mrS6e, mrS4c, mrS2a] + exercises: ["Morpheme co-occurrence rules"] + - word: "tatiantak" + note: >- + 2 segmentations; 1 survive the exclude rules. + parses: + - signature: "S6a+S4e+S2e+R1|tatiantak" + rules: [mrS6a, mrS4e, mrS2e] + exercises: ["Morpheme co-occurrence rules"] + - word: "itaanakan" + note: >- + 6 segmentations; 2 survive the exclude rules. + parses: + - signature: "S6b+S3b+S2b+S1e+R9|itaanakan" + rules: [mrS6b, mrS3b, mrS2b, mrS1e] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6b+S3b+S2e+S1a+R9|itaanakan" + rules: [mrS6b, mrS3b, mrS2e, mrS1a] + exercises: ["Morpheme co-occurrence rules"] + - word: "kaitik" + note: >- + 9 segmentations; 9 survive the exclude rules. + parses: + - signature: "S2d+S1b+R10|kaitik" + rules: [mrS2d, mrS1b] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S4b+S1b+R10|kaitik" + rules: [mrS4b, mrS1b] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S4b+S2a+R10|kaitik" + rules: [mrS4b, mrS2a] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6c+S1b+R10|kaitik" + rules: [mrS6c, mrS1b] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6c+S2a+R10|kaitik" + rules: [mrS6c, mrS2a] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6c+S4a+R10|kaitik" + rules: [mrS6c, mrS4a] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6e+S2d+S1b+R10|[(^0)(*0)(&0)∅]?+?kaitik" + rules: [mrS6e, mrS2d, mrS1b] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6e+S4b+S1b+R10|[(^0)(*0)(&0)∅]?+?kaitik" + rules: [mrS6e, mrS4b, mrS1b] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6e+S4b+S2a+R10|[(^0)(*0)(&0)∅]?+?kaitik" + rules: [mrS6e, mrS4b, mrS2a] + exercises: ["Morpheme co-occurrence rules"] + - word: "naniianik" + note: >- + 7 segmentations; 1 survive the exclude rules. + parses: + - signature: "S6d+S3c+S2a+S1a+R8|naniianik" + rules: [mrS6d, mrS3c, mrS2a, mrS1a] + exercises: ["Morpheme co-occurrence rules"] + - word: "titatik" + note: >- + 10 segmentations; 6 survive the exclude rules. + parses: + - signature: "S2c+S1c+R10|titatik" + rules: [mrS2c, mrS1c] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S4e+S1c+R10|titatik" + rules: [mrS4e, mrS1c] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S5b+S1c+R10|titatik" + rules: [mrS5b, mrS1c] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S5b+S3b+R10|titatik" + rules: [mrS5b, mrS3b] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6e+S2c+S1c+R10|[(^0)(*0)(&0)∅]?+?titatik" + rules: [mrS6e, mrS2c, mrS1c] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6e+S4e+S1c+R10|[(^0)(*0)(&0)∅]?+?titatik" + rules: [mrS6e, mrS4e, mrS1c] + exercises: ["Morpheme co-occurrence rules"] + - word: "kiatikitik" + note: >- + 10 segmentations; 4 survive the exclude rules. + parses: + - signature: "S3e+S2c+S1d+R10|kiatikitik" + rules: [mrS3e, mrS2c, mrS1d] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S5e+S3a+S2c+S1d+R10|kiatikitik" + rules: [mrS5e, mrS3a, mrS2c, mrS1d] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S5e+S4d+S2a+S1d+R10|kiatikitik" + rules: [mrS5e, mrS4d, mrS2a, mrS1d] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6e+S3e+S2c+S1d+R10|[(^0)(*0)(&0)∅]?+?kiatikitik" + rules: [mrS6e, mrS3e, mrS2c, mrS1d] + exercises: ["Morpheme co-occurrence rules"] + - word: "naaaatik" + note: >- + 6 segmentations; 1 survive the exclude rules. + parses: + - signature: "S6d+S3a+S2b+S1a+R10|naaaatik" + rules: [mrS6d, mrS3a, mrS2b, mrS1a] + exercises: ["Morpheme co-occurrence rules"] + - word: "iatatik" + note: >- + 11 segmentations; 6 survive the exclude rules. + parses: + - signature: "S4a+S2b+S1c+R10|iatatik" + rules: [mrS4a, mrS2b, mrS1c] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6b+S2b+S1c+R10|iatatik" + rules: [mrS6b, mrS2b, mrS1c] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6b+S3a+S1c+R10|iatatik" + rules: [mrS6b, mrS3a, mrS1c] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6b+S4d+S1a+R10|iatatik" + rules: [mrS6b, mrS4d, mrS1a] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6b+S4d+S2b+R10|iatatik" + rules: [mrS6b, mrS4d, mrS2b] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6e+S4a+S2b+S1c+R10|[(^0)(*0)(&0)∅]?+?iatatik" + rules: [mrS6e, mrS4a, mrS2b, mrS1c] + exercises: ["Morpheme co-occurrence rules"] + - word: "nikataant" + note: >- + 8 segmentations; 4 survive the exclude rules. + parses: + - signature: "S3c+S2d+S1c+R7|nikataant" + rules: [mrS3c, mrS2d, mrS1c] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S5d+S2d+S1c+R7|nikataant" + rules: [mrS5d, mrS2d, mrS1c] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S5d+S4b+S1c+R7|nikataant" + rules: [mrS5d, mrS4b, mrS1c] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6e+S3c+S2d+S1c+R7|[(^0)(*0)(&0)∅]?+?nikataant" + rules: [mrS6e, mrS3c, mrS2d, mrS1c] + exercises: ["Morpheme co-occurrence rules"] + - word: "akkiatakat" + note: >- + 2 segmentations; 1 survive the exclude rules. + parses: + - signature: "S5c+S3e+S1c+R5|akkiatakat" + rules: [mrS5c, mrS3e, mrS1c] + exercises: ["Morpheme co-occurrence rules"] + - word: "akiakiink" + note: >- + 6 segmentations; 2 survive the exclude rules. + parses: + - signature: "S5a+S3e+S1d+R4|akiakiink" + rules: [mrS5a, mrS3e, mrS1d] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S5c+S4a+S2b+S1d+R4|akiakiink" + rules: [mrS5c, mrS4a, mrS2b, mrS1d] + exercises: ["Morpheme co-occurrence rules"] + - word: "katiakin" + note: >- + 9 segmentations; 5 survive the exclude rules. + parses: + - signature: "S4b+S2c+S1a+R2|katiakin" + rules: [mrS4b, mrS2c, mrS1a] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6c+S2c+S1a+R2|katiakin" + rules: [mrS6c, mrS2c, mrS1a] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6c+S4e+S1a+R2|katiakin" + rules: [mrS6c, mrS4e, mrS1a] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6c+S4e+S2b+R2|katiakin" + rules: [mrS6c, mrS4e, mrS2b] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6e+S4b+S2c+S1a+R2|[(^0)(*0)(&0)∅]?+?katiakin" + rules: [mrS6e, mrS4b, mrS2c, mrS1a] + exercises: ["Morpheme co-occurrence rules"] + - word: "kitiantatik" + note: >- + 2 segmentations; 1 survive the exclude rules. + parses: + - signature: "S5e+S4e+S2e+S1c+R10|kitiantatik" + rules: [mrS5e, mrS4e, mrS2e, mrS1c] + exercises: ["Morpheme co-occurrence rules"] + - word: "kakakinik" + note: >- + 4 segmentations; 4 survive the exclude rules. + parses: + - signature: "S4b+S2d+S1d+R8|kakakinik" + rules: [mrS4b, mrS2d, mrS1d] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6c+S2d+S1d+R8|kakakinik" + rules: [mrS6c, mrS2d, mrS1d] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6c+S4b+S1d+R8|kakakinik" + rules: [mrS6c, mrS4b, mrS1d] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6e+S4b+S2d+S1d+R8|[(^0)(*0)(&0)∅]?+?kakakinik" + rules: [mrS6e, mrS4b, mrS2d, mrS1d] + exercises: ["Morpheme co-occurrence rules"] + - word: "nataaakin" + note: >- + 3 segmentations; 1 survive the exclude rules. + parses: + - signature: "S6d+S3b+S2b+S1a+R2|nataaakin" + rules: [mrS6d, mrS3b, mrS2b, mrS1a] + exercises: ["Morpheme co-occurrence rules"] + - word: "katiinat" + note: >- + 8 segmentations; 5 survive the exclude rules. + parses: + - signature: "S4b+S2c+S1b+R3|katiinat" + rules: [mrS4b, mrS2c, mrS1b] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6c+S2c+S1b+R3|katiinat" + rules: [mrS6c, mrS2c, mrS1b] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6c+S4e+S1b+R3|katiinat" + rules: [mrS6c, mrS4e, mrS1b] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6c+S4e+S2a+R3|katiinat" + rules: [mrS6c, mrS4e, mrS2a] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6e+S4b+S2c+S1b+R3|[(^0)(*0)(&0)∅]?+?katiinat" + rules: [mrS6e, mrS4b, mrS2c, mrS1b] + exercises: ["Morpheme co-occurrence rules"] + - word: "kaikkakiink" + note: >- + 3 segmentations; 1 survive the exclude rules. + parses: + - signature: "S6c+S3d+S2d+S1d+R4|kaikkakiink" + rules: [mrS6c, mrS3d, mrS2d, mrS1d] + exercises: ["Morpheme co-occurrence rules"] + - word: "akatatak" + note: >- + 18 segmentations; 8 survive the exclude rules. + parses: + - signature: "S3a+S2d+S1c+R1|akatatak" + rules: [mrS3a, mrS2d, mrS1c] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S5a+S2d+S1c+R1|akatatak" + rules: [mrS5a, mrS2d, mrS1c] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S5a+S4b+S1c+R1|akatatak" + rules: [mrS5a, mrS4b, mrS1c] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S5c+S2b+S1c+R1|akatatak" + rules: [mrS5c, mrS2b, mrS1c] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S5c+S3a+S1c+R1|akatatak" + rules: [mrS5c, mrS3a, mrS1c] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S5c+S4d+S1a+R1|akatatak" + rules: [mrS5c, mrS4d, mrS1a] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S5c+S4d+S2b+R1|akatatak" + rules: [mrS5c, mrS4d, mrS2b] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6e+S3a+S2d+S1c+R1|[(^0)(*0)(&0)∅]?+?akatatak" + rules: [mrS6e, mrS3a, mrS2d, mrS1c] + exercises: ["Morpheme co-occurrence rules"] + - word: "katitaink" + note: >- + 7 segmentations; 4 survive the exclude rules. + parses: + - signature: "S4b+S2c+S1c+R4|katitaink" + rules: [mrS4b, mrS2c, mrS1c] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6c+S2c+S1c+R4|katitaink" + rules: [mrS6c, mrS2c, mrS1c] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6c+S4e+S1c+R4|katitaink" + rules: [mrS6c, mrS4e, mrS1c] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6e+S4b+S2c+S1c+R4|[(^0)(*0)(&0)∅]?+?katitaink" + rules: [mrS6e, mrS4b, mrS2c, mrS1c] + exercises: ["Morpheme co-occurrence rules"] + - word: "tikakinat" + note: >- + 6 segmentations; 4 survive the exclude rules. + parses: + - signature: "S4e+S2d+S1d+R3|tikakinat" + rules: [mrS4e, mrS2d, mrS1d] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S5b+S2d+S1d+R3|tikakinat" + rules: [mrS5b, mrS2d, mrS1d] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S5b+S4b+S1d+R3|tikakinat" + rules: [mrS5b, mrS4b, mrS1d] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6e+S4e+S2d+S1d+R3|[(^0)(*0)(&0)∅]?+?tikakinat" + rules: [mrS6e, mrS4e, mrS2d, mrS1d] + exercises: ["Morpheme co-occurrence rules"] + - word: "kakiatiink" + note: >- + 6 segmentations; 1 survive the exclude rules. + parses: + - signature: "S6c+S3e+S2c+R4|kakiatiink" + rules: [mrS6c, mrS3e, mrS2c] + exercises: ["Morpheme co-occurrence rules"] + - word: "taaikat" + note: >- + 8 segmentations; 5 survive the exclude rules. + parses: + - signature: "S3b+S2b+S1b+R5|taaikat" + rules: [mrS3b, mrS2b, mrS1b] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6a+S2b+S1b+R5|taaikat" + rules: [mrS6a, mrS2b, mrS1b] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6a+S3a+S1b+R5|taaikat" + rules: [mrS6a, mrS3a, mrS1b] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6a+S3a+S2a+R5|taaikat" + rules: [mrS6a, mrS3a, mrS2a] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6e+S3b+S2b+S1b+R5|[(^0)(*0)(&0)∅]?+?taaikat" + rules: [mrS6e, mrS3b, mrS2b, mrS1b] + exercises: ["Morpheme co-occurrence rules"] + - word: "kiatitin" + note: >- + 8 segmentations; 5 survive the exclude rules. + parses: + - signature: "S3e+S2c+R6|kiatitin" + rules: [mrS3e, mrS2c] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S5e+S3a+S2c+R6|kiatitin" + rules: [mrS5e, mrS3a, mrS2c] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S5e+S4d+S1b+R6|kiatitin" + rules: [mrS5e, mrS4d, mrS1b] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S5e+S4d+S2a+R6|kiatitin" + rules: [mrS5e, mrS4d, mrS2a] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6e+S3e+S2c+R6|[(^0)(*0)(&0)∅]?+?kiatitin" + rules: [mrS6e, mrS3e, mrS2c] + exercises: ["Morpheme co-occurrence rules"] + - word: "tainanik" + note: >- + 4 segmentations; 4 survive the exclude rules. + parses: + - signature: "S3b+S2a+S1e+R8|tainanik" + rules: [mrS3b, mrS2a, mrS1e] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6a+S2a+S1e+R8|tainanik" + rules: [mrS6a, mrS2a, mrS1e] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6a+S4a+S1e+R8|tainanik" + rules: [mrS6a, mrS4a, mrS1e] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6e+S3b+S2a+S1e+R8|[(^0)(*0)(&0)∅]?+?tainanik" + rules: [mrS6e, mrS3b, mrS2a, mrS1e] + exercises: ["Morpheme co-occurrence rules"] + - word: "kanatiatin" + note: >- + 1 segmentations; 1 survive the exclude rules. + parses: + - signature: "S6c+S4c+S2c+S1a+R6|kanatiatin" + rules: [mrS6c, mrS4c, mrS2c, mrS1a] + exercises: ["Morpheme co-occurrence rules"] + - word: "katiikikin" + note: >- + 7 segmentations; 1 survive the exclude rules. + parses: + - signature: "S6c+S4e+S2a+S1d+R2|katiikikin" + rules: [mrS6c, mrS4e, mrS2a, mrS1d] + exercises: ["Morpheme co-occurrence rules"] + - word: "tatiatak" + note: >- + 9 segmentations; 5 survive the exclude rules. + parses: + - signature: "S3b+S2c+S1a+R1|tatiatak" + rules: [mrS3b, mrS2c, mrS1a] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6a+S2c+S1a+R1|tatiatak" + rules: [mrS6a, mrS2c, mrS1a] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6a+S4e+S1a+R1|tatiatak" + rules: [mrS6a, mrS4e, mrS1a] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6a+S4e+S2b+R1|tatiatak" + rules: [mrS6a, mrS4e, mrS2b] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6e+S3b+S2c+S1a+R1|[(^0)(*0)(&0)∅]?+?tatiatak" + rules: [mrS6e, mrS3b, mrS2c, mrS1a] + exercises: ["Morpheme co-occurrence rules"] + - word: "kaniiaant" + note: >- + 7 segmentations; 1 survive the exclude rules. + parses: + - signature: "S6c+S3c+S2a+S1a+R7|kaniiaant" + rules: [mrS6c, mrS3c, mrS2a, mrS1a] + exercises: ["Morpheme co-occurrence rules"] + - word: "nikatatin" + note: >- + 8 segmentations; 4 survive the exclude rules. + parses: + - signature: "S3c+S2d+S1c+R6|nikatatin" + rules: [mrS3c, mrS2d, mrS1c] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S5d+S2d+S1c+R6|nikatatin" + rules: [mrS5d, mrS2d, mrS1c] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S5d+S4b+S1c+R6|nikatatin" + rules: [mrS5d, mrS4b, mrS1c] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6e+S3c+S2d+S1c+R6|[(^0)(*0)(&0)∅]?+?nikatatin" + rules: [mrS6e, mrS3c, mrS2d, mrS1c] + exercises: ["Morpheme co-occurrence rules"] + - word: "takiaitaant" + note: >- + 2 segmentations; 1 survive the exclude rules. + parses: + - signature: "S6a+S3e+S2a+S1c+R7|takiaitaant" + rules: [mrS6a, mrS3e, mrS2a, mrS1c] + exercises: ["Morpheme co-occurrence rules"] + - word: "titatitatin" + note: >- + 4 segmentations; 1 survive the exclude rules. + parses: + - signature: "S5b+S3b+S2c+S1c+R6|titatitatin" + rules: [mrS5b, mrS3b, mrS2c, mrS1c] + exercises: ["Morpheme co-occurrence rules"] + - word: "niniatik" + note: >- + 4 segmentations; 2 survive the exclude rules. + parses: + - signature: "S5d+S3c+S1a+R10|niniatik" + rules: [mrS5d, mrS3c, mrS1a] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S5d+S3c+S2b+R10|niniatik" + rules: [mrS5d, mrS3c, mrS2b] + exercises: ["Morpheme co-occurrence rules"] + - word: "kaitakan" + note: >- + 5 segmentations; 4 survive the exclude rules. + parses: + - signature: "S4b+S2a+S1c+R9|kaitakan" + rules: [mrS4b, mrS2a, mrS1c] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6c+S2a+S1c+R9|kaitakan" + rules: [mrS6c, mrS2a, mrS1c] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6c+S4a+S1c+R9|kaitakan" + rules: [mrS6c, mrS4a, mrS1c] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6e+S4b+S2a+S1c+R9|[(^0)(*0)(&0)∅]?+?kaitakan" + rules: [mrS6e, mrS4b, mrS2a, mrS1c] + exercises: ["Morpheme co-occurrence rules"] diff --git a/conformance-stress/edge-cases/bantu-extension-chain/grammar.xml b/conformance-stress/edge-cases/bantu-extension-chain/grammar.xml new file mode 100644 index 000000000..84593ba0a --- /dev/null +++ b/conformance-stress/edge-cases/bantu-extension-chain/grammar.xml @@ -0,0 +1,500 @@ + + + + + StressBantuExtensionChain + + + v + + + Main + + a + i + k + n + t + + + + Any + + + + Main + + + s1a + + + + a + + + S1a + + + s1b + + + + ik + + + S1b + + + s1c + + + + ak + + + S1c + + + s1d + + + + ni + + + S1d + + + s1e + + + + ki + + + S1e + + + s2a + + + + i + + + S2a + + + s2b + + + + an + + + S2b + + + s2c + + + + ka + + + S2c + + + s2d + + + + ik + + + S2d + + + s2e + + + + na + + + S2e + + + s3a + + + + a + + + S3a + + + s3b + + + + ka + + + S3b + + + s3c + + + + in + + + S3c + + + s3d + + + + ni + + + S3d + + + s3e + + + + ak + + + S3e + + + s4a + + + + i + + + S4a + + + s4b + + + + ki + + + S4b + + + s4c + + + + an + + + S4c + + + s4d + + + + at + + + S4d + + + s4e + + + + na + + + S4e + + + s5a + + + + a + + + S5a + + + s5b + + + + ik + + + S5b + + + s5c + + + + ni + + + S5c + + + s5d + + + + ka + + + S5d + + + s5e + + + + an + + + S5e + + + s6a + + + + i + + + S6a + + + s6b + + + + ak + + + S6b + + + s6c + + + + na + + + S6c + + + s6d + + + + kia + + + S6d + + + s6e + + + + ta + + + S6e + + + s7a + + + + a + + + S7a + + + s7b + + + + in + + + S7b + + + s7c + + + + ki + + + S7c + + + s7d + + + + an + + + S7d + + + s7e + + + + ik + + + S7e + + + + + verbTemplate + + slot1 + + + slot2 + + + slot3 + + + slot4 + + + slot5 + + + slot6 + + + slot7 + + + + + + tak + R1 + + + kin + R2 + + + nat + R3 + + + tik + R4 + + + kat + R5 + + + tin + R6 + + + kan + R7 + + + nik + R8 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/conformance-stress/edge-cases/bantu-extension-chain/words.yaml b/conformance-stress/edge-cases/bantu-extension-chain/words.yaml new file mode 100644 index 000000000..cf19d2c65 --- /dev/null +++ b/conformance-stress/edge-cases/bantu-extension-chain/words.yaml @@ -0,0 +1,403 @@ +# kind: stress (timing and optimization parity fixture, not conformance; see conformance-stress/README.md) +# StressBantuExtensionChain: dense-exclusion stress fixture. The expected parses are engine output, not an +# independent enumeration: they are master's parses (see conformance-stress/README.md). +language: StressBantuExtensionChain +inspired_by: ["Bantu-style verb extension chain (synthetic; not modeling a real language)"] +requires: [] +fieldworks_producible: true +budget_ms: 120000 +words: + - word: "tikaknainkaik" + note: >- + 1 segmentations; 1 survive the exclude rules. + parses: + - signature: "R4+S1c+S2e+S3c+S5d+S7e|tikaknainkaik" + rules: [mrS1c, mrS2e, mrS3c, mrS5d, mrS7e] + exercises: ["Morpheme co-occurrence rules"] + - word: "kinnianinanak" + note: >- + 2 segmentations; 2 survive the exclude rules. + parses: + - signature: "R2+S1d+S2b+S3c+S4c+S6b|kinnianinanak" + rules: [mrS1d, mrS2b, mrS3c, mrS4c, mrS6b] + exercises: ["Morpheme co-occurrence rules"] + - signature: "R2+S1d+S2b+S3c+S5e+S6b|kinnianinanak" + rules: [mrS1d, mrS2b, mrS3c, mrS5e, mrS6b] + exercises: ["Morpheme co-occurrence rules"] + - word: "tikakaaatan" + note: >- + 2 segmentations; 1 survive the exclude rules. + parses: + - signature: "R4+S1a+S2c+S3a+S4d+S7d|tikakaaatan" + rules: [mrS1a, mrS2c, mrS3a, mrS4d, mrS7d] + exercises: ["Morpheme co-occurrence rules"] + - word: "katnaniiin" + note: >- + 4 segmentations; 1 survive the exclude rules. + parses: + - signature: "R5+S2e+S3d+S4a+S7b|katnaniiin" + rules: [mrS2e, mrS3d, mrS4a, mrS7b] + exercises: ["Morpheme co-occurrence rules"] + - word: "kanikikati" + note: >- + 1 segmentations; 1 survive the exclude rules. + parses: + - signature: "R7+S1b+S2d+S4d+S6a|kanikikati" + rules: [mrS1b, mrS2d, mrS4d, mrS6a] + exercises: ["Morpheme co-occurrence rules"] + - word: "kinkiikakniki" + note: >- + 1 segmentations; 1 survive the exclude rules. + parses: + - signature: "R2+S1e+S2d+S3e+S5c+S7c|kinkiikakniki" + rules: [mrS1e, mrS2d, mrS3e, mrS5c, mrS7c] + exercises: ["Morpheme co-occurrence rules"] + - word: "tinaankakian" + note: >- + 2 segmentations; 1 survive the exclude rules. + parses: + - signature: "R6+S1a+S2b+S3b+S4b+S7d|tinaankakian" + rules: [mrS1a, mrS2b, mrS3b, mrS4b, mrS7d] + exercises: ["Morpheme co-occurrence rules"] + - word: "kankiiakkia" + note: >- + 3 segmentations; 2 survive the exclude rules. + parses: + - signature: "R7+S1e+S2a+S3e+S4b+S7a|kankiiakkia" + rules: [mrS1e, mrS2a, mrS3e, mrS4b, mrS7a] + exercises: ["Morpheme co-occurrence rules"] + - signature: "R7+S1e+S2a+S3e+S6d|kankiiakkia" + rules: [mrS1e, mrS2a, mrS3e, mrS6d] + exercises: ["Morpheme co-occurrence rules"] + - word: "katainiiin" + note: >- + 6 segmentations; 1 survive the exclude rules. + parses: + - signature: "R5+S1a+S2a+S3d+S4a+S7b|katainiiin" + rules: [mrS1a, mrS2a, mrS3d, mrS4a, mrS7b] + exercises: ["Morpheme co-occurrence rules"] + - word: "natkikainikin" + note: >- + 1 segmentations; 1 survive the exclude rules. + parses: + - signature: "R3+S1e+S2c+S3c+S5b+S7b|natkikainikin" + rules: [mrS1e, mrS2c, mrS3c, mrS5b, mrS7b] + exercises: ["Morpheme co-occurrence rules"] + - word: "takikakkiin" + note: >- + 2 segmentations; 2 survive the exclude rules. + parses: + - signature: "R1+S1b+S3e+S4b+S7b|takikakkiin" + rules: [mrS1b, mrS3e, mrS4b, mrS7b] + exercises: ["Morpheme co-occurrence rules"] + - signature: "R1+S2d+S3e+S4b+S7b|takikakkiin" + rules: [mrS2d, mrS3e, mrS4b, mrS7b] + exercises: ["Morpheme co-occurrence rules"] + - word: "tikikankaina" + note: >- + 1 segmentations; 1 survive the exclude rules. + parses: + - signature: "R4+S1b+S2b+S3b+S4a+S6c|tikikankaina" + rules: [mrS1b, mrS2b, mrS3b, mrS4a, mrS6c] + exercises: ["Morpheme co-occurrence rules"] + - word: "nikkiikinan" + note: >- + 3 segmentations; 3 survive the exclude rules. + parses: + - signature: "R8+S1e+S2d+S3c+S4c|nikkiikinan" + rules: [mrS1e, mrS2d, mrS3c, mrS4c] + exercises: ["Morpheme co-occurrence rules"] + - signature: "R8+S1e+S2d+S3c+S5e|nikkiikinan" + rules: [mrS1e, mrS2d, mrS3c, mrS5e] + exercises: ["Morpheme co-occurrence rules"] + - signature: "R8+S1e+S2d+S3c+S7d|nikkiikinan" + rules: [mrS1e, mrS2d, mrS3c, mrS7d] + exercises: ["Morpheme co-occurrence rules"] + - word: "takkiiatik" + note: >- + 2 segmentations; 1 survive the exclude rules. + parses: + - signature: "R1+S1e+S2a+S4d+S7e|takkiiatik" + rules: [mrS1e, mrS2a, mrS4d, mrS7e] + exercises: ["Morpheme co-occurrence rules"] + - word: "kanikaiin" + note: >- + 10 segmentations; 3 survive the exclude rules. + parses: + - signature: "R7+S1b+S3a+S4a+S7b|kanikaiin" + rules: [mrS1b, mrS3a, mrS4a, mrS7b] + exercises: ["Morpheme co-occurrence rules"] + - signature: "R7+S2a+S3b+S4a+S7b|kanikaiin" + rules: [mrS2a, mrS3b, mrS4a, mrS7b] + exercises: ["Morpheme co-occurrence rules"] + - signature: "R7+S2d+S3a+S4a+S7b|kanikaiin" + rules: [mrS2d, mrS3a, mrS4a, mrS7b] + exercises: ["Morpheme co-occurrence rules"] + - word: "nikikaanta" + note: >- + 6 segmentations; 6 survive the exclude rules. + parses: + - signature: "R8+S1b+S3a+S4c+S6e|nikikaanta" + rules: [mrS1b, mrS3a, mrS4c, mrS6e] + exercises: ["Morpheme co-occurrence rules"] + - signature: "R8+S1b+S3a+S5e+S6e|nikikaanta" + rules: [mrS1b, mrS3a, mrS5e, mrS6e] + exercises: ["Morpheme co-occurrence rules"] + - signature: "R8+S2a+S3b+S4c+S6e|nikikaanta" + rules: [mrS2a, mrS3b, mrS4c, mrS6e] + exercises: ["Morpheme co-occurrence rules"] + - signature: "R8+S2a+S3b+S5e+S6e|nikikaanta" + rules: [mrS2a, mrS3b, mrS5e, mrS6e] + exercises: ["Morpheme co-occurrence rules"] + - signature: "R8+S2d+S3a+S4c+S6e|nikikaanta" + rules: [mrS2d, mrS3a, mrS4c, mrS6e] + exercises: ["Morpheme co-occurrence rules"] + - signature: "R8+S2d+S3a+S5e+S6e|nikikaanta" + rules: [mrS2d, mrS3a, mrS5e, mrS6e] + exercises: ["Morpheme co-occurrence rules"] + - word: "kinakiiki" + note: >- + 11 segmentations; 2 survive the exclude rules. + parses: + - signature: "R2+S1c+S2a+S4a+S7c|kinakiiki" + rules: [mrS1c, mrS2a, mrS4a, mrS7c] + exercises: ["Morpheme co-occurrence rules"] + - signature: "R2+S1c+S2a+S5b+S6a|kinakiiki" + rules: [mrS1c, mrS2a, mrS5b, mrS6a] + exercises: ["Morpheme co-occurrence rules"] + - word: "kinikkaniki" + note: >- + 5 segmentations; 5 survive the exclude rules. + parses: + - signature: "R2+S1b+S2c+S3d+S4b|kinikkaniki" + rules: [mrS1b, mrS2c, mrS3d, mrS4b] + exercises: ["Morpheme co-occurrence rules"] + - signature: "R2+S1b+S2c+S3d+S7c|kinikkaniki" + rules: [mrS1b, mrS2c, mrS3d, mrS7c] + exercises: ["Morpheme co-occurrence rules"] + - signature: "R2+S1b+S2c+S5c+S7c|kinikkaniki" + rules: [mrS1b, mrS2c, mrS5c, mrS7c] + exercises: ["Morpheme co-occurrence rules"] + - signature: "R2+S1b+S3b+S5c+S7c|kinikkaniki" + rules: [mrS1b, mrS3b, mrS5c, mrS7c] + exercises: ["Morpheme co-occurrence rules"] + - signature: "R2+S2d+S3b+S5c+S7c|kinikkaniki" + rules: [mrS2d, mrS3b, mrS5c, mrS7c] + exercises: ["Morpheme co-occurrence rules"] + - word: "kanniannini" + note: >- + 1 segmentations; 1 survive the exclude rules. + parses: + - signature: "R7+S1d+S2b+S3d+S5c|kanniannini" + rules: [mrS1d, mrS2b, mrS3d, mrS5c] + exercises: ["Morpheme co-occurrence rules"] + - word: "kannianinikia" + note: >- + 3 segmentations; 1 survive the exclude rules. + parses: + - signature: "R7+S1d+S2b+S3c+S4a+S6d|kannianinikia" + rules: [mrS1d, mrS2b, mrS3c, mrS4a, mrS6d] + exercises: ["Morpheme co-occurrence rules"] + - word: "kinninakakia" + note: >- + 6 segmentations; 3 survive the exclude rules. + parses: + - signature: "R2+S1d+S2e+S3b+S4b+S7a|kinninakakia" + rules: [mrS1d, mrS2e, mrS3b, mrS4b, mrS7a] + exercises: ["Morpheme co-occurrence rules"] + - signature: "R2+S1d+S2e+S3b+S6d|kinninakakia" + rules: [mrS1d, mrS2e, mrS3b, mrS6d] + exercises: ["Morpheme co-occurrence rules"] + - signature: "R2+S1d+S2e+S5d+S6d|kinninakakia" + rules: [mrS1d, mrS2e, mrS5d, mrS6d] + exercises: ["Morpheme co-occurrence rules"] + - word: "tikakiniankia" + note: >- + 3 segmentations; 2 survive the exclude rules. + parses: + - signature: "R4+S1c+S2a+S3d+S4c+S6d|tikakiniankia" + rules: [mrS1c, mrS2a, mrS3d, mrS4c, mrS6d] + exercises: ["Morpheme co-occurrence rules"] + - signature: "R4+S1c+S2a+S3d+S5e+S6d|tikakiniankia" + rules: [mrS1c, mrS2a, mrS3d, mrS5e, mrS6d] + exercises: ["Morpheme co-occurrence rules"] + - word: "takiknanikai" + note: >- + 1 segmentations; 1 survive the exclude rules. + parses: + - signature: "R1+S1b+S2e+S3d+S5d+S6a|takiknanikai" + rules: [mrS1b, mrS2e, mrS3d, mrS5d, mrS6a] + exercises: ["Morpheme co-occurrence rules"] + - word: "nikaiinani" + note: >- + 2 segmentations; 2 survive the exclude rules. + parses: + - signature: "R8+S1a+S2a+S3c+S4c+S6a|nikaiinani" + rules: [mrS1a, mrS2a, mrS3c, mrS4c, mrS6a] + exercises: ["Morpheme co-occurrence rules"] + - signature: "R8+S1a+S2a+S3c+S5e+S6a|nikaiinani" + rules: [mrS1a, mrS2a, mrS3c, mrS5e, mrS6a] + exercises: ["Morpheme co-occurrence rules"] + - word: "tinakikaikan" + note: >- + 2 segmentations; 2 survive the exclude rules. + parses: + - signature: "R6+S1c+S2a+S3b+S5b+S7d|tinakikaikan" + rules: [mrS1c, mrS2a, mrS3b, mrS5b, mrS7d] + exercises: ["Morpheme co-occurrence rules"] + - signature: "R6+S1c+S2d+S3a+S5b+S7d|tinakikaikan" + rules: [mrS1c, mrS2d, mrS3a, mrS5b, mrS7d] + exercises: ["Morpheme co-occurrence rules"] + - word: "tinnainnaa" + note: >- + 3 segmentations; 1 survive the exclude rules. + parses: + - signature: "R6+S2e+S3c+S4e+S7a|tinnainnaa" + rules: [mrS2e, mrS3c, mrS4e, mrS7a] + exercises: ["Morpheme co-occurrence rules"] + - word: "tikaankia" + note: >- + 7 segmentations; 6 survive the exclude rules. + parses: + - signature: "R4+S1a+S2b+S4b+S7a|tikaankia" + rules: [mrS1a, mrS2b, mrS4b, mrS7a] + exercises: ["Morpheme co-occurrence rules"] + - signature: "R4+S1a+S2b+S6d|tikaankia" + rules: [mrS1a, mrS2b, mrS6d] + exercises: ["Morpheme co-occurrence rules"] + - signature: "R4+S1a+S4c+S6d|tikaankia" + rules: [mrS1a, mrS4c, mrS6d] + exercises: ["Morpheme co-occurrence rules"] + - signature: "R4+S1a+S5e+S6d|tikaankia" + rules: [mrS1a, mrS5e, mrS6d] + exercises: ["Morpheme co-occurrence rules"] + - signature: "R4+S3a+S4c+S6d|tikaankia" + rules: [mrS3a, mrS4c, mrS6d] + exercises: ["Morpheme co-occurrence rules"] + - signature: "R4+S3a+S5e+S6d|tikaankia" + rules: [mrS3a, mrS5e, mrS6d] + exercises: ["Morpheme co-occurrence rules"] + - word: "katkiakii" + note: >- + 2 segmentations; 2 survive the exclude rules. + parses: + - signature: "R5+S1e+S3a+S4b+S6a|katkiakii" + rules: [mrS1e, mrS3a, mrS4b, mrS6a] + exercises: ["Morpheme co-occurrence rules"] + - signature: "R5+S1e+S3e+S4a+S6a|katkiakii" + rules: [mrS1e, mrS3e, mrS4a, mrS6a] + exercises: ["Morpheme co-occurrence rules"] + - word: "kinnainanki" + note: >- + 2 segmentations; 2 survive the exclude rules. + parses: + - signature: "R2+S2e+S3c+S4c+S7c|kinnainanki" + rules: [mrS2e, mrS3c, mrS4c, mrS7c] + exercises: ["Morpheme co-occurrence rules"] + - signature: "R2+S2e+S3c+S5e+S7c|kinnainanki" + rules: [mrS2e, mrS3c, mrS5e, mrS7c] + exercises: ["Morpheme co-occurrence rules"] + - word: "tinniinikii" + note: >- + 1 segmentations; 1 survive the exclude rules. + parses: + - signature: "R6+S1d+S2a+S3d+S4b+S6a|tinniinikii" + rules: [mrS1d, mrS2a, mrS3d, mrS4b, mrS6a] + exercises: ["Morpheme co-occurrence rules"] + - word: "takkiakikia" + note: >- + 3 segmentations; 2 survive the exclude rules. + parses: + - signature: "R1+S1e+S3a+S4b+S6d|takkiakikia" + rules: [mrS1e, mrS3a, mrS4b, mrS6d] + exercises: ["Morpheme co-occurrence rules"] + - signature: "R1+S1e+S3e+S4a+S6d|takkiakikia" + rules: [mrS1e, mrS3e, mrS4a, mrS6d] + exercises: ["Morpheme co-occurrence rules"] + - word: "tikikniatkia" + note: >- + 2 segmentations; 2 survive the exclude rules. + parses: + - signature: "R4+S1b+S3d+S4d+S6d|tikikniatkia" + rules: [mrS1b, mrS3d, mrS4d, mrS6d] + exercises: ["Morpheme co-occurrence rules"] + - signature: "R4+S2d+S3d+S4d+S6d|tikikniatkia" + rules: [mrS2d, mrS3d, mrS4d, mrS6d] + exercises: ["Morpheme co-occurrence rules"] + - word: "katanaain" + note: >- + 5 segmentations; 3 survive the exclude rules. + parses: + - signature: "R5+S1a+S2e+S3a+S7b|katanaain" + rules: [mrS1a, mrS2e, mrS3a, mrS7b] + exercises: ["Morpheme co-occurrence rules"] + - signature: "R5+S1a+S2e+S5a+S7b|katanaain" + rules: [mrS1a, mrS2e, mrS5a, mrS7b] + exercises: ["Morpheme co-occurrence rules"] + - signature: "R5+S2b+S3a+S5a+S7b|katanaain" + rules: [mrS2b, mrS3a, mrS5a, mrS7b] + exercises: ["Morpheme co-occurrence rules"] + - word: "natkinaaa" + note: >- + 4 segmentations; 3 survive the exclude rules. + parses: + - signature: "R3+S1e+S2e+S3a+S5a|natkinaaa" + rules: [mrS1e, mrS2e, mrS3a, mrS5a] + exercises: ["Morpheme co-occurrence rules"] + - signature: "R3+S1e+S2e+S3a+S7a|natkinaaa" + rules: [mrS1e, mrS2e, mrS3a, mrS7a] + exercises: ["Morpheme co-occurrence rules"] + - signature: "R3+S1e+S2e+S5a+S7a|natkinaaa" + rules: [mrS1e, mrS2e, mrS5a, mrS7a] + exercises: ["Morpheme co-occurrence rules"] + - word: "tikanakanna" + note: >- + 2 segmentations; 2 survive the exclude rules. + parses: + - signature: "R4+S2b+S3e+S4c+S6c|tikanakanna" + rules: [mrS2b, mrS3e, mrS4c, mrS6c] + exercises: ["Morpheme co-occurrence rules"] + - signature: "R4+S2b+S3e+S5e+S6c|tikanakanna" + rules: [mrS2b, mrS3e, mrS5e, mrS6c] + exercises: ["Morpheme co-occurrence rules"] + - word: "takikakkaan" + note: >- + 2 segmentations; 2 survive the exclude rules. + parses: + - signature: "R1+S1b+S3e+S5d+S7d|takikakkaan" + rules: [mrS1b, mrS3e, mrS5d, mrS7d] + exercises: ["Morpheme co-occurrence rules"] + - signature: "R1+S2d+S3e+S5d+S7d|takikakkaan" + rules: [mrS2d, mrS3e, mrS5d, mrS7d] + exercises: ["Morpheme co-occurrence rules"] + - word: "katanainkikia" + note: >- + 1 segmentations; 1 survive the exclude rules. + parses: + - signature: "R5+S1a+S2e+S3c+S4b+S6d|katanainkikia" + rules: [mrS1a, mrS2e, mrS3c, mrS4b, mrS6d] + exercises: ["Morpheme co-occurrence rules"] + - word: "natikikaikkia" + note: >- + 2 segmentations; 2 survive the exclude rules. + parses: + - signature: "R3+S1b+S2a+S3b+S5b+S6d|natikikaikkia" + rules: [mrS1b, mrS2a, mrS3b, mrS5b, mrS6d] + exercises: ["Morpheme co-occurrence rules"] + - signature: "R3+S1b+S2d+S3a+S5b+S6d|natikikaikkia" + rules: [mrS1b, mrS2d, mrS3a, mrS5b, mrS6d] + exercises: ["Morpheme co-occurrence rules"] + - word: "kanikankanina" + note: >- + 1 segmentations; 1 survive the exclude rules. + parses: + - signature: "R7+S1b+S2b+S3b+S5c+S6c|kanikankanina" + rules: [mrS1b, mrS2b, mrS3b, mrS5c, mrS6c] + exercises: ["Morpheme co-occurrence rules"] + - word: "tinkiananai" + note: >- + 2 segmentations; 1 survive the exclude rules. + parses: + - signature: "R6+S1e+S2b+S3a+S4e+S6a|tinkiananai" + rules: [mrS1e, mrS2b, mrS3a, mrS4e, mrS6a] + exercises: ["Morpheme co-occurrence rules"] diff --git a/conformance-stress/edge-cases/bantu-extension-required-slot/grammar.xml b/conformance-stress/edge-cases/bantu-extension-required-slot/grammar.xml new file mode 100644 index 000000000..597d5904e --- /dev/null +++ b/conformance-stress/edge-cases/bantu-extension-required-slot/grammar.xml @@ -0,0 +1,455 @@ + + + + + StressBantuExtensionRequiredSlot + + v + n + + + Main + + a + e + i + o + u + b + d + g + k + l + m + n + p + s + t + v + w + y + c + r + h + z + j + + + + Any + + + + Main + + + mrEX1 + + + + il + + + EX1 + EX1 + + + mrEX2 + + + + an + + + EX2 + EX2 + + + mrEX3 + + + + is + + + EX3 + EX3 + + + mrEX4 + + + + ik + + + EX4 + EX4 + + + mrEX5 + + + + ul + + + EX5 + EX5 + + + mrFV1 + + + + a + + + FV1 + FV1 + + + mrFV2 + + + + e + + + FV2 + FV2 + + + mrOM1 + + + + mu + + + OM1 + OM1 + + + mrOM2 + + + + wa + + + OM2 + OM2 + + + mrOM3 + + + + ki + + + OM3 + OM3 + + + mrOM4 + + + + ku + + + OM4 + OM4 + + + mrTB1 + + + + a + + + TB1 + TB1 + + + mrTB2 + + + + na + + + TB2 + TB2 + + + mrTB3 + + + + li + + + TB3 + TB3 + + + mrTB4 + + + + ta + + + TB4 + TB4 + + + mrTB5 + + + + me + + + TB5 + TB5 + + + mrSM1 + + + + ni + + + SM1 + SM1 + + + mrSM2 + + + + u + + + SM2 + SM2 + + + mrSM3 + + + + a + + + SM3 + SM3 + + + mrSM4 + + + + tu + + + SM4 + SM4 + + + mrSM5 + + + + m + + + SM5 + SM5 + + + mrSM6 + + + + wa + + + SM6 + SM6 + + + mrCL1 + + + + m + + + CL1 + CL1 + + + mrCL2 + + + + wa + + + CL2 + CL2 + + + mrCL3 + + + + ki + + + CL3 + CL3 + + + mrCL4 + + + + vi + + + CL4 + CL4 + + + + + verbTemplate + fv + om + tam + sm + + + nounTemplate + cls + + + + + lim + V_LIM + lim.V + + + tum + V_TUM + tum.V + + + bon + V_BON + bon.V + + + kal + V_KAL + kal.V + + + pat + V_PAT + pat.V + + + sem + V_SEM + sem.V + + + som + V_SOM + som.V + + + gul + V_GUL + gul.V + + + nen + V_NEN + nen.V + + + dik + V_DIK + dik.V + + + lek + V_LEK + lek.V + + + wan + V_WAN + wan.V + + + lim + N_LIM + lim.N + + + tum + N_TUM + tum.N + + + kal + N_KAL + kal.N + + + bon + N_BON + bon.N + + + sima + N_SIMA + sima.N + + + kiti + N_KITI + kiti.N + + + tuma + N_TUMA + tuma.N + + + taka + N_TAKA + taka.N + + + mtu + N_MTU + mtu.N + + + + + + diff --git a/conformance-stress/edge-cases/bantu-extension-required-slot/words.yaml b/conformance-stress/edge-cases/bantu-extension-required-slot/words.yaml new file mode 100644 index 000000000..5ec549eb3 --- /dev/null +++ b/conformance-stress/edge-cases/bantu-extension-required-slot/words.yaml @@ -0,0 +1,462 @@ +# kind: stress (timing and optimization parity fixture, not conformance; see conformance-stress/README.md) +# HAND DERIVATION (see grammar.xml). Five FS-free verbal extension suffixes apply in any order in the stratum; the verb template then needs a required TAM prefix (5 fillers) with optional subject, object and final-vowel slots; the noun template needs a required class prefix. Verb and noun roots share shapes, so extension-laden nominal forms spawn verb candidates that apply extensions and then die at the required TAM slot. +# Parses for each word are every (root, rule choice) whose surface equals the word. They are engine output (master's, +# see conformance-stress/README.md); no independent enumeration was run. Signature: morpheme IDs in surface order, then "|" and the surface. +language: StressBantuExtensionRequiredSlot +inspired_by: ["Bantu verb with stratum-level extension chain and a required TAM slot"] +sources: + - "synthetic stress fixture (not a specific language)" +requires: [] +fieldworks_producible: true +budget_ms: 60000 +words: + - word: mtumilan + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "CL1+N_TUM+EX1+EX2|mtumilan" + rules: [mrEX1, mrEX2, mrCL1] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: vikitianil + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "CL4+N_KITI+EX2+EX1|vikitianil" + rules: [mrEX2, mrEX1, mrCL4] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: kibonisik + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "CL3+N_BON+EX3+EX4|kibonisik" + rules: [mrEX3, mrEX4, mrCL3] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: kisimaisan + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "CL3+N_SIMA+EX3+EX2|kisimaisan" + rules: [mrEX3, mrEX2, mrCL3] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: vimtuulik + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "CL4+N_MTU+EX5+EX4|vimtuulik" + rules: [mrEX5, mrEX4, mrCL4] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: kitakaikan + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "CL3+N_TAKA+EX4+EX2|kitakaikan" + rules: [mrEX4, mrEX2, mrCL3] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: mlimikan + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "CL1+N_LIM+EX4+EX2|mlimikan" + rules: [mrEX4, mrEX2, mrCL1] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: kibonulil + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "CL3+N_BON+EX5+EX1|kibonulil" + rules: [mrEX5, mrEX1, mrCL3] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: kikalilis + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "CL3+N_KAL+EX1+EX3|kikalilis" + rules: [mrEX1, mrEX3, mrCL3] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: wamtuil + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "CL2+N_MTU+EX1|wamtuil" + rules: [mrEX1, mrCL2] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: wakalikil + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "CL2+N_KAL+EX4+EX1|wakalikil" + rules: [mrEX4, mrEX1, mrCL2] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: walimikan + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "CL2+N_LIM+EX4+EX2|walimikan" + rules: [mrEX4, mrEX2, mrCL2] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: mbonilan + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "CL1+N_BON+EX1+EX2|mbonilan" + rules: [mrEX1, mrEX2, mrCL1] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: wasimaanul + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "CL2+N_SIMA+EX2+EX5|wasimaanul" + rules: [mrEX2, mrEX5, mrCL2] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: mtumilis + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "CL1+N_TUM+EX1+EX3|mtumilis" + rules: [mrEX1, mrEX3, mrCL1] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: mkitiilan + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "CL1+N_KITI+EX1+EX2|mkitiilan" + rules: [mrEX1, mrEX2, mrCL1] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: wakitiis + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "CL2+N_KITI+EX3|wakitiis" + rules: [mrEX3, mrCL2] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: kisimaikil + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "CL3+N_SIMA+EX4+EX1|kisimaikil" + rules: [mrEX4, mrEX1, mrCL3] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: mmtuik + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "CL1+N_MTU+EX4|mmtuik" + rules: [mrEX4, mrCL1] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: vitumilul + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "CL4+N_TUM+EX1+EX5|vitumilul" + rules: [mrEX1, mrEX5, mrCL4] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: mlimanik + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "CL1+N_LIM+EX2+EX4|mlimanik" + rules: [mrEX2, mrEX4, mrCL1] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: kitakaikul + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "CL3+N_TAKA+EX4+EX5|kitakaikul" + rules: [mrEX4, mrEX5, mrCL3] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: kibonilan + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "CL3+N_BON+EX1+EX2|kibonilan" + rules: [mrEX1, mrEX2, mrCL3] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: vitumaulan + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "CL4+N_TUMA+EX5+EX2|vitumaulan" + rules: [mrEX5, mrEX2, mrCL4] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: kimtuulil + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "CL3+N_MTU+EX5+EX1|kimtuulil" + rules: [mrEX5, mrEX1, mrCL3] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: nimemubonulisane + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "SM1+TB5+OM1+V_BON+EX5+EX3+EX2+FV2|nimemubonulisane" + rules: [mrEX5, mrEX3, mrEX2, mrFV2, mrOM1, mrTB5, mrSM1] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: mlisemikilane + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "SM5+TB3+V_SEM+EX4+EX1+EX2+FV2|mlisemikilane" + rules: [mrEX4, mrEX1, mrEX2, mrFV2, mrTB3, mrSM5] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: wanalimilulana + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "SM6+TB2+V_LIM+EX1+EX5+EX2+FV1|wanalimilulana" + rules: [mrEX1, mrEX5, mrEX2, mrFV1, mrTB2, mrSM6] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: nitawasemikila + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "SM1+TB4+OM2+V_SEM+EX4+EX1+FV1|nitawasemikila" + rules: [mrEX4, mrEX1, mrFV1, mrOM2, mrTB4, mrSM1] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: tulikukalanilis + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "SM4+TB3+OM4+V_KAL+EX2+EX1+EX3|tulikukalanilis" + rules: [mrEX2, mrEX1, mrEX3, mrOM4, mrTB3, mrSM4] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: nitakilimanikil + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "SM1+TB4+OM3+V_LIM+EX2+EX4+EX1|nitakilimanikil" + rules: [mrEX2, mrEX4, mrEX1, mrOM3, mrTB4, mrSM1] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: takulekanisile + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "TB4+OM4+V_LEK+EX2+EX3+EX1+FV2|takulekanisile" + rules: [mrEX2, mrEX3, mrEX1, mrFV2, mrOM4, mrTB4] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: tumekiwanikilis + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "SM4+TB5+OM3+V_WAN+EX4+EX1+EX3|tumekiwanikilis" + rules: [mrEX4, mrEX1, mrEX3, mrOM3, mrTB5, mrSM4] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: tutawawanilisula + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "SM4+TB4+OM2+V_WAN+EX1+EX3+EX5+FV1|tutawawanilisula" + rules: [mrEX1, mrEX3, mrEX5, mrFV1, mrOM2, mrTB4, mrSM4] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: memubonikise + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "TB5+OM1+V_BON+EX4+EX3+FV2|memubonikise" + rules: [mrEX4, mrEX3, mrFV2, mrOM1, mrTB5] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: waliwasomisikile + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "SM6+TB3+OM2+V_SOM+EX3+EX4+EX1+FV2|waliwasomisikile" + rules: [mrEX3, mrEX4, mrEX1, mrFV2, mrOM2, mrTB3, mrSM6] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: alimisikile + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "TB1+V_LIM+EX3+EX4+EX1+FV2|alimisikile" + rules: [mrEX3, mrEX4, mrEX1, mrFV2, mrTB1] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: umewasomisan + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "SM2+TB5+OM2+V_SOM+EX3+EX2|umewasomisan" + rules: [mrEX3, mrEX2, mrOM2, mrTB5, mrSM2] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: akugululisile + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "TB1+OM4+V_GUL+EX5+EX3+EX1+FV2|akugululisile" + rules: [mrEX5, mrEX3, mrEX1, mrFV2, mrOM4, mrTB1] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: liwasemisilule + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "TB3+OM2+V_SEM+EX3+EX1+EX5+FV2|liwasemisilule" + rules: [mrEX3, mrEX1, mrEX5, mrFV2, mrOM2, mrTB3] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: makisemisilike + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "SM5+TB1+OM3+V_SEM+EX3+EX1+EX4+FV2|makisemisilike" + rules: [mrEX3, mrEX1, mrEX4, mrFV2, mrOM3, mrTB1, mrSM5] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: mnakibonikana + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "SM5+TB2+OM3+V_BON+EX4+EX2+FV1|mnakibonikana" + rules: [mrEX4, mrEX2, mrFV1, mrOM3, mrTB2, mrSM5] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: ulikikalanisika + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "SM2+TB3+OM3+V_KAL+EX2+EX3+EX4+FV1|ulikikalanisika" + rules: [mrEX2, mrEX3, mrEX4, mrFV1, mrOM3, mrTB3, mrSM2] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: atakibonikulila + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "SM3+TB4+OM3+V_BON+EX4+EX5+EX1+FV1|atakibonikulila" + rules: [mrEX4, mrEX5, mrEX1, mrFV1, mrOM3, mrTB4, mrSM3] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: wamemulimanulika + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "SM6+TB5+OM1+V_LIM+EX2+EX5+EX4+FV1|wamemulimanulika" + rules: [mrEX2, mrEX5, mrEX4, mrFV1, mrOM1, mrTB5, mrSM6] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: wanakupatulilisa + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "SM6+TB2+OM4+V_PAT+EX5+EX1+EX3+FV1|wanakupatulilisa" + rules: [mrEX5, mrEX1, mrEX3, mrFV1, mrOM4, mrTB2, mrSM6] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: tumekisemisula + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "SM4+TB5+OM3+V_SEM+EX3+EX5+FV1|tumekisemisula" + rules: [mrEX3, mrEX5, mrFV1, mrOM3, mrTB5, mrSM4] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: alimunenisik + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "SM3+TB3+OM1+V_NEN+EX3+EX4|alimunenisik" + rules: [mrEX3, mrEX4, mrOM1, mrTB3, mrSM3] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: uliwatumulika + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "SM2+TB3+OM2+V_TUM+EX5+EX4+FV1|uliwatumulika" + rules: [mrEX5, mrEX4, mrFV1, mrOM2, mrTB3, mrSM2] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: unadikanisik + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "SM2+TB2+V_DIK+EX2+EX3+EX4|unadikanisik" + rules: [mrEX2, mrEX3, mrEX4, mrTB2, mrSM2] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + diff --git a/conformance-stress/edge-cases/bantu-tam-fusion/grammar.xml b/conformance-stress/edge-cases/bantu-tam-fusion/grammar.xml new file mode 100644 index 000000000..bd8d45530 --- /dev/null +++ b/conformance-stress/edge-cases/bantu-tam-fusion/grammar.xml @@ -0,0 +1,321 @@ + + + + + bantu-tam-fusion + v + + syl+- + cons+- + son+- + nas+- + voice+- + cont+- + high+- + low+- + back+- + round+- + lat+- + placelabialalveolarvelarglottalnone + + + Main + a + e + i + o + u + b + d + g + h + k + l + m + n + p + r + s + t + w + y + + Any + Main + +obj_mumumuobj_muOBJ.mu +obj_kukukuobj_kuOBJ.ku +obj_wawawaobj_waOBJ.wa +obj_bababaobj_baOBJ.ba +obj_mimimiobj_miOBJ.mi +obj_tititiobj_tiOBJ.ti +obj_nininiobj_niOBJ.ni +obj_riririobj_riOBJ.ri +obj_sisisiobj_siOBJ.si +obj_dididiobj_diOBJ.di +obj_gagagaobj_gaOBJ.ga +obj_hahahaobj_haOBJ.ha +obj_kakakaobj_kaOBJ.ka +obj_lalalaobj_laOBJ.la +obj_mamamaobj_maOBJ.ma +obj_nananaobj_naOBJ.na +obj_papapaobj_paOBJ.pa +obj_rararaobj_raOBJ.ra +obj_sasasaobj_saOBJ.sa +obj_tatataobj_taOBJ.ta +tam_iyeiyetam_iyeTAM.iye +ext_0_isisext_0_isEXT.is +subj_0_nununusubj_0_nuSUBJ.nu +subj_0_bububusubj_0_buSUBJ.bu +subj_0_dududusubj_0_duSUBJ.du +subj_0_gogogosubj_0_goSUBJ.go +subj_0_hohohosubj_0_hoSUBJ.ho +subj_0_kokokosubj_0_koSUBJ.ko +subj_0_lololosubj_0_loSUBJ.lo +subj_0_momomosubj_0_moSUBJ.mo +subj_0_nononosubj_0_noSUBJ.no +subj_0_popoposubj_0_poSUBJ.po +subj_0_rororosubj_0_roSUBJ.ro +subj_0_sosososubj_0_soSUBJ.so +subj_0_tototosubj_0_toSUBJ.to +subj_0_wowowosubj_0_woSUBJ.wo +subj_0_yoyoyosubj_0_yoSUBJ.yo +fv_0afv_0FV +tam_ileiletam_ileTAM.ile +ext_1_ililext_1_ilEXT.il +subj_1_nununusubj_1_nuSUBJ.nu +subj_1_bububusubj_1_buSUBJ.bu +subj_1_dududusubj_1_duSUBJ.du +subj_1_gogogosubj_1_goSUBJ.go +subj_1_hohohosubj_1_hoSUBJ.ho +subj_1_kokokosubj_1_koSUBJ.ko +subj_1_lololosubj_1_loSUBJ.lo +subj_1_momomosubj_1_moSUBJ.mo +subj_1_nononosubj_1_noSUBJ.no +subj_1_popoposubj_1_poSUBJ.po +subj_1_rororosubj_1_roSUBJ.ro +subj_1_sosososubj_1_soSUBJ.so +subj_1_tototosubj_1_toSUBJ.to +subj_1_wowowosubj_1_woSUBJ.wo +subj_1_yoyoyosubj_1_yoSUBJ.yo +fv_1afv_1FV +pl_1nipl_1PL +tam_anaanatam_anaTAM.ana +ext_2_ananext_2_anEXT.an +subj_2_nununusubj_2_nuSUBJ.nu +subj_2_bububusubj_2_buSUBJ.bu +subj_2_dududusubj_2_duSUBJ.du +subj_2_gogogosubj_2_goSUBJ.go +subj_2_hohohosubj_2_hoSUBJ.ho +subj_2_kokokosubj_2_koSUBJ.ko +subj_2_lololosubj_2_loSUBJ.lo +subj_2_momomosubj_2_moSUBJ.mo +subj_2_nononosubj_2_noSUBJ.no +subj_2_popoposubj_2_poSUBJ.po +subj_2_rororosubj_2_roSUBJ.ro +subj_2_sosososubj_2_soSUBJ.so +subj_2_tototosubj_2_toSUBJ.to +subj_2_wowowosubj_2_woSUBJ.wo +subj_2_yoyoyosubj_2_yoSUBJ.yo +fv_2afv_2FV +tam_ekaekatam_ekaTAM.eka +ext_3_ikikext_3_ikEXT.ik +subj_3_nununusubj_3_nuSUBJ.nu +subj_3_bububusubj_3_buSUBJ.bu +subj_3_dududusubj_3_duSUBJ.du +subj_3_gogogosubj_3_goSUBJ.go +subj_3_hohohosubj_3_hoSUBJ.ho +subj_3_kokokosubj_3_koSUBJ.ko +subj_3_lololosubj_3_loSUBJ.lo +subj_3_momomosubj_3_moSUBJ.mo +subj_3_nononosubj_3_noSUBJ.no +subj_3_popoposubj_3_poSUBJ.po +subj_3_rororosubj_3_roSUBJ.ro +subj_3_sosososubj_3_soSUBJ.so +subj_3_tototosubj_3_toSUBJ.to +subj_3_wowowosubj_3_woSUBJ.wo +subj_3_yoyoyosubj_3_yoSUBJ.yo +fv_3afv_3FV +pl_3nipl_3PL +tam_okaokatam_okaTAM.oka +ext_4_umumext_4_umEXT.um +subj_4_nununusubj_4_nuSUBJ.nu +subj_4_bububusubj_4_buSUBJ.bu +subj_4_dududusubj_4_duSUBJ.du +subj_4_gogogosubj_4_goSUBJ.go +subj_4_hohohosubj_4_hoSUBJ.ho +subj_4_kokokosubj_4_koSUBJ.ko +subj_4_lololosubj_4_loSUBJ.lo +subj_4_momomosubj_4_moSUBJ.mo +subj_4_nononosubj_4_noSUBJ.no +subj_4_popoposubj_4_poSUBJ.po +subj_4_rororosubj_4_roSUBJ.ro +subj_4_sosososubj_4_soSUBJ.so +subj_4_tototosubj_4_toSUBJ.to +subj_4_wowowosubj_4_woSUBJ.wo +subj_4_yoyoyosubj_4_yoSUBJ.yo +fv_4afv_4FV +tam_kaakaatam_kaaTAM.kaa +ext_5_ekekext_5_ekEXT.ek +subj_5_nununusubj_5_nuSUBJ.nu +subj_5_bububusubj_5_buSUBJ.bu +subj_5_dududusubj_5_duSUBJ.du +subj_5_gogogosubj_5_goSUBJ.go +subj_5_hohohosubj_5_hoSUBJ.ho +subj_5_kokokosubj_5_koSUBJ.ko +subj_5_lololosubj_5_loSUBJ.lo +subj_5_momomosubj_5_moSUBJ.mo +subj_5_nononosubj_5_noSUBJ.no +subj_5_popoposubj_5_poSUBJ.po +subj_5_rororosubj_5_roSUBJ.ro +subj_5_sosososubj_5_soSUBJ.so +subj_5_tototosubj_5_toSUBJ.to +subj_5_wowowosubj_5_woSUBJ.wo +subj_5_yoyoyosubj_5_yoSUBJ.yo +fv_5afv_5FV +pl_5nipl_5PL +tam_jeeyeetam_jeeTAM.jee +ext_6_ololext_6_olEXT.ol +subj_6_nununusubj_6_nuSUBJ.nu +subj_6_bububusubj_6_buSUBJ.bu +subj_6_dududusubj_6_duSUBJ.du +subj_6_gogogosubj_6_goSUBJ.go +subj_6_hohohosubj_6_hoSUBJ.ho +subj_6_kokokosubj_6_koSUBJ.ko +subj_6_lololosubj_6_loSUBJ.lo +subj_6_momomosubj_6_moSUBJ.mo +subj_6_nononosubj_6_noSUBJ.no +subj_6_popoposubj_6_poSUBJ.po +subj_6_rororosubj_6_roSUBJ.ro +subj_6_sosososubj_6_soSUBJ.so +subj_6_tototosubj_6_toSUBJ.to +subj_6_wowowosubj_6_woSUBJ.wo +subj_6_yoyoyosubj_6_yoSUBJ.yo +fv_6afv_6FV +tam_arearetam_areTAM.are +ext_7_ututext_7_utEXT.ut +subj_7_nununusubj_7_nuSUBJ.nu +subj_7_bububusubj_7_buSUBJ.bu +subj_7_dududusubj_7_duSUBJ.du +subj_7_gogogosubj_7_goSUBJ.go +subj_7_hohohosubj_7_hoSUBJ.ho +subj_7_kokokosubj_7_koSUBJ.ko +subj_7_lololosubj_7_loSUBJ.lo +subj_7_momomosubj_7_moSUBJ.mo +subj_7_nononosubj_7_noSUBJ.no +subj_7_popoposubj_7_poSUBJ.po +subj_7_rororosubj_7_roSUBJ.ro +subj_7_sosososubj_7_soSUBJ.so +subj_7_tototosubj_7_toSUBJ.to +subj_7_wowowosubj_7_woSUBJ.wo +subj_7_yoyoyosubj_7_yoSUBJ.yo +fv_7afv_7FV +pl_7nipl_7PL +tam_meemeetam_meeTAM.mee +ext_8_adadext_8_adEXT.ad +subj_8_nununusubj_8_nuSUBJ.nu +subj_8_bububusubj_8_buSUBJ.bu +subj_8_dududusubj_8_duSUBJ.du +subj_8_gogogosubj_8_goSUBJ.go +subj_8_hohohosubj_8_hoSUBJ.ho +subj_8_kokokosubj_8_koSUBJ.ko +subj_8_lololosubj_8_loSUBJ.lo +subj_8_momomosubj_8_moSUBJ.mo +subj_8_nononosubj_8_noSUBJ.no +subj_8_popoposubj_8_poSUBJ.po +subj_8_rororosubj_8_roSUBJ.ro +subj_8_sosososubj_8_soSUBJ.so +subj_8_tototosubj_8_toSUBJ.to +subj_8_wowowosubj_8_woSUBJ.wo +subj_8_yoyoyosubj_8_yoSUBJ.yo +fv_8afv_8FV +tam_tuutuutam_tuuTAM.tuu +ext_9_ememext_9_emEXT.em +subj_9_nununusubj_9_nuSUBJ.nu +subj_9_bububusubj_9_buSUBJ.bu +subj_9_dududusubj_9_duSUBJ.du +subj_9_gogogosubj_9_goSUBJ.go +subj_9_hohohosubj_9_hoSUBJ.ho +subj_9_kokokosubj_9_koSUBJ.ko +subj_9_lololosubj_9_loSUBJ.lo +subj_9_momomosubj_9_moSUBJ.mo +subj_9_nononosubj_9_noSUBJ.no +subj_9_popoposubj_9_poSUBJ.po +subj_9_rororosubj_9_roSUBJ.ro +subj_9_sosososubj_9_soSUBJ.so +subj_9_tototosubj_9_toSUBJ.to +subj_9_wowowosubj_9_woSUBJ.wo +subj_9_yoyoyosubj_9_yoSUBJ.yo +fv_9afv_9FV +pl_9nipl_9PL +tam_googootam_gooTAM.goo +ext_10_ipipext_10_ipEXT.ip +subj_10_nununusubj_10_nuSUBJ.nu +subj_10_bububusubj_10_buSUBJ.bu +subj_10_dududusubj_10_duSUBJ.du +subj_10_gogogosubj_10_goSUBJ.go +subj_10_hohohosubj_10_hoSUBJ.ho +subj_10_kokokosubj_10_koSUBJ.ko +subj_10_lololosubj_10_loSUBJ.lo +subj_10_momomosubj_10_moSUBJ.mo +subj_10_nononosubj_10_noSUBJ.no +subj_10_popoposubj_10_poSUBJ.po +subj_10_rororosubj_10_roSUBJ.ro +subj_10_sosososubj_10_soSUBJ.so +subj_10_tototosubj_10_toSUBJ.to +subj_10_wowowosubj_10_woSUBJ.wo +subj_10_yoyoyosubj_10_yoSUBJ.yo +fv_10afv_10FV +tam_kaa-iyekaaiyetam_kaa-iyeTAM.kaa-iye +ext_11_obobext_11_obEXT.ob +subj_11_nununusubj_11_nuSUBJ.nu +subj_11_bububusubj_11_buSUBJ.bu +subj_11_dududusubj_11_duSUBJ.du +subj_11_gogogosubj_11_goSUBJ.go +subj_11_hohohosubj_11_hoSUBJ.ho +subj_11_kokokosubj_11_koSUBJ.ko +subj_11_lololosubj_11_loSUBJ.lo +subj_11_momomosubj_11_moSUBJ.mo +subj_11_nononosubj_11_noSUBJ.no +subj_11_popoposubj_11_poSUBJ.po +subj_11_rororosubj_11_roSUBJ.ro +subj_11_sosososubj_11_soSUBJ.so +subj_11_tototosubj_11_toSUBJ.to +subj_11_wowowosubj_11_woSUBJ.wo +subj_11_yoyoyosubj_11_yoSUBJ.yo +fv_11afv_11FV +pl_11nipl_11PL + +t0_iyetenseobjectextsubjectfvt1_iletenseobjectextsubjectfvplt2_anatenseobjectextsubjectfvt3_ekatenseobjectextsubjectfvplt4_okatenseobjectextsubjectfvt5_kaatenseobjectextsubjectfvplt6_jeetenseobjectextsubjectfvt7_aretenseobjectextsubjectfvplt8_meetenseobjectextsubjectfvt9_tuutenseobjectextsubjectfvplt10_gootenseobjectextsubjectfvt11_kaa-iyetenseobjectextsubjectfvpl + +balbalbal +temtemtem +kumkumkum +dipdipdip +gorgorgor +hanhanhan +keskeskes +lublublub +mermermer +nugnugnug +patpatpat +remremrem +solsolsol +tagtagtag +wabwabwab +belbelbel +dagdagdag +gumgumgum +hithithit +korkorkor +lenlenlen +mosmosmos +nemnemnem +pirpirpir +rotrotrot +sabsabsab +tultultul +wenwenwen +bisbisbis +doldoldol + diff --git a/conformance-stress/edge-cases/bantu-tam-fusion/words.yaml b/conformance-stress/edge-cases/bantu-tam-fusion/words.yaml new file mode 100644 index 000000000..a09c19ca7 --- /dev/null +++ b/conformance-stress/edge-cases/bantu-tam-fusion/words.yaml @@ -0,0 +1,251 @@ +# kind: stress (timing and optimization parity fixture, not conformance; see conformance-stress/README.md) +language: StressBantuTamFusion +sources: [] +requires: [] +fieldworks_producible: true +budget_ms: 60000 +words: + - word: wnonemileila + note: "Bantu vowel-fusion slot-template stress: 60 words over 12 synthetic templates whose object and subject rules each have a plain and a vowel-fusion allomorph; expected parses are the master engine's, 28 words have no parse." + expect_fail: true + - word: rokaatemani + note: "Bantu vowel-fusion slot-template stress: 60 words over 12 synthetic templates whose object and subject rules each have a plain and a vowel-fusion allomorph; expected parses are the master engine's, 28 words have no parse." + parses: + - signature: "subj_5_ro+tam_kaa+tem+fv_5+pl_5|rokaatemani" + rules: [fv_5, pl_5, subj_5_ro, tam_kaa] + - word: dudagileilni + note: "Bantu vowel-fusion slot-template stress: 60 words over 12 synthetic templates whose object and subject rules each have a plain and a vowel-fusion allomorph; expected parses are the master engine's, 28 words have no parse." + parses: + - signature: "subj_1_du+dag+tam_ile+ext_1_il+pl_1|dudagileilni" + rules: [ext_1_il, pl_1, subj_1_du, tam_ile] + - word: dbubbabisana + note: "Bantu vowel-fusion slot-template stress: 60 words over 12 synthetic templates whose object and subject rules each have a plain and a vowel-fusion allomorph; expected parses are the master engine's, 28 words have no parse." + expect_fail: true + - word: yogorileani + note: "Bantu vowel-fusion slot-template stress: 60 words over 12 synthetic templates whose object and subject rules each have a plain and a vowel-fusion allomorph; expected parses are the master engine's, 28 words have no parse." + parses: + - signature: "subj_1_yo+gor+tam_ile+fv_1+pl_1|yogorileani" + rules: [fv_1, pl_1, subj_1_yo, tam_ile] + - word: wokesana + note: "Bantu vowel-fusion slot-template stress: 60 words over 12 synthetic templates whose object and subject rules each have a plain and a vowel-fusion allomorph; expected parses are the master engine's, 28 words have no parse." + parses: + - signature: "subj_2_wo+kes+tam_ana|wokesana" + rules: [subj_2_wo, tam_ana] + - word: kgogyayeedagola + note: "Bantu vowel-fusion slot-template stress: 60 words over 12 synthetic templates whose object and subject rules each have a plain and a vowel-fusion allomorph; expected parses are the master engine's, 28 words have no parse." + expect_fail: true + - word: holayeekum + note: "Bantu vowel-fusion slot-template stress: 60 words over 12 synthetic templates whose object and subject rules each have a plain and a vowel-fusion allomorph; expected parses are the master engine's, 28 words have no parse." + parses: + - signature: "subj_6_ho+obj_la+tam_jee+kum|holayeekum" + rules: [obj_la, subj_6_ho, tam_jee] + - word: hopatanaana + note: "Bantu vowel-fusion slot-template stress: 60 words over 12 synthetic templates whose object and subject rules each have a plain and a vowel-fusion allomorph; expected parses are the master engine's, 28 words have no parse." + parses: + - signature: "subj_2_ho+pat+tam_ana+ext_2_an+fv_2|hopatanaana" + rules: [ext_2_an, fv_2, subj_2_ho, tam_ana] + - word: tkokaawabani + note: "Bantu vowel-fusion slot-template stress: 60 words over 12 synthetic templates whose object and subject rules each have a plain and a vowel-fusion allomorph; expected parses are the master engine's, 28 words have no parse." + expect_fail: true + - word: kosiarewabutani + note: "Bantu vowel-fusion slot-template stress: 60 words over 12 synthetic templates whose object and subject rules each have a plain and a vowel-fusion allomorph; expected parses are the master engine's, 28 words have no parse." + parses: + - signature: "subj_7_ko+obj_si+tam_are+wab+ext_7_ut+fv_7+pl_7|kosiarewabutani" + rules: [ext_7_ut, fv_7, obj_si, pl_7, subj_7_ko, tam_are] + - word: honanugileil + note: "Bantu vowel-fusion slot-template stress: 60 words over 12 synthetic templates whose object and subject rules each have a plain and a vowel-fusion allomorph; expected parses are the master engine's, 28 words have no parse." + parses: + - signature: "subj_1_ho+obj_na+nug+tam_ile+ext_1_il|honanugileil" + rules: [ext_1_il, obj_na, subj_1_ho, tam_ile] + - word: nrorotiye + note: "Bantu vowel-fusion slot-template stress: 60 words over 12 synthetic templates whose object and subject rules each have a plain and a vowel-fusion allomorph; expected parses are the master engine's, 28 words have no parse." + expect_fail: true + - word: bubabelileni + note: "Bantu vowel-fusion slot-template stress: 60 words over 12 synthetic templates whose object and subject rules each have a plain and a vowel-fusion allomorph; expected parses are the master engine's, 28 words have no parse." + parses: + - signature: "subj_1_bu+obj_ba+bel+tam_ile+pl_1|bubabelileni" + rules: [obj_ba, pl_1, subj_1_bu, tam_ile] + - word: dupiriyeis + note: "Bantu vowel-fusion slot-template stress: 60 words over 12 synthetic templates whose object and subject rules each have a plain and a vowel-fusion allomorph; expected parses are the master engine's, 28 words have no parse." + parses: + - signature: "subj_0_du+pir+tam_iye+ext_0_is|dupiriyeis" + rules: [ext_0_is, subj_0_du, tam_iye] + - word: hkokkakaapatekni + note: "Bantu vowel-fusion slot-template stress: 60 words over 12 synthetic templates whose object and subject rules each have a plain and a vowel-fusion allomorph; expected parses are the master engine's, 28 words have no parse." + expect_fail: true + - word: logumiyeis + note: "Bantu vowel-fusion slot-template stress: 60 words over 12 synthetic templates whose object and subject rules each have a plain and a vowel-fusion allomorph; expected parses are the master engine's, 28 words have no parse." + parses: + - signature: "subj_0_lo+gum+tam_iye+ext_0_is|logumiyeis" + rules: [ext_0_is, subj_0_lo, tam_iye] + - word: dudipirileani + note: "Bantu vowel-fusion slot-template stress: 60 words over 12 synthetic templates whose object and subject rules each have a plain and a vowel-fusion allomorph; expected parses are the master engine's, 28 words have no parse." + parses: + - signature: "subj_1_du+obj_di+pir+tam_ile+fv_1+pl_1|dudipirileani" + rules: [fv_1, obj_di, pl_1, subj_1_du, tam_ile] + - word: mdodagileilani + note: "Bantu vowel-fusion slot-template stress: 60 words over 12 synthetic templates whose object and subject rules each have a plain and a vowel-fusion allomorph; expected parses are the master engine's, 28 words have no parse." + expect_fail: true + - word: rokesiye + note: "Bantu vowel-fusion slot-template stress: 60 words over 12 synthetic templates whose object and subject rules each have a plain and a vowel-fusion allomorph; expected parses are the master engine's, 28 words have no parse." + parses: + - signature: "subj_0_ro+kes+tam_iye|rokesiye" + rules: [subj_0_ro, tam_iye] + - word: posayeetemola + note: "Bantu vowel-fusion slot-template stress: 60 words over 12 synthetic templates whose object and subject rules each have a plain and a vowel-fusion allomorph; expected parses are the master engine's, 28 words have no parse." + parses: + - signature: "subj_6_po+obj_sa+tam_jee+tem+ext_6_ol+fv_6|posayeetemola" + rules: [ext_6_ol, fv_6, obj_sa, subj_6_po, tam_jee] + - word: kkokaatemekani + note: "Bantu vowel-fusion slot-template stress: 60 words over 12 synthetic templates whose object and subject rules each have a plain and a vowel-fusion allomorph; expected parses are the master engine's, 28 words have no parse." + expect_fail: true + - word: pokaakumni + note: "Bantu vowel-fusion slot-template stress: 60 words over 12 synthetic templates whose object and subject rules each have a plain and a vowel-fusion allomorph; expected parses are the master engine's, 28 words have no parse." + parses: + - signature: "subj_5_po+tam_kaa+kum+pl_5|pokaakumni" + rules: [pl_5, subj_5_po, tam_kaa] + - word: somukaalub + note: "Bantu vowel-fusion slot-template stress: 60 words over 12 synthetic templates whose object and subject rules each have a plain and a vowel-fusion allomorph; expected parses are the master engine's, 28 words have no parse." + parses: + - signature: "subj_5_so+obj_mu+tam_kaa+lub|somukaalub" + rules: [obj_mu, subj_5_so, tam_kaa] + - word: rtotgigoonema + note: "Bantu vowel-fusion slot-template stress: 60 words over 12 synthetic templates whose object and subject rules each have a plain and a vowel-fusion allomorph; expected parses are the master engine's, 28 words have no parse." + expect_fail: true + - word: womeebelada + note: "Bantu vowel-fusion slot-template stress: 60 words over 12 synthetic templates whose object and subject rules each have a plain and a vowel-fusion allomorph; expected parses are the master engine's, 28 words have no parse." + parses: + - signature: "subj_8_wo+tam_mee+bel+ext_8_ad+fv_8|womeebelada" + rules: [ext_8_ad, fv_8, subj_8_wo, tam_mee] + - word: gomikaabeliyea + note: "Bantu vowel-fusion slot-template stress: 60 words over 12 synthetic templates whose object and subject rules each have a plain and a vowel-fusion allomorph; expected parses are the master engine's, 28 words have no parse." + parses: + - signature: "subj_11_go+obj_mi+tam_kaa-iye+bel+fv_11|gomikaabeliyea" + rules: [fv_11, obj_mi, subj_11_go, tam_kaa-iye] + - word: mkokkakaaweniyeni + note: "Bantu vowel-fusion slot-template stress: 60 words over 12 synthetic templates whose object and subject rules each have a plain and a vowel-fusion allomorph; expected parses are the master engine's, 28 words have no parse." + expect_fail: true + - word: yokaamosiye + note: "Bantu vowel-fusion slot-template stress: 60 words over 12 synthetic templates whose object and subject rules each have a plain and a vowel-fusion allomorph; expected parses are the master engine's, 28 words have no parse." + parses: + - signature: "subj_11_yo+tam_kaa-iye+mos|yokaamosiye" + rules: [subj_11_yo, tam_kaa-iye] + - word: wobisokaa + note: "Bantu vowel-fusion slot-template stress: 60 words over 12 synthetic templates whose object and subject rules each have a plain and a vowel-fusion allomorph; expected parses are the master engine's, 28 words have no parse." + parses: + - signature: "subj_4_wo+bis+tam_oka+fv_4|wobisokaa" + rules: [fv_4, subj_4_wo, tam_oka] + - word: tmomoseka + note: "Bantu vowel-fusion slot-template stress: 60 words over 12 synthetic templates whose object and subject rules each have a plain and a vowel-fusion allomorph; expected parses are the master engine's, 28 words have no parse." + expect_fail: true + - word: tomeenug + note: "Bantu vowel-fusion slot-template stress: 60 words over 12 synthetic templates whose object and subject rules each have a plain and a vowel-fusion allomorph; expected parses are the master engine's, 28 words have no parse." + parses: + - signature: "subj_8_to+tam_mee+nug|tomeenug" + rules: [subj_8_to, tam_mee] + - word: sokatuudolemani + note: "Bantu vowel-fusion slot-template stress: 60 words over 12 synthetic templates whose object and subject rules each have a plain and a vowel-fusion allomorph; expected parses are the master engine's, 28 words have no parse." + parses: + - signature: "subj_9_so+obj_ka+tam_tuu+dol+ext_9_em+fv_9+pl_9|sokatuudolemani" + rules: [ext_9_em, fv_9, obj_ka, pl_9, subj_9_so, tam_tuu] + - word: hgogmameedaga + note: "Bantu vowel-fusion slot-template stress: 60 words over 12 synthetic templates whose object and subject rules each have a plain and a vowel-fusion allomorph; expected parses are the master engine's, 28 words have no parse." + expect_fail: true + - word: rotuupatem + note: "Bantu vowel-fusion slot-template stress: 60 words over 12 synthetic templates whose object and subject rules each have a plain and a vowel-fusion allomorph; expected parses are the master engine's, 28 words have no parse." + parses: + - signature: "subj_9_ro+tam_tuu+pat+ext_9_em|rotuupatem" + rules: [ext_9_em, subj_9_ro, tam_tuu] + - word: romeewenad + note: "Bantu vowel-fusion slot-template stress: 60 words over 12 synthetic templates whose object and subject rules each have a plain and a vowel-fusion allomorph; expected parses are the master engine's, 28 words have no parse." + parses: + - signature: "subj_8_ro+tam_mee+wen+ext_8_ad|romeewenad" + rules: [ext_8_ad, subj_8_ro, tam_mee] + - word: ntutuulenani + note: "Bantu vowel-fusion slot-template stress: 60 words over 12 synthetic templates whose object and subject rules each have a plain and a vowel-fusion allomorph; expected parses are the master engine's, 28 words have no parse." + expect_fail: true + - word: tomameerota + note: "Bantu vowel-fusion slot-template stress: 60 words over 12 synthetic templates whose object and subject rules each have a plain and a vowel-fusion allomorph; expected parses are the master engine's, 28 words have no parse." + parses: + - signature: "subj_8_to+obj_ma+tam_mee+rot+fv_8|tomameerota" + rules: [fv_8, obj_ma, subj_8_to, tam_mee] + - word: wokaabeliyea + note: "Bantu vowel-fusion slot-template stress: 60 words over 12 synthetic templates whose object and subject rules each have a plain and a vowel-fusion allomorph; expected parses are the master engine's, 28 words have no parse." + parses: + - signature: "subj_11_wo+tam_kaa-iye+bel+fv_11|wokaabeliyea" + rules: [fv_11, subj_11_wo, tam_kaa-iye] + - word: gwowtatuubala + note: "Bantu vowel-fusion slot-template stress: 60 words over 12 synthetic templates whose object and subject rules each have a plain and a vowel-fusion allomorph; expected parses are the master engine's, 28 words have no parse." + expect_fail: true + - word: mowenekani + note: "Bantu vowel-fusion slot-template stress: 60 words over 12 synthetic templates whose object and subject rules each have a plain and a vowel-fusion allomorph; expected parses are the master engine's, 28 words have no parse." + parses: + - signature: "subj_3_mo+wen+tam_eka+pl_3|mowenekani" + rules: [pl_3, subj_3_mo, tam_eka] + - word: dutuulubani + note: "Bantu vowel-fusion slot-template stress: 60 words over 12 synthetic templates whose object and subject rules each have a plain and a vowel-fusion allomorph; expected parses are the master engine's, 28 words have no parse." + parses: + - signature: "subj_9_du+tam_tuu+lub+fv_9+pl_9|dutuulubani" + rules: [fv_9, pl_9, subj_9_du, tam_tuu] + - word: tpopgagookor + note: "Bantu vowel-fusion slot-template stress: 60 words over 12 synthetic templates whose object and subject rules each have a plain and a vowel-fusion allomorph; expected parses are the master engine's, 28 words have no parse." + expect_fail: true + - word: gokaakoriyeni + note: "Bantu vowel-fusion slot-template stress: 60 words over 12 synthetic templates whose object and subject rules each have a plain and a vowel-fusion allomorph; expected parses are the master engine's, 28 words have no parse." + parses: + - signature: "subj_11_go+tam_kaa-iye+kor+pl_11|gokaakoriyeni" + rules: [pl_11, subj_11_go, tam_kaa-iye] + - word: womugoogor + note: "Bantu vowel-fusion slot-template stress: 60 words over 12 synthetic templates whose object and subject rules each have a plain and a vowel-fusion allomorph; expected parses are the master engine's, 28 words have no parse." + parses: + - signature: "subj_10_wo+obj_mu+tam_goo+gor|womugoogor" + rules: [obj_mu, subj_10_wo, tam_goo] + - word: ssostituurem + note: "Bantu vowel-fusion slot-template stress: 60 words over 12 synthetic templates whose object and subject rules each have a plain and a vowel-fusion allomorph; expected parses are the master engine's, 28 words have no parse." + expect_fail: true + - word: kotuubala + note: "Bantu vowel-fusion slot-template stress: 60 words over 12 synthetic templates whose object and subject rules each have a plain and a vowel-fusion allomorph; expected parses are the master engine's, 28 words have no parse." + parses: + - signature: "subj_9_ko+tam_tuu+bal+fv_9|kotuubala" + rules: [fv_9, subj_9_ko, tam_tuu] + - word: ronimeedolada + note: "Bantu vowel-fusion slot-template stress: 60 words over 12 synthetic templates whose object and subject rules each have a plain and a vowel-fusion allomorph; expected parses are the master engine's, 28 words have no parse." + parses: + - signature: "subj_8_ro+obj_ni+tam_mee+dol+ext_8_ad+fv_8|ronimeedolada" + rules: [ext_8_ad, fv_8, obj_ni, subj_8_ro, tam_mee] + - word: woarebam + note: "Bantu vowel-fusion slot-template stress: 60 words over 12 synthetic templates whose object and subject rules each have a plain and a vowel-fusion allomorph; expected parses are the master engine's, 28 words have no parse." + expect_fail: true + - word: arehit + note: "Bantu vowel-fusion slot-template stress: 60 words over 12 synthetic templates whose object and subject rules each have a plain and a vowel-fusion allomorph; expected parses are the master engine's, 28 words have no parse." + expect_fail: true + - word: rogipiye + note: "Bantu vowel-fusion slot-template stress: 60 words over 12 synthetic templates whose object and subject rules each have a plain and a vowel-fusion allomorph; expected parses are the master engine's, 28 words have no parse." + expect_fail: true + - word: yeehit + note: "Bantu vowel-fusion slot-template stress: 60 words over 12 synthetic templates whose object and subject rules each have a plain and a vowel-fusion allomorph; expected parses are the master engine's, 28 words have no parse." + expect_fail: true + - word: dugipiye + note: "Bantu vowel-fusion slot-template stress: 60 words over 12 synthetic templates whose object and subject rules each have a plain and a vowel-fusion allomorph; expected parses are the master engine's, 28 words have no parse." + expect_fail: true + - word: remile + note: "Bantu vowel-fusion slot-template stress: 60 words over 12 synthetic templates whose object and subject rules each have a plain and a vowel-fusion allomorph; expected parses are the master engine's, 28 words have no parse." + expect_fail: true + - word: nobameka + note: "Bantu vowel-fusion slot-template stress: 60 words over 12 synthetic templates whose object and subject rules each have a plain and a vowel-fusion allomorph; expected parses are the master engine's, 28 words have no parse." + expect_fail: true + - word: patoka + note: "Bantu vowel-fusion slot-template stress: 60 words over 12 synthetic templates whose object and subject rules each have a plain and a vowel-fusion allomorph; expected parses are the master engine's, 28 words have no parse." + expect_fail: true + - word: butuugip + note: "Bantu vowel-fusion slot-template stress: 60 words over 12 synthetic templates whose object and subject rules each have a plain and a vowel-fusion allomorph; expected parses are the master engine's, 28 words have no parse." + expect_fail: true + - word: goonem + note: "Bantu vowel-fusion slot-template stress: 60 words over 12 synthetic templates whose object and subject rules each have a plain and a vowel-fusion allomorph; expected parses are the master engine's, 28 words have no parse." + expect_fail: true + - word: dutuubam + note: "Bantu vowel-fusion slot-template stress: 60 words over 12 synthetic templates whose object and subject rules each have a plain and a vowel-fusion allomorph; expected parses are the master engine's, 28 words have no parse." + expect_fail: true + - word: tuurot + note: "Bantu vowel-fusion slot-template stress: 60 words over 12 synthetic templates whose object and subject rules each have a plain and a vowel-fusion allomorph; expected parses are the master engine's, 28 words have no parse." + expect_fail: true diff --git a/conformance-stress/edge-cases/bantu-tam-templates-shared/grammar.xml b/conformance-stress/edge-cases/bantu-tam-templates-shared/grammar.xml new file mode 100644 index 000000000..78140a3b0 --- /dev/null +++ b/conformance-stress/edge-cases/bantu-tam-templates-shared/grammar.xml @@ -0,0 +1,236 @@ + + + + + bantu-tam-templates + v + + syl+- + cons+- + son+- + nas+- + voice+- + cont+- + high+- + low+- + back+- + round+- + lat+- + placelabialalveolarvelarglottalnone + + + Main + a + e + i + o + u + b + d + g + h + k + l + m + n + p + r + s + t + w + y + + Any + Main + +obj_mumuobj_muOBJ.mu +obj_kukuobj_kuOBJ.ku +obj_wawaobj_waOBJ.wa +obj_babaobj_baOBJ.ba +obj_mimiobj_miOBJ.mi +obj_titiobj_tiOBJ.ti +obj_niniobj_niOBJ.ni +obj_ririobj_riOBJ.ri +obj_sisiobj_siOBJ.si +obj_didiobj_diOBJ.di +obj_gagaobj_gaOBJ.ga +obj_hahaobj_haOBJ.ha +obj_kakaobj_kaOBJ.ka +obj_lalaobj_laOBJ.la +obj_mamaobj_maOBJ.ma +obj_nanaobj_naOBJ.na +obj_papaobj_paOBJ.pa +obj_raraobj_raOBJ.ra +obj_sasaobj_saOBJ.sa +obj_tataobj_taOBJ.ta +tam_iyeiyetam_iyeTAM.iye +ext_0_isisext_0_isEXT.is +subj_0_nunusubj_0_nuSUBJ.nu +subj_0_bubusubj_0_buSUBJ.bu +subj_0_dudusubj_0_duSUBJ.du +subj_0_gogosubj_0_goSUBJ.go +subj_0_hohosubj_0_hoSUBJ.ho +subj_0_kokosubj_0_koSUBJ.ko +subj_0_lolosubj_0_loSUBJ.lo +subj_0_momosubj_0_moSUBJ.mo +subj_0_nonosubj_0_noSUBJ.no +subj_0_poposubj_0_poSUBJ.po +subj_0_rorosubj_0_roSUBJ.ro +subj_0_sososubj_0_soSUBJ.so +subj_0_totosubj_0_toSUBJ.to +subj_0_wowosubj_0_woSUBJ.wo +subj_0_yoyosubj_0_yoSUBJ.yo +fv_0afv_0FV +tam_ileiletam_ileTAM.ile +ext_1_ililext_1_ilEXT.il +subj_sh_nunusubj_sh_nuSUBJ.nu +subj_sh_bubusubj_sh_buSUBJ.bu +subj_sh_dudusubj_sh_duSUBJ.du +subj_sh_gogosubj_sh_goSUBJ.go +subj_sh_hohosubj_sh_hoSUBJ.ho +subj_sh_kokosubj_sh_koSUBJ.ko +subj_sh_lolosubj_sh_loSUBJ.lo +subj_sh_momosubj_sh_moSUBJ.mo +subj_sh_nonosubj_sh_noSUBJ.no +subj_sh_poposubj_sh_poSUBJ.po +subj_sh_rorosubj_sh_roSUBJ.ro +subj_sh_sososubj_sh_soSUBJ.so +subj_sh_totosubj_sh_toSUBJ.to +subj_sh_wowosubj_sh_woSUBJ.wo +subj_sh_yoyosubj_sh_yoSUBJ.yo +fv_shafv_shFV +pl_shnipl_shPL +tam_anaanatam_anaTAM.ana +ext_2_ananext_2_anEXT.an +subj_2_nunusubj_2_nuSUBJ.nu +subj_2_bubusubj_2_buSUBJ.bu +subj_2_dudusubj_2_duSUBJ.du +subj_2_gogosubj_2_goSUBJ.go +subj_2_hohosubj_2_hoSUBJ.ho +subj_2_kokosubj_2_koSUBJ.ko +subj_2_lolosubj_2_loSUBJ.lo +subj_2_momosubj_2_moSUBJ.mo +subj_2_nonosubj_2_noSUBJ.no +subj_2_poposubj_2_poSUBJ.po +subj_2_rorosubj_2_roSUBJ.ro +subj_2_sososubj_2_soSUBJ.so +subj_2_totosubj_2_toSUBJ.to +subj_2_wowosubj_2_woSUBJ.wo +subj_2_yoyosubj_2_yoSUBJ.yo +fv_2afv_2FV +tam_ekaekatam_ekaTAM.eka +ext_3_ikikext_3_ikEXT.ik +tam_okaokatam_okaTAM.oka +ext_4_umumext_4_umEXT.um +subj_4_nunusubj_4_nuSUBJ.nu +subj_4_bubusubj_4_buSUBJ.bu +subj_4_dudusubj_4_duSUBJ.du +subj_4_gogosubj_4_goSUBJ.go +subj_4_hohosubj_4_hoSUBJ.ho +subj_4_kokosubj_4_koSUBJ.ko +subj_4_lolosubj_4_loSUBJ.lo +subj_4_momosubj_4_moSUBJ.mo +subj_4_nonosubj_4_noSUBJ.no +subj_4_poposubj_4_poSUBJ.po +subj_4_rorosubj_4_roSUBJ.ro +subj_4_sososubj_4_soSUBJ.so +subj_4_totosubj_4_toSUBJ.to +subj_4_wowosubj_4_woSUBJ.wo +subj_4_yoyosubj_4_yoSUBJ.yo +fv_4afv_4FV +tam_kaakaatam_kaaTAM.kaa +ext_5_ekekext_5_ekEXT.ek +tam_jeeyeetam_jeeTAM.jee +ext_6_ololext_6_olEXT.ol +subj_6_nunusubj_6_nuSUBJ.nu +subj_6_bubusubj_6_buSUBJ.bu +subj_6_dudusubj_6_duSUBJ.du +subj_6_gogosubj_6_goSUBJ.go +subj_6_hohosubj_6_hoSUBJ.ho +subj_6_kokosubj_6_koSUBJ.ko +subj_6_lolosubj_6_loSUBJ.lo +subj_6_momosubj_6_moSUBJ.mo +subj_6_nonosubj_6_noSUBJ.no +subj_6_poposubj_6_poSUBJ.po +subj_6_rorosubj_6_roSUBJ.ro +subj_6_sososubj_6_soSUBJ.so +subj_6_totosubj_6_toSUBJ.to +subj_6_wowosubj_6_woSUBJ.wo +subj_6_yoyosubj_6_yoSUBJ.yo +fv_6afv_6FV +tam_arearetam_areTAM.are +ext_7_ututext_7_utEXT.ut +tam_meemeetam_meeTAM.mee +ext_8_adadext_8_adEXT.ad +subj_8_nunusubj_8_nuSUBJ.nu +subj_8_bubusubj_8_buSUBJ.bu +subj_8_dudusubj_8_duSUBJ.du +subj_8_gogosubj_8_goSUBJ.go +subj_8_hohosubj_8_hoSUBJ.ho +subj_8_kokosubj_8_koSUBJ.ko +subj_8_lolosubj_8_loSUBJ.lo +subj_8_momosubj_8_moSUBJ.mo +subj_8_nonosubj_8_noSUBJ.no +subj_8_poposubj_8_poSUBJ.po +subj_8_rorosubj_8_roSUBJ.ro +subj_8_sososubj_8_soSUBJ.so +subj_8_totosubj_8_toSUBJ.to +subj_8_wowosubj_8_woSUBJ.wo +subj_8_yoyosubj_8_yoSUBJ.yo +fv_8afv_8FV +tam_tuutuutam_tuuTAM.tuu +ext_9_ememext_9_emEXT.em +tam_googootam_gooTAM.goo +ext_10_ipipext_10_ipEXT.ip +subj_10_nunusubj_10_nuSUBJ.nu +subj_10_bubusubj_10_buSUBJ.bu +subj_10_dudusubj_10_duSUBJ.du +subj_10_gogosubj_10_goSUBJ.go +subj_10_hohosubj_10_hoSUBJ.ho +subj_10_kokosubj_10_koSUBJ.ko +subj_10_lolosubj_10_loSUBJ.lo +subj_10_momosubj_10_moSUBJ.mo +subj_10_nonosubj_10_noSUBJ.no +subj_10_poposubj_10_poSUBJ.po +subj_10_rorosubj_10_roSUBJ.ro +subj_10_sososubj_10_soSUBJ.so +subj_10_totosubj_10_toSUBJ.to +subj_10_wowosubj_10_woSUBJ.wo +subj_10_yoyosubj_10_yoSUBJ.yo +fv_10afv_10FV +tam_kaa-iyekaaiyetam_kaa-iyeTAM.kaa-iye +ext_11_obobext_11_obEXT.ob + +t0_iyetenseobjectextsubjectfvt1_iletenseobjectextsubjectfvplt2_anatenseobjectextsubjectfvt3_ekatenseobjectextsubjectfvplt4_okatenseobjectextsubjectfvt5_kaatenseobjectextsubjectfvplt6_jeetenseobjectextsubjectfvt7_aretenseobjectextsubjectfvplt8_meetenseobjectextsubjectfvt9_tuutenseobjectextsubjectfvplt10_gootenseobjectextsubjectfvt11_kaa-iyetenseobjectextsubjectfvpl + +balbalbal +temtemtem +kumkumkum +dipdipdip +gorgorgor +hanhanhan +keskeskes +lublublub +mermermer +nugnugnug +patpatpat +remremrem +solsolsol +tagtagtag +wabwabwab +belbelbel +dagdagdag +gumgumgum +hithithit +korkorkor +lenlenlen +mosmosmos +nemnemnem +pirpirpir +rotrotrot +sabsabsab +tultultul +wenwenwen +bisbisbis +doldoldol + diff --git a/conformance-stress/edge-cases/bantu-tam-templates-shared/words.yaml b/conformance-stress/edge-cases/bantu-tam-templates-shared/words.yaml new file mode 100644 index 000000000..b184fe269 --- /dev/null +++ b/conformance-stress/edge-cases/bantu-tam-templates-shared/words.yaml @@ -0,0 +1,283 @@ +# kind: stress (timing and optimization parity fixture, not conformance; see conformance-stress/README.md) +language: StressBantuTamTemplatesShared +sources: [] +requires: [] +fieldworks_producible: true +budget_ms: 60000 +words: + - word: horayeedagola + note: "Bantu slot-template stress, variant whose trailing three slots are shared across templates; expected parses are the master engine's." + parses: + - signature: "subj_6_ho+obj_ra+tam_jee+dag+ext_6_ol+fv_6|horayeedagola" + rules: [ext_6_ol, fv_6, obj_ra, subj_6_ho, tam_jee] + - word: sorotanaa + note: "Bantu slot-template stress, variant whose trailing three slots are shared across templates; expected parses are the master engine's." + parses: + - signature: "subj_2_so+rot+tam_ana+fv_2|sorotanaa" + rules: [fv_2, subj_2_so, tam_ana] + - word: noarekesut + note: "Bantu slot-template stress, variant whose trailing three slots are shared across templates; expected parses are the master engine's." + parses: + - signature: "subj_sh_no+tam_are+kes+ext_7_ut|noarekesut" + rules: [ext_7_ut, subj_sh_no, tam_are] + - word: yoyeenema + note: "Bantu slot-template stress, variant whose trailing three slots are shared across templates; expected parses are the master engine's." + parses: + - signature: "subj_6_yo+tam_jee+nem+fv_6|yoyeenema" + rules: [fv_6, subj_6_yo, tam_jee] + - word: bunidagiyeisa + note: "Bantu slot-template stress, variant whose trailing three slots are shared across templates; expected parses are the master engine's." + parses: + - signature: "subj_0_bu+obj_ni+dag+tam_iye+ext_0_is+fv_0|bunidagiyeisa" + rules: [ext_0_is, fv_0, obj_ni, subj_0_bu, tam_iye] + - word: howaarekumutani + note: "Bantu slot-template stress, variant whose trailing three slots are shared across templates; expected parses are the master engine's." + parses: + - signature: "subj_sh_ho+obj_wa+tam_are+kum+ext_7_ut+fv_sh+pl_sh|howaarekumutani" + rules: [ext_7_ut, fv_sh, obj_wa, pl_sh, subj_sh_ho, tam_are] + - word: pokaalenni + note: "Bantu slot-template stress, variant whose trailing three slots are shared across templates; expected parses are the master engine's." + parses: + - signature: "subj_sh_po+tam_kaa+len+pl_sh|pokaalenni" + rules: [pl_sh, subj_sh_po, tam_kaa] + - word: goyeehitola + note: "Bantu slot-template stress, variant whose trailing three slots are shared across templates; expected parses are the master engine's." + parses: + - signature: "subj_6_go+tam_jee+hit+ext_6_ol+fv_6|goyeehitola" + rules: [ext_6_ol, fv_6, subj_6_go, tam_jee] + - word: dupaarebalani + note: "Bantu slot-template stress, variant whose trailing three slots are shared across templates; expected parses are the master engine's." + parses: + - signature: "subj_sh_du+obj_pa+tam_are+bal+fv_sh+pl_sh|dupaarebalani" + rules: [fv_sh, obj_pa, pl_sh, subj_sh_du, tam_are] + - word: todiyeetaga + note: "Bantu slot-template stress, variant whose trailing three slots are shared across templates; expected parses are the master engine's." + parses: + - signature: "subj_6_to+obj_di+tam_jee+tag+fv_6|todiyeetaga" + rules: [fv_6, obj_di, subj_6_to, tam_jee] + - word: sogumileilni + note: "Bantu slot-template stress, variant whose trailing three slots are shared across templates; expected parses are the master engine's." + parses: + - signature: "subj_sh_so+gum+tam_ile+ext_1_il+pl_sh|sogumileilni" + rules: [ext_1_il, pl_sh, subj_sh_so, tam_ile] + - word: bumukaagora + note: "Bantu slot-template stress, variant whose trailing three slots are shared across templates; expected parses are the master engine's." + parses: + - signature: "subj_sh_bu+obj_mu+tam_kaa+gor+fv_sh|bumukaagora" + rules: [fv_sh, obj_mu, subj_sh_bu, tam_kaa] + - word: hohagoranaan + note: "Bantu slot-template stress, variant whose trailing three slots are shared across templates; expected parses are the master engine's." + parses: + - signature: "subj_2_ho+obj_ha+gor+tam_ana+ext_2_an|hohagoranaan" + rules: [ext_2_an, obj_ha, subj_2_ho, tam_ana] + - word: bugakaadipeka + note: "Bantu slot-template stress, variant whose trailing three slots are shared across templates; expected parses are the master engine's." + parses: + - signature: "subj_sh_bu+obj_ga+tam_kaa+dip+ext_5_ek+fv_sh|bugakaadipeka" + rules: [ext_5_ek, fv_sh, obj_ga, subj_sh_bu, tam_kaa] + - word: kowayeebal + note: "Bantu slot-template stress, variant whose trailing three slots are shared across templates; expected parses are the master engine's." + parses: + - signature: "subj_6_ko+obj_wa+tam_jee+bal|kowayeebal" + rules: [obj_wa, subj_6_ko, tam_jee] + - word: hodikumileni + note: "Bantu slot-template stress, variant whose trailing three slots are shared across templates; expected parses are the master engine's." + parses: + - signature: "subj_sh_ho+obj_di+kum+tam_ile+pl_sh|hodikumileni" + rules: [obj_di, pl_sh, subj_sh_ho, tam_ile] + - word: yowakaamosekni + note: "Bantu slot-template stress, variant whose trailing three slots are shared across templates; expected parses are the master engine's." + parses: + - signature: "subj_sh_yo+obj_wa+tam_kaa+mos+ext_5_ek+pl_sh|yowakaamosekni" + rules: [ext_5_ek, obj_wa, pl_sh, subj_sh_yo, tam_kaa] + - word: torotileila + note: "Bantu slot-template stress, variant whose trailing three slots are shared across templates; expected parses are the master engine's." + parses: + - signature: "subj_sh_to+rot+tam_ile+ext_1_il+fv_sh|torotileila" + rules: [ext_1_il, fv_sh, subj_sh_to, tam_ile] + - word: sotakesanaan + note: "Bantu slot-template stress, variant whose trailing three slots are shared across templates; expected parses are the master engine's." + parses: + - signature: "subj_2_so+obj_ta+kes+tam_ana+ext_2_an|sotakesanaan" + rules: [ext_2_an, obj_ta, subj_2_so, tam_ana] + - word: moaretulut + note: "Bantu slot-template stress, variant whose trailing three slots are shared across templates; expected parses are the master engine's." + parses: + - signature: "subj_sh_mo+tam_are+tul+ext_7_ut|moaretulut" + rules: [ext_7_ut, subj_sh_mo, tam_are] + - word: sowadagileila + note: "Bantu slot-template stress, variant whose trailing three slots are shared across templates; expected parses are the master engine's." + parses: + - signature: "subj_sh_so+obj_wa+dag+tam_ile+ext_1_il+fv_sh|sowadagileila" + rules: [ext_1_il, fv_sh, obj_wa, subj_sh_so, tam_ile] + - word: popayeelenol + note: "Bantu slot-template stress, variant whose trailing three slots are shared across templates; expected parses are the master engine's." + parses: + - signature: "subj_6_po+obj_pa+tam_jee+len+ext_6_ol|popayeelenol" + rules: [ext_6_ol, obj_pa, subj_6_po, tam_jee] + - word: yobisanaan + note: "Bantu slot-template stress, variant whose trailing three slots are shared across templates; expected parses are the master engine's." + parses: + - signature: "subj_2_yo+bis+tam_ana+ext_2_an|yobisanaan" + rules: [ext_2_an, subj_2_yo, tam_ana] + - word: kohaaregoruta + note: "Bantu slot-template stress, variant whose trailing three slots are shared across templates; expected parses are the master engine's." + parses: + - signature: "subj_sh_ko+obj_ha+tam_are+gor+ext_7_ut+fv_sh|kohaaregoruta" + rules: [ext_7_ut, fv_sh, obj_ha, subj_sh_ko, tam_are] + - word: sotimosekaa + note: "Bantu slot-template stress, variant whose trailing three slots are shared across templates; expected parses are the master engine's." + parses: + - signature: "subj_sh_so+obj_ti+mos+tam_eka+fv_sh|sotimosekaa" + rules: [fv_sh, obj_ti, subj_sh_so, tam_eka] + - word: womeehita + note: "Bantu slot-template stress, variant whose trailing three slots are shared across templates; expected parses are the master engine's." + parses: + - signature: "subj_8_wo+tam_mee+hit+fv_8|womeehita" + rules: [fv_8, subj_8_wo, tam_mee] + - word: wotuudagem + note: "Bantu slot-template stress, variant whose trailing three slots are shared across templates; expected parses are the master engine's." + parses: + - signature: "subj_sh_wo+tam_tuu+dag+ext_9_em|wotuudagem" + rules: [ext_9_em, subj_sh_wo, tam_tuu] + - word: yotuunemani + note: "Bantu slot-template stress, variant whose trailing three slots are shared across templates; expected parses are the master engine's." + parses: + - signature: "subj_sh_yo+tam_tuu+nem+fv_sh+pl_sh|yotuunemani" + rules: [fv_sh, pl_sh, subj_sh_yo, tam_tuu] + - word: komeesaba + note: "Bantu slot-template stress, variant whose trailing three slots are shared across templates; expected parses are the master engine's." + parses: + - signature: "subj_8_ko+tam_mee+sab+fv_8|komeesaba" + rules: [fv_8, subj_8_ko, tam_mee] + - word: pobalokauma + note: "Bantu slot-template stress, variant whose trailing three slots are shared across templates; expected parses are the master engine's." + parses: + - signature: "subj_4_po+bal+tam_oka+ext_4_um+fv_4|pobalokauma" + rules: [ext_4_um, fv_4, subj_4_po, tam_oka] + - word: tokesoka + note: "Bantu slot-template stress, variant whose trailing three slots are shared across templates; expected parses are the master engine's." + parses: + - signature: "subj_4_to+kes+tam_oka|tokesoka" + rules: [subj_4_to, tam_oka] + - word: nomeedola + note: "Bantu slot-template stress, variant whose trailing three slots are shared across templates; expected parses are the master engine's." + parses: + - signature: "subj_8_no+tam_mee+dol+fv_8|nomeedola" + rules: [fv_8, subj_8_no, tam_mee] + - word: nogagumokauma + note: "Bantu slot-template stress, variant whose trailing three slots are shared across templates; expected parses are the master engine's." + parses: + - signature: "subj_4_no+obj_ga+gum+tam_oka+ext_4_um+fv_4|nogagumokauma" + rules: [ext_4_um, fv_4, obj_ga, subj_4_no, tam_oka] + - word: yogoogumipa + note: "Bantu slot-template stress, variant whose trailing three slots are shared across templates; expected parses are the master engine's." + parses: + - signature: "subj_10_yo+tam_goo+gum+ext_10_ip+fv_10|yogoogumipa" + rules: [ext_10_ip, fv_10, subj_10_yo, tam_goo] + - word: kokagooguma + note: "Bantu slot-template stress, variant whose trailing three slots are shared across templates; expected parses are the master engine's." + parses: + - signature: "subj_10_ko+obj_ka+tam_goo+gum+fv_10|kokagooguma" + rules: [fv_10, obj_ka, subj_10_ko, tam_goo] + - word: toragoogor + note: "Bantu slot-template stress, variant whose trailing three slots are shared across templates; expected parses are the master engine's." + parses: + - signature: "subj_10_to+obj_ra+tam_goo+gor|toragoogor" + rules: [obj_ra, subj_10_to, tam_goo] + - word: sobeloka + note: "Bantu slot-template stress, variant whose trailing three slots are shared across templates; expected parses are the master engine's." + parses: + - signature: "subj_4_so+bel+tam_oka|sobeloka" + rules: [subj_4_so, tam_oka] + - word: loremokaum + note: "Bantu slot-template stress, variant whose trailing three slots are shared across templates; expected parses are the master engine's." + parses: + - signature: "subj_4_lo+rem+tam_oka+ext_4_um|loremokaum" + rules: [ext_4_um, subj_4_lo, tam_oka] + - word: gogoopat + note: "Bantu slot-template stress, variant whose trailing three slots are shared across templates; expected parses are the master engine's." + parses: + - signature: "subj_10_go+tam_goo+pat|gogoopat" + rules: [subj_10_go, tam_goo] + - word: dumeepatad + note: "Bantu slot-template stress, variant whose trailing three slots are shared across templates; expected parses are the master engine's." + parses: + - signature: "subj_8_du+tam_mee+pat+ext_8_ad|dumeepatad" + rules: [ext_8_ad, subj_8_du, tam_mee] + - word: yogoohitip + note: "Bantu slot-template stress, variant whose trailing three slots are shared across templates; expected parses are the master engine's." + parses: + - signature: "subj_10_yo+tam_goo+hit+ext_10_ip|yogoohitip" + rules: [ext_10_ip, subj_10_yo, tam_goo] + - word: wogaremoka + note: "Bantu slot-template stress, variant whose trailing three slots are shared across templates; expected parses are the master engine's." + parses: + - signature: "subj_4_wo+obj_ga+rem+tam_oka|wogaremoka" + rules: [obj_ga, subj_4_wo, tam_oka] + - word: lohalubokaa + note: "Bantu slot-template stress, variant whose trailing three slots are shared across templates; expected parses are the master engine's." + parses: + - signature: "subj_4_lo+obj_ha+lub+tam_oka+fv_4|lohalubokaa" + rules: [fv_4, obj_ha, subj_4_lo, tam_oka] + - word: nowenokaum + note: "Bantu slot-template stress, variant whose trailing three slots are shared across templates; expected parses are the master engine's." + parses: + - signature: "subj_4_no+wen+tam_oka+ext_4_um|nowenokaum" + rules: [ext_4_um, subj_4_no, tam_oka] + - word: kohanokaa + note: "Bantu slot-template stress, variant whose trailing three slots are shared across templates; expected parses are the master engine's." + parses: + - signature: "subj_4_ko+han+tam_oka+fv_4|kohanokaa" + rules: [fv_4, subj_4_ko, tam_oka] + - word: nomeebisada + note: "Bantu slot-template stress, variant whose trailing three slots are shared across templates; expected parses are the master engine's." + parses: + - signature: "subj_8_no+tam_mee+bis+ext_8_ad+fv_8|nomeebisada" + rules: [ext_8_ad, fv_8, subj_8_no, tam_mee] + - word: sohagoolubip + note: "Bantu slot-template stress, variant whose trailing three slots are shared across templates; expected parses are the master engine's." + parses: + - signature: "subj_10_so+obj_ha+tam_goo+lub+ext_10_ip|sohagoolubip" + rules: [ext_10_ip, obj_ha, subj_10_so, tam_goo] + - word: podituulenem + note: "Bantu slot-template stress, variant whose trailing three slots are shared across templates; expected parses are the master engine's." + parses: + - signature: "subj_sh_po+obj_di+tam_tuu+len+ext_9_em|podituulenem" + rules: [ext_9_em, obj_di, subj_sh_po, tam_tuu] + - word: loyeebam + note: "Bantu slot-template stress, variant whose trailing three slots are shared across templates; expected parses are the master engine's." + expect_fail: true + - word: wabiye + note: "Bantu slot-template stress, variant whose trailing three slots are shared across templates; expected parses are the master engine's." + expect_fail: true + - word: dugipana + note: "Bantu slot-template stress, variant whose trailing three slots are shared across templates; expected parses are the master engine's." + expect_fail: true + - word: dagiye + note: "Bantu slot-template stress, variant whose trailing three slots are shared across templates; expected parses are the master engine's." + expect_fail: true + - word: goyeehul + note: "Bantu slot-template stress, variant whose trailing three slots are shared across templates; expected parses are the master engine's." + expect_fail: true + - word: dipiye + note: "Bantu slot-template stress, variant whose trailing three slots are shared across templates; expected parses are the master engine's." + expect_fail: true + - word: rotuuhul + note: "Bantu slot-template stress, variant whose trailing three slots are shared across templates; expected parses are the master engine's." + expect_fail: true + - word: tuurot + note: "Bantu slot-template stress, variant whose trailing three slots are shared across templates; expected parses are the master engine's." + expect_fail: true + - word: rogipeka + note: "Bantu slot-template stress, variant whose trailing three slots are shared across templates; expected parses are the master engine's." + expect_fail: true + - word: kaadagiye + note: "Bantu slot-template stress, variant whose trailing three slots are shared across templates; expected parses are the master engine's." + expect_fail: true + - word: mokaahuliye + note: "Bantu slot-template stress, variant whose trailing three slots are shared across templates; expected parses are the master engine's." + expect_fail: true + - word: meehit + note: "Bantu slot-template stress, variant whose trailing three slots are shared across templates; expected parses are the master engine's." + expect_fail: true diff --git a/conformance-stress/edge-cases/bantu-tam-templates/grammar.xml b/conformance-stress/edge-cases/bantu-tam-templates/grammar.xml new file mode 100644 index 000000000..5caafe57d --- /dev/null +++ b/conformance-stress/edge-cases/bantu-tam-templates/grammar.xml @@ -0,0 +1,321 @@ + + + + + bantu-tam-templates + v + + syl+- + cons+- + son+- + nas+- + voice+- + cont+- + high+- + low+- + back+- + round+- + lat+- + placelabialalveolarvelarglottalnone + + + Main + a + e + i + o + u + b + d + g + h + k + l + m + n + p + r + s + t + w + y + + Any + Main + +obj_mumuobj_muOBJ.mu +obj_kukuobj_kuOBJ.ku +obj_wawaobj_waOBJ.wa +obj_babaobj_baOBJ.ba +obj_mimiobj_miOBJ.mi +obj_titiobj_tiOBJ.ti +obj_niniobj_niOBJ.ni +obj_ririobj_riOBJ.ri +obj_sisiobj_siOBJ.si +obj_didiobj_diOBJ.di +obj_gagaobj_gaOBJ.ga +obj_hahaobj_haOBJ.ha +obj_kakaobj_kaOBJ.ka +obj_lalaobj_laOBJ.la +obj_mamaobj_maOBJ.ma +obj_nanaobj_naOBJ.na +obj_papaobj_paOBJ.pa +obj_raraobj_raOBJ.ra +obj_sasaobj_saOBJ.sa +obj_tataobj_taOBJ.ta +tam_iyeiyetam_iyeTAM.iye +ext_0_isisext_0_isEXT.is +subj_0_nunusubj_0_nuSUBJ.nu +subj_0_bubusubj_0_buSUBJ.bu +subj_0_dudusubj_0_duSUBJ.du +subj_0_gogosubj_0_goSUBJ.go +subj_0_hohosubj_0_hoSUBJ.ho +subj_0_kokosubj_0_koSUBJ.ko +subj_0_lolosubj_0_loSUBJ.lo +subj_0_momosubj_0_moSUBJ.mo +subj_0_nonosubj_0_noSUBJ.no +subj_0_poposubj_0_poSUBJ.po +subj_0_rorosubj_0_roSUBJ.ro +subj_0_sososubj_0_soSUBJ.so +subj_0_totosubj_0_toSUBJ.to +subj_0_wowosubj_0_woSUBJ.wo +subj_0_yoyosubj_0_yoSUBJ.yo +fv_0afv_0FV +tam_ileiletam_ileTAM.ile +ext_1_ililext_1_ilEXT.il +subj_1_nunusubj_1_nuSUBJ.nu +subj_1_bubusubj_1_buSUBJ.bu +subj_1_dudusubj_1_duSUBJ.du +subj_1_gogosubj_1_goSUBJ.go +subj_1_hohosubj_1_hoSUBJ.ho +subj_1_kokosubj_1_koSUBJ.ko +subj_1_lolosubj_1_loSUBJ.lo +subj_1_momosubj_1_moSUBJ.mo +subj_1_nonosubj_1_noSUBJ.no +subj_1_poposubj_1_poSUBJ.po +subj_1_rorosubj_1_roSUBJ.ro +subj_1_sososubj_1_soSUBJ.so +subj_1_totosubj_1_toSUBJ.to +subj_1_wowosubj_1_woSUBJ.wo +subj_1_yoyosubj_1_yoSUBJ.yo +fv_1afv_1FV +pl_1nipl_1PL +tam_anaanatam_anaTAM.ana +ext_2_ananext_2_anEXT.an +subj_2_nunusubj_2_nuSUBJ.nu +subj_2_bubusubj_2_buSUBJ.bu +subj_2_dudusubj_2_duSUBJ.du +subj_2_gogosubj_2_goSUBJ.go +subj_2_hohosubj_2_hoSUBJ.ho +subj_2_kokosubj_2_koSUBJ.ko +subj_2_lolosubj_2_loSUBJ.lo +subj_2_momosubj_2_moSUBJ.mo +subj_2_nonosubj_2_noSUBJ.no +subj_2_poposubj_2_poSUBJ.po +subj_2_rorosubj_2_roSUBJ.ro +subj_2_sososubj_2_soSUBJ.so +subj_2_totosubj_2_toSUBJ.to +subj_2_wowosubj_2_woSUBJ.wo +subj_2_yoyosubj_2_yoSUBJ.yo +fv_2afv_2FV +tam_ekaekatam_ekaTAM.eka +ext_3_ikikext_3_ikEXT.ik +subj_3_nunusubj_3_nuSUBJ.nu +subj_3_bubusubj_3_buSUBJ.bu +subj_3_dudusubj_3_duSUBJ.du +subj_3_gogosubj_3_goSUBJ.go +subj_3_hohosubj_3_hoSUBJ.ho +subj_3_kokosubj_3_koSUBJ.ko +subj_3_lolosubj_3_loSUBJ.lo +subj_3_momosubj_3_moSUBJ.mo +subj_3_nonosubj_3_noSUBJ.no +subj_3_poposubj_3_poSUBJ.po +subj_3_rorosubj_3_roSUBJ.ro +subj_3_sososubj_3_soSUBJ.so +subj_3_totosubj_3_toSUBJ.to +subj_3_wowosubj_3_woSUBJ.wo +subj_3_yoyosubj_3_yoSUBJ.yo +fv_3afv_3FV +pl_3nipl_3PL +tam_okaokatam_okaTAM.oka +ext_4_umumext_4_umEXT.um +subj_4_nunusubj_4_nuSUBJ.nu +subj_4_bubusubj_4_buSUBJ.bu +subj_4_dudusubj_4_duSUBJ.du +subj_4_gogosubj_4_goSUBJ.go +subj_4_hohosubj_4_hoSUBJ.ho +subj_4_kokosubj_4_koSUBJ.ko +subj_4_lolosubj_4_loSUBJ.lo +subj_4_momosubj_4_moSUBJ.mo +subj_4_nonosubj_4_noSUBJ.no +subj_4_poposubj_4_poSUBJ.po +subj_4_rorosubj_4_roSUBJ.ro +subj_4_sososubj_4_soSUBJ.so +subj_4_totosubj_4_toSUBJ.to +subj_4_wowosubj_4_woSUBJ.wo +subj_4_yoyosubj_4_yoSUBJ.yo +fv_4afv_4FV +tam_kaakaatam_kaaTAM.kaa +ext_5_ekekext_5_ekEXT.ek +subj_5_nunusubj_5_nuSUBJ.nu +subj_5_bubusubj_5_buSUBJ.bu +subj_5_dudusubj_5_duSUBJ.du +subj_5_gogosubj_5_goSUBJ.go +subj_5_hohosubj_5_hoSUBJ.ho +subj_5_kokosubj_5_koSUBJ.ko +subj_5_lolosubj_5_loSUBJ.lo +subj_5_momosubj_5_moSUBJ.mo +subj_5_nonosubj_5_noSUBJ.no +subj_5_poposubj_5_poSUBJ.po +subj_5_rorosubj_5_roSUBJ.ro +subj_5_sososubj_5_soSUBJ.so +subj_5_totosubj_5_toSUBJ.to +subj_5_wowosubj_5_woSUBJ.wo +subj_5_yoyosubj_5_yoSUBJ.yo +fv_5afv_5FV +pl_5nipl_5PL +tam_jeeyeetam_jeeTAM.jee +ext_6_ololext_6_olEXT.ol +subj_6_nunusubj_6_nuSUBJ.nu +subj_6_bubusubj_6_buSUBJ.bu +subj_6_dudusubj_6_duSUBJ.du +subj_6_gogosubj_6_goSUBJ.go +subj_6_hohosubj_6_hoSUBJ.ho +subj_6_kokosubj_6_koSUBJ.ko +subj_6_lolosubj_6_loSUBJ.lo +subj_6_momosubj_6_moSUBJ.mo +subj_6_nonosubj_6_noSUBJ.no +subj_6_poposubj_6_poSUBJ.po +subj_6_rorosubj_6_roSUBJ.ro +subj_6_sososubj_6_soSUBJ.so +subj_6_totosubj_6_toSUBJ.to +subj_6_wowosubj_6_woSUBJ.wo +subj_6_yoyosubj_6_yoSUBJ.yo +fv_6afv_6FV +tam_arearetam_areTAM.are +ext_7_ututext_7_utEXT.ut +subj_7_nunusubj_7_nuSUBJ.nu +subj_7_bubusubj_7_buSUBJ.bu +subj_7_dudusubj_7_duSUBJ.du +subj_7_gogosubj_7_goSUBJ.go +subj_7_hohosubj_7_hoSUBJ.ho +subj_7_kokosubj_7_koSUBJ.ko +subj_7_lolosubj_7_loSUBJ.lo +subj_7_momosubj_7_moSUBJ.mo +subj_7_nonosubj_7_noSUBJ.no +subj_7_poposubj_7_poSUBJ.po +subj_7_rorosubj_7_roSUBJ.ro +subj_7_sososubj_7_soSUBJ.so +subj_7_totosubj_7_toSUBJ.to +subj_7_wowosubj_7_woSUBJ.wo +subj_7_yoyosubj_7_yoSUBJ.yo +fv_7afv_7FV +pl_7nipl_7PL +tam_meemeetam_meeTAM.mee +ext_8_adadext_8_adEXT.ad +subj_8_nunusubj_8_nuSUBJ.nu +subj_8_bubusubj_8_buSUBJ.bu +subj_8_dudusubj_8_duSUBJ.du +subj_8_gogosubj_8_goSUBJ.go +subj_8_hohosubj_8_hoSUBJ.ho +subj_8_kokosubj_8_koSUBJ.ko +subj_8_lolosubj_8_loSUBJ.lo +subj_8_momosubj_8_moSUBJ.mo +subj_8_nonosubj_8_noSUBJ.no +subj_8_poposubj_8_poSUBJ.po +subj_8_rorosubj_8_roSUBJ.ro +subj_8_sososubj_8_soSUBJ.so +subj_8_totosubj_8_toSUBJ.to +subj_8_wowosubj_8_woSUBJ.wo +subj_8_yoyosubj_8_yoSUBJ.yo +fv_8afv_8FV +tam_tuutuutam_tuuTAM.tuu +ext_9_ememext_9_emEXT.em +subj_9_nunusubj_9_nuSUBJ.nu +subj_9_bubusubj_9_buSUBJ.bu +subj_9_dudusubj_9_duSUBJ.du +subj_9_gogosubj_9_goSUBJ.go +subj_9_hohosubj_9_hoSUBJ.ho +subj_9_kokosubj_9_koSUBJ.ko +subj_9_lolosubj_9_loSUBJ.lo +subj_9_momosubj_9_moSUBJ.mo +subj_9_nonosubj_9_noSUBJ.no +subj_9_poposubj_9_poSUBJ.po +subj_9_rorosubj_9_roSUBJ.ro +subj_9_sososubj_9_soSUBJ.so +subj_9_totosubj_9_toSUBJ.to +subj_9_wowosubj_9_woSUBJ.wo +subj_9_yoyosubj_9_yoSUBJ.yo +fv_9afv_9FV +pl_9nipl_9PL +tam_googootam_gooTAM.goo +ext_10_ipipext_10_ipEXT.ip +subj_10_nunusubj_10_nuSUBJ.nu +subj_10_bubusubj_10_buSUBJ.bu +subj_10_dudusubj_10_duSUBJ.du +subj_10_gogosubj_10_goSUBJ.go +subj_10_hohosubj_10_hoSUBJ.ho +subj_10_kokosubj_10_koSUBJ.ko +subj_10_lolosubj_10_loSUBJ.lo +subj_10_momosubj_10_moSUBJ.mo +subj_10_nonosubj_10_noSUBJ.no +subj_10_poposubj_10_poSUBJ.po +subj_10_rorosubj_10_roSUBJ.ro +subj_10_sososubj_10_soSUBJ.so +subj_10_totosubj_10_toSUBJ.to +subj_10_wowosubj_10_woSUBJ.wo +subj_10_yoyosubj_10_yoSUBJ.yo +fv_10afv_10FV +tam_kaa-iyekaaiyetam_kaa-iyeTAM.kaa-iye +ext_11_obobext_11_obEXT.ob +subj_11_nunusubj_11_nuSUBJ.nu +subj_11_bubusubj_11_buSUBJ.bu +subj_11_dudusubj_11_duSUBJ.du +subj_11_gogosubj_11_goSUBJ.go +subj_11_hohosubj_11_hoSUBJ.ho +subj_11_kokosubj_11_koSUBJ.ko +subj_11_lolosubj_11_loSUBJ.lo +subj_11_momosubj_11_moSUBJ.mo +subj_11_nonosubj_11_noSUBJ.no +subj_11_poposubj_11_poSUBJ.po +subj_11_rorosubj_11_roSUBJ.ro +subj_11_sososubj_11_soSUBJ.so +subj_11_totosubj_11_toSUBJ.to +subj_11_wowosubj_11_woSUBJ.wo +subj_11_yoyosubj_11_yoSUBJ.yo +fv_11afv_11FV +pl_11nipl_11PL + +t0_iyetenseobjectextsubjectfvt1_iletenseobjectextsubjectfvplt2_anatenseobjectextsubjectfvt3_ekatenseobjectextsubjectfvplt4_okatenseobjectextsubjectfvt5_kaatenseobjectextsubjectfvplt6_jeetenseobjectextsubjectfvt7_aretenseobjectextsubjectfvplt8_meetenseobjectextsubjectfvt9_tuutenseobjectextsubjectfvplt10_gootenseobjectextsubjectfvt11_kaa-iyetenseobjectextsubjectfvpl + +balbalbal +temtemtem +kumkumkum +dipdipdip +gorgorgor +hanhanhan +keskeskes +lublublub +mermermer +nugnugnug +patpatpat +remremrem +solsolsol +tagtagtag +wabwabwab +belbelbel +dagdagdag +gumgumgum +hithithit +korkorkor +lenlenlen +mosmosmos +nemnemnem +pirpirpir +rotrotrot +sabsabsab +tultultul +wenwenwen +bisbisbis +doldoldol + diff --git a/conformance-stress/edge-cases/bantu-tam-templates/words.yaml b/conformance-stress/edge-cases/bantu-tam-templates/words.yaml new file mode 100644 index 000000000..4d528f3f5 --- /dev/null +++ b/conformance-stress/edge-cases/bantu-tam-templates/words.yaml @@ -0,0 +1,283 @@ +# kind: stress (timing and optimization parity fixture, not conformance; see conformance-stress/README.md) +language: StressBantuTamTemplates +sources: [] +requires: [] +fieldworks_producible: true +budget_ms: 60000 +words: + - word: horayeedagola + note: "Bantu slot-template stress: 60 words over subject/object/extension/TAM/final-vowel template slots with required slots; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_6_ho+obj_ra+tam_jee+dag+ext_6_ol+fv_6|horayeedagola" + rules: [ext_6_ol, fv_6, obj_ra, subj_6_ho, tam_jee] + - word: sorotanaa + note: "Bantu slot-template stress: 60 words over subject/object/extension/TAM/final-vowel template slots with required slots; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_2_so+rot+tam_ana+fv_2|sorotanaa" + rules: [fv_2, subj_2_so, tam_ana] + - word: noarekesut + note: "Bantu slot-template stress: 60 words over subject/object/extension/TAM/final-vowel template slots with required slots; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_7_no+tam_are+kes+ext_7_ut|noarekesut" + rules: [ext_7_ut, subj_7_no, tam_are] + - word: yoyeenema + note: "Bantu slot-template stress: 60 words over subject/object/extension/TAM/final-vowel template slots with required slots; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_6_yo+tam_jee+nem+fv_6|yoyeenema" + rules: [fv_6, subj_6_yo, tam_jee] + - word: bunidagiyeisa + note: "Bantu slot-template stress: 60 words over subject/object/extension/TAM/final-vowel template slots with required slots; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_0_bu+obj_ni+dag+tam_iye+ext_0_is+fv_0|bunidagiyeisa" + rules: [ext_0_is, fv_0, obj_ni, subj_0_bu, tam_iye] + - word: howaarekumutani + note: "Bantu slot-template stress: 60 words over subject/object/extension/TAM/final-vowel template slots with required slots; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_7_ho+obj_wa+tam_are+kum+ext_7_ut+fv_7+pl_7|howaarekumutani" + rules: [ext_7_ut, fv_7, obj_wa, pl_7, subj_7_ho, tam_are] + - word: pokaalenni + note: "Bantu slot-template stress: 60 words over subject/object/extension/TAM/final-vowel template slots with required slots; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_5_po+tam_kaa+len+pl_5|pokaalenni" + rules: [pl_5, subj_5_po, tam_kaa] + - word: goyeehitola + note: "Bantu slot-template stress: 60 words over subject/object/extension/TAM/final-vowel template slots with required slots; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_6_go+tam_jee+hit+ext_6_ol+fv_6|goyeehitola" + rules: [ext_6_ol, fv_6, subj_6_go, tam_jee] + - word: dupaarebalani + note: "Bantu slot-template stress: 60 words over subject/object/extension/TAM/final-vowel template slots with required slots; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_7_du+obj_pa+tam_are+bal+fv_7+pl_7|dupaarebalani" + rules: [fv_7, obj_pa, pl_7, subj_7_du, tam_are] + - word: todiyeetaga + note: "Bantu slot-template stress: 60 words over subject/object/extension/TAM/final-vowel template slots with required slots; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_6_to+obj_di+tam_jee+tag+fv_6|todiyeetaga" + rules: [fv_6, obj_di, subj_6_to, tam_jee] + - word: sogumileilni + note: "Bantu slot-template stress: 60 words over subject/object/extension/TAM/final-vowel template slots with required slots; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_1_so+gum+tam_ile+ext_1_il+pl_1|sogumileilni" + rules: [ext_1_il, pl_1, subj_1_so, tam_ile] + - word: bumukaagora + note: "Bantu slot-template stress: 60 words over subject/object/extension/TAM/final-vowel template slots with required slots; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_5_bu+obj_mu+tam_kaa+gor+fv_5|bumukaagora" + rules: [fv_5, obj_mu, subj_5_bu, tam_kaa] + - word: hohagoranaan + note: "Bantu slot-template stress: 60 words over subject/object/extension/TAM/final-vowel template slots with required slots; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_2_ho+obj_ha+gor+tam_ana+ext_2_an|hohagoranaan" + rules: [ext_2_an, obj_ha, subj_2_ho, tam_ana] + - word: bugakaadipeka + note: "Bantu slot-template stress: 60 words over subject/object/extension/TAM/final-vowel template slots with required slots; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_5_bu+obj_ga+tam_kaa+dip+ext_5_ek+fv_5|bugakaadipeka" + rules: [ext_5_ek, fv_5, obj_ga, subj_5_bu, tam_kaa] + - word: kowayeebal + note: "Bantu slot-template stress: 60 words over subject/object/extension/TAM/final-vowel template slots with required slots; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_6_ko+obj_wa+tam_jee+bal|kowayeebal" + rules: [obj_wa, subj_6_ko, tam_jee] + - word: hodikumileni + note: "Bantu slot-template stress: 60 words over subject/object/extension/TAM/final-vowel template slots with required slots; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_1_ho+obj_di+kum+tam_ile+pl_1|hodikumileni" + rules: [obj_di, pl_1, subj_1_ho, tam_ile] + - word: yowakaamosekni + note: "Bantu slot-template stress: 60 words over subject/object/extension/TAM/final-vowel template slots with required slots; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_5_yo+obj_wa+tam_kaa+mos+ext_5_ek+pl_5|yowakaamosekni" + rules: [ext_5_ek, obj_wa, pl_5, subj_5_yo, tam_kaa] + - word: torotileila + note: "Bantu slot-template stress: 60 words over subject/object/extension/TAM/final-vowel template slots with required slots; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_1_to+rot+tam_ile+ext_1_il+fv_1|torotileila" + rules: [ext_1_il, fv_1, subj_1_to, tam_ile] + - word: sotakesanaan + note: "Bantu slot-template stress: 60 words over subject/object/extension/TAM/final-vowel template slots with required slots; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_2_so+obj_ta+kes+tam_ana+ext_2_an|sotakesanaan" + rules: [ext_2_an, obj_ta, subj_2_so, tam_ana] + - word: moaretulut + note: "Bantu slot-template stress: 60 words over subject/object/extension/TAM/final-vowel template slots with required slots; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_7_mo+tam_are+tul+ext_7_ut|moaretulut" + rules: [ext_7_ut, subj_7_mo, tam_are] + - word: sowadagileila + note: "Bantu slot-template stress: 60 words over subject/object/extension/TAM/final-vowel template slots with required slots; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_1_so+obj_wa+dag+tam_ile+ext_1_il+fv_1|sowadagileila" + rules: [ext_1_il, fv_1, obj_wa, subj_1_so, tam_ile] + - word: popayeelenol + note: "Bantu slot-template stress: 60 words over subject/object/extension/TAM/final-vowel template slots with required slots; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_6_po+obj_pa+tam_jee+len+ext_6_ol|popayeelenol" + rules: [ext_6_ol, obj_pa, subj_6_po, tam_jee] + - word: yobisanaan + note: "Bantu slot-template stress: 60 words over subject/object/extension/TAM/final-vowel template slots with required slots; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_2_yo+bis+tam_ana+ext_2_an|yobisanaan" + rules: [ext_2_an, subj_2_yo, tam_ana] + - word: kohaaregoruta + note: "Bantu slot-template stress: 60 words over subject/object/extension/TAM/final-vowel template slots with required slots; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_7_ko+obj_ha+tam_are+gor+ext_7_ut+fv_7|kohaaregoruta" + rules: [ext_7_ut, fv_7, obj_ha, subj_7_ko, tam_are] + - word: sotimosekaa + note: "Bantu slot-template stress: 60 words over subject/object/extension/TAM/final-vowel template slots with required slots; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_3_so+obj_ti+mos+tam_eka+fv_3|sotimosekaa" + rules: [fv_3, obj_ti, subj_3_so, tam_eka] + - word: womeehita + note: "Bantu slot-template stress: 60 words over subject/object/extension/TAM/final-vowel template slots with required slots; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_8_wo+tam_mee+hit+fv_8|womeehita" + rules: [fv_8, subj_8_wo, tam_mee] + - word: wotuudagem + note: "Bantu slot-template stress: 60 words over subject/object/extension/TAM/final-vowel template slots with required slots; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_9_wo+tam_tuu+dag+ext_9_em|wotuudagem" + rules: [ext_9_em, subj_9_wo, tam_tuu] + - word: yotuunemani + note: "Bantu slot-template stress: 60 words over subject/object/extension/TAM/final-vowel template slots with required slots; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_9_yo+tam_tuu+nem+fv_9+pl_9|yotuunemani" + rules: [fv_9, pl_9, subj_9_yo, tam_tuu] + - word: komeesaba + note: "Bantu slot-template stress: 60 words over subject/object/extension/TAM/final-vowel template slots with required slots; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_8_ko+tam_mee+sab+fv_8|komeesaba" + rules: [fv_8, subj_8_ko, tam_mee] + - word: pobalokauma + note: "Bantu slot-template stress: 60 words over subject/object/extension/TAM/final-vowel template slots with required slots; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_4_po+bal+tam_oka+ext_4_um+fv_4|pobalokauma" + rules: [ext_4_um, fv_4, subj_4_po, tam_oka] + - word: tokesoka + note: "Bantu slot-template stress: 60 words over subject/object/extension/TAM/final-vowel template slots with required slots; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_4_to+kes+tam_oka|tokesoka" + rules: [subj_4_to, tam_oka] + - word: nomeedola + note: "Bantu slot-template stress: 60 words over subject/object/extension/TAM/final-vowel template slots with required slots; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_8_no+tam_mee+dol+fv_8|nomeedola" + rules: [fv_8, subj_8_no, tam_mee] + - word: nogagumokauma + note: "Bantu slot-template stress: 60 words over subject/object/extension/TAM/final-vowel template slots with required slots; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_4_no+obj_ga+gum+tam_oka+ext_4_um+fv_4|nogagumokauma" + rules: [ext_4_um, fv_4, obj_ga, subj_4_no, tam_oka] + - word: yogoogumipa + note: "Bantu slot-template stress: 60 words over subject/object/extension/TAM/final-vowel template slots with required slots; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_10_yo+tam_goo+gum+ext_10_ip+fv_10|yogoogumipa" + rules: [ext_10_ip, fv_10, subj_10_yo, tam_goo] + - word: kokagooguma + note: "Bantu slot-template stress: 60 words over subject/object/extension/TAM/final-vowel template slots with required slots; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_10_ko+obj_ka+tam_goo+gum+fv_10|kokagooguma" + rules: [fv_10, obj_ka, subj_10_ko, tam_goo] + - word: toragoogor + note: "Bantu slot-template stress: 60 words over subject/object/extension/TAM/final-vowel template slots with required slots; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_10_to+obj_ra+tam_goo+gor|toragoogor" + rules: [obj_ra, subj_10_to, tam_goo] + - word: sobeloka + note: "Bantu slot-template stress: 60 words over subject/object/extension/TAM/final-vowel template slots with required slots; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_4_so+bel+tam_oka|sobeloka" + rules: [subj_4_so, tam_oka] + - word: loremokaum + note: "Bantu slot-template stress: 60 words over subject/object/extension/TAM/final-vowel template slots with required slots; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_4_lo+rem+tam_oka+ext_4_um|loremokaum" + rules: [ext_4_um, subj_4_lo, tam_oka] + - word: gogoopat + note: "Bantu slot-template stress: 60 words over subject/object/extension/TAM/final-vowel template slots with required slots; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_10_go+tam_goo+pat|gogoopat" + rules: [subj_10_go, tam_goo] + - word: dumeepatad + note: "Bantu slot-template stress: 60 words over subject/object/extension/TAM/final-vowel template slots with required slots; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_8_du+tam_mee+pat+ext_8_ad|dumeepatad" + rules: [ext_8_ad, subj_8_du, tam_mee] + - word: yogoohitip + note: "Bantu slot-template stress: 60 words over subject/object/extension/TAM/final-vowel template slots with required slots; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_10_yo+tam_goo+hit+ext_10_ip|yogoohitip" + rules: [ext_10_ip, subj_10_yo, tam_goo] + - word: wogaremoka + note: "Bantu slot-template stress: 60 words over subject/object/extension/TAM/final-vowel template slots with required slots; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_4_wo+obj_ga+rem+tam_oka|wogaremoka" + rules: [obj_ga, subj_4_wo, tam_oka] + - word: lohalubokaa + note: "Bantu slot-template stress: 60 words over subject/object/extension/TAM/final-vowel template slots with required slots; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_4_lo+obj_ha+lub+tam_oka+fv_4|lohalubokaa" + rules: [fv_4, obj_ha, subj_4_lo, tam_oka] + - word: nowenokaum + note: "Bantu slot-template stress: 60 words over subject/object/extension/TAM/final-vowel template slots with required slots; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_4_no+wen+tam_oka+ext_4_um|nowenokaum" + rules: [ext_4_um, subj_4_no, tam_oka] + - word: kohanokaa + note: "Bantu slot-template stress: 60 words over subject/object/extension/TAM/final-vowel template slots with required slots; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_4_ko+han+tam_oka+fv_4|kohanokaa" + rules: [fv_4, subj_4_ko, tam_oka] + - word: nomeebisada + note: "Bantu slot-template stress: 60 words over subject/object/extension/TAM/final-vowel template slots with required slots; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_8_no+tam_mee+bis+ext_8_ad+fv_8|nomeebisada" + rules: [ext_8_ad, fv_8, subj_8_no, tam_mee] + - word: sohagoolubip + note: "Bantu slot-template stress: 60 words over subject/object/extension/TAM/final-vowel template slots with required slots; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_10_so+obj_ha+tam_goo+lub+ext_10_ip|sohagoolubip" + rules: [ext_10_ip, obj_ha, subj_10_so, tam_goo] + - word: podituulenem + note: "Bantu slot-template stress: 60 words over subject/object/extension/TAM/final-vowel template slots with required slots; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_9_po+obj_di+tam_tuu+len+ext_9_em|podituulenem" + rules: [ext_9_em, obj_di, subj_9_po, tam_tuu] + - word: loyeebam + note: "Bantu slot-template stress: 60 words over subject/object/extension/TAM/final-vowel template slots with required slots; expected parses are the master engine's, 12 words have no parse." + expect_fail: true + - word: wabiye + note: "Bantu slot-template stress: 60 words over subject/object/extension/TAM/final-vowel template slots with required slots; expected parses are the master engine's, 12 words have no parse." + expect_fail: true + - word: dugipana + note: "Bantu slot-template stress: 60 words over subject/object/extension/TAM/final-vowel template slots with required slots; expected parses are the master engine's, 12 words have no parse." + expect_fail: true + - word: dagiye + note: "Bantu slot-template stress: 60 words over subject/object/extension/TAM/final-vowel template slots with required slots; expected parses are the master engine's, 12 words have no parse." + expect_fail: true + - word: goyeehul + note: "Bantu slot-template stress: 60 words over subject/object/extension/TAM/final-vowel template slots with required slots; expected parses are the master engine's, 12 words have no parse." + expect_fail: true + - word: dipiye + note: "Bantu slot-template stress: 60 words over subject/object/extension/TAM/final-vowel template slots with required slots; expected parses are the master engine's, 12 words have no parse." + expect_fail: true + - word: rotuuhul + note: "Bantu slot-template stress: 60 words over subject/object/extension/TAM/final-vowel template slots with required slots; expected parses are the master engine's, 12 words have no parse." + expect_fail: true + - word: tuurot + note: "Bantu slot-template stress: 60 words over subject/object/extension/TAM/final-vowel template slots with required slots; expected parses are the master engine's, 12 words have no parse." + expect_fail: true + - word: rogipeka + note: "Bantu slot-template stress: 60 words over subject/object/extension/TAM/final-vowel template slots with required slots; expected parses are the master engine's, 12 words have no parse." + expect_fail: true + - word: kaadagiye + note: "Bantu slot-template stress: 60 words over subject/object/extension/TAM/final-vowel template slots with required slots; expected parses are the master engine's, 12 words have no parse." + expect_fail: true + - word: mokaahuliye + note: "Bantu slot-template stress: 60 words over subject/object/extension/TAM/final-vowel template slots with required slots; expected parses are the master engine's, 12 words have no parse." + expect_fail: true + - word: meehit + note: "Bantu slot-template stress: 60 words over subject/object/extension/TAM/final-vowel template slots with required slots; expected parses are the master engine's, 12 words have no parse." + expect_fail: true diff --git a/conformance-stress/edge-cases/derivation-chain-homophone-roots/grammar.xml b/conformance-stress/edge-cases/derivation-chain-homophone-roots/grammar.xml new file mode 100644 index 000000000..d744b53a1 --- /dev/null +++ b/conformance-stress/edge-cases/derivation-chain-homophone-roots/grammar.xml @@ -0,0 +1,313 @@ + + + + + StressDerivationChainHomophoneRoots + + v + n + + + Main + + a + e + i + o + u + b + d + g + k + l + m + n + p + s + t + v + w + y + c + r + h + z + j + + + + Any + + + + Main + + + mrDR1 + + + + lik + + + DR1 + DR1 + + + mrDR2 + + + + ci + + + DR2 + DR2 + + + mrDR3 + + + + sa + + + DR3 + DR3 + + + mrDR4 + + + + la + + + DR4 + DR4 + + + mrDR5 + + + + ma + + + DR5 + DR5 + + + mrDR6 + + + + ta + + + DR6 + DR6 + + + mrDR7 + + + + ki + + + DR7 + DR7 + + + mrTA1 + + + + di + + + TA1 + TA1 + + + mrTA2 + + + + mi + + + TA2 + TA2 + + + mrTA3 + + + + ir + + + TA3 + TA3 + + + mrTA4 + + + + ek + + + TA4 + TA4 + + + mrTA5 + + + + a + + + TA5 + TA5 + + + mrPR1 + + + + m + + + PR1 + PR1 + + + mrPR2 + + + + n + + + PR2 + PR2 + + + mrPR3 + + + + k + + + PR3 + PR3 + + + + + verbTemplate + tense + person + + + + + kal + V_KAL + kal.V + + + bol + V_BOL + bol.V + + + sev + V_SEV + sev.V + + + git + V_GIT + git.V + + + ver + V_VER + ver.V + + + tut + V_TUT + tut.V + + + dur + V_DUR + dur.V + + + yaz + V_YAZ + yaz.V + + + kal + N_KAL + kal.N + + + bol + N_BOL + bol.N + + + sev + N_SEV + sev.N + + + git + N_GIT + git.N + + + ver + N_VER + ver.N + + + tut + N_TUT + tut.N + + + dur + N_DUR + dur.N + + + yaz + N_YAZ + yaz.N + + + kitap + N_KITAP + kitap.N + + + deni + N_DENI + deni.N + + + + + + diff --git a/conformance-stress/edge-cases/derivation-chain-homophone-roots/words.yaml b/conformance-stress/edge-cases/derivation-chain-homophone-roots/words.yaml new file mode 100644 index 000000000..179a1a9c9 --- /dev/null +++ b/conformance-stress/edge-cases/derivation-chain-homophone-roots/words.yaml @@ -0,0 +1,444 @@ +# kind: stress (timing and optimization parity fixture, not conformance; see conformance-stress/README.md) +# HAND DERIVATION (see grammar.xml). Seven FS-free derivational suffixes in one unordered stratum apply to any root in any order. Verb roots and noun roots share shapes; only the verb template (required tense slot, optional person slot) applies to verbs, so every verb-root candidate for a nominal derivation applies its suffixes and then dies at the required slot. +# Parses for each word are every (root, rule choice) whose surface equals the word. They are engine output (master's, +# see conformance-stress/README.md); no independent enumeration was run. Signature: morpheme IDs in surface order, then "|" and the surface. +language: StressDerivationChainHomophoneRoots +inspired_by: ["agglutinative suffixing language (Turkic-like): free derivational suffix chain, finite verb inflection template"] +sources: + - "synthetic stress fixture (not a specific language)" +requires: [] +fieldworks_producible: true +budget_ms: 60000 +words: + - word: tutlasata + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "N_TUT+DR4+DR3+DR6|tutlasata" + rules: [mrDR4, mrDR3, mrDR6] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: tutsakila + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "N_TUT+DR3+DR7+DR4|tutsakila" + rules: [mrDR3, mrDR7, mrDR4] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: gitlikcima + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "N_GIT+DR1+DR2+DR5|gitlikcima" + rules: [mrDR1, mrDR2, mrDR5] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: kalmasata + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "N_KAL+DR5+DR3+DR6|kalmasata" + rules: [mrDR5, mrDR3, mrDR6] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: kitapmacila + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "N_KITAP+DR5+DR2+DR4|kitapmacila" + rules: [mrDR5, mrDR2, mrDR4] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: gitlakici + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "N_GIT+DR4+DR7+DR2|gitlakici" + rules: [mrDR4, mrDR7, mrDR2] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: vertalama + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "N_VER+DR6+DR4+DR5|vertalama" + rules: [mrDR6, mrDR4, mrDR5] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: kaltacila + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "N_KAL+DR6+DR2+DR4|kaltacila" + rules: [mrDR6, mrDR2, mrDR4] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: sevmalaki + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "N_SEV+DR5+DR4+DR7|sevmalaki" + rules: [mrDR5, mrDR4, mrDR7] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: denilamasa + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "N_DENI+DR4+DR5+DR3|denilamasa" + rules: [mrDR4, mrDR5, mrDR3] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: yaztasaki + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "N_YAZ+DR6+DR3+DR7|yaztasaki" + rules: [mrDR6, mrDR3, mrDR7] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: gitsataki + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "N_GIT+DR3+DR6+DR7|gitsataki" + rules: [mrDR3, mrDR6, mrDR7] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: yazliktama + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "N_YAZ+DR1+DR6+DR5|yazliktama" + rules: [mrDR1, mrDR6, mrDR5] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: bolcimasa + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "N_BOL+DR2+DR5+DR3|bolcimasa" + rules: [mrDR2, mrDR5, mrDR3] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: kalkitaci + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "N_KAL+DR7+DR6+DR2|kalkitaci" + rules: [mrDR7, mrDR6, mrDR2] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: denilikciki + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "N_DENI+DR1+DR2+DR7|denilikciki" + rules: [mrDR1, mrDR2, mrDR7] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: vermatala + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "N_VER+DR5+DR6+DR4|vermatala" + rules: [mrDR5, mrDR6, mrDR4] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: denisacima + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "N_DENI+DR3+DR2+DR5|denisacima" + rules: [mrDR3, mrDR2, mrDR5] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: tuttaci + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "N_TUT+DR6+DR2|tuttaci" + rules: [mrDR6, mrDR2] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: gitcilaki + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "N_GIT+DR2+DR4+DR7|gitcilaki" + rules: [mrDR2, mrDR4, mrDR7] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: vertasaki + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "N_VER+DR6+DR3+DR7|vertasaki" + rules: [mrDR6, mrDR3, mrDR7] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: yazlama + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "N_YAZ+DR4+DR5|yazlama" + rules: [mrDR4, mrDR5] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: bollikkisa + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "N_BOL+DR1+DR7+DR3|bollikkisa" + rules: [mrDR1, mrDR7, mrDR3] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: kallamasa + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "N_KAL+DR4+DR5+DR3|kallamasa" + rules: [mrDR4, mrDR5, mrDR3] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: bolliktair + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "V_BOL+DR1+DR6+TA3|bolliktair" + rules: [mrDR1, mrDR6, mrTA3] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: bollikcimaan + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "V_BOL+DR1+DR2+DR5+TA5+PR2|bollikcimaan" + rules: [mrDR1, mrDR2, mrDR5, mrTA5, mrPR2] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: bolciliktami + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "V_BOL+DR2+DR1+DR6+TA2|bolciliktami" + rules: [mrDR2, mrDR1, mrDR6, mrTA2] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: tutcitakidin + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "V_TUT+DR2+DR6+DR7+TA1+PR2|tutcitakidin" + rules: [mrDR2, mrDR6, mrDR7, mrTA1, mrPR2] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: vertacilikirm + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "V_VER+DR6+DR2+DR1+TA3+PR1|vertacilikirm" + rules: [mrDR6, mrDR2, mrDR1, mrTA3, mrPR1] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: verkilikmair + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "V_VER+DR7+DR1+DR5+TA3|verkilikmair" + rules: [mrDR7, mrDR1, mrDR5, mrTA3] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: yazlikcitadim + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "V_YAZ+DR1+DR2+DR6+TA1+PR1|yazlikcitadim" + rules: [mrDR1, mrDR2, mrDR6, mrTA1, mrPR1] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: sevsataciak + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "V_SEV+DR3+DR6+DR2+TA5+PR3|sevsataciak" + rules: [mrDR3, mrDR6, mrDR2, mrTA5, mrPR3] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: vercitasaekn + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "V_VER+DR2+DR6+DR3+TA4+PR2|vercitasaekn" + rules: [mrDR2, mrDR6, mrDR3, mrTA4, mrPR2] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: tutcikitadi + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "V_TUT+DR2+DR7+DR6+TA1|tutcikitadi" + rules: [mrDR2, mrDR7, mrDR6, mrTA1] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: vercikiladik + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "V_VER+DR2+DR7+DR4+TA1+PR3|vercikiladik" + rules: [mrDR2, mrDR7, mrDR4, mrTA1, mrPR3] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: kalcilikek + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "V_KAL+DR2+DR1+TA4|kalcilikek" + rules: [mrDR2, mrDR1, mrTA4] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: kalcimairk + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "V_KAL+DR2+DR5+TA3+PR3|kalcimairk" + rules: [mrDR2, mrDR5, mrTA3, mrPR3] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: gitlikcimi + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "V_GIT+DR1+DR2+TA2|gitlikcimi" + rules: [mrDR1, mrDR2, mrTA2] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: gitmakilikan + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "V_GIT+DR5+DR7+DR1+TA5+PR2|gitmakilikan" + rules: [mrDR5, mrDR7, mrDR1, mrTA5, mrPR2] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: yazsaliklaa + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "V_YAZ+DR3+DR1+DR4+TA5|yazsaliklaa" + rules: [mrDR3, mrDR1, mrDR4, mrTA5] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: sevciliklairm + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "V_SEV+DR2+DR1+DR4+TA3+PR1|sevciliklairm" + rules: [mrDR2, mrDR1, mrDR4, mrTA3, mrPR1] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: yazcisataan + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "V_YAZ+DR2+DR3+DR6+TA5+PR2|yazcisataan" + rules: [mrDR2, mrDR3, mrDR6, mrTA5, mrPR2] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: durlamasaan + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "V_DUR+DR4+DR5+DR3+TA5+PR2|durlamasaan" + rules: [mrDR4, mrDR5, mrDR3, mrTA5, mrPR2] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: durcisataa + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "V_DUR+DR2+DR3+DR6+TA5|durcisataa" + rules: [mrDR2, mrDR3, mrDR6, mrTA5] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: kalliklamin + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "V_KAL+DR1+DR4+TA2+PR2|kalliklamin" + rules: [mrDR1, mrDR4, mrTA2, mrPR2] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: bollikmacian + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "V_BOL+DR1+DR5+DR2+TA5+PR2|bollikmacian" + rules: [mrDR1, mrDR5, mrDR2, mrTA5, mrPR2] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: verciliklairn + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "V_VER+DR2+DR1+DR4+TA3+PR2|verciliklairn" + rules: [mrDR2, mrDR1, mrDR4, mrTA3, mrPR2] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: gitsamairk + note: >- + 1 derivation(s): root x rule choices whose surface equals the word. + parses: + - signature: "V_GIT+DR3+DR5+TA3+PR3|gitsamairk" + rules: [mrDR3, mrDR5, mrTA3, mrPR3] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + diff --git a/conformance-stress/edge-cases/early-lexicon-agglutinative/grammar.xml b/conformance-stress/edge-cases/early-lexicon-agglutinative/grammar.xml new file mode 100644 index 000000000..b8d608fee --- /dev/null +++ b/conformance-stress/edge-cases/early-lexicon-agglutinative/grammar.xml @@ -0,0 +1,95 @@ + + + + + early-lexicon-agglutinative + x + + syl+- + cons+- + son+- + nas+- + voice+- + cont+- + high+- + low+- + back+- + round+- + + + Main + a + e + i + o + u + b + d + g + k + l + m + n + p + r + s + t + y + + + Any + FrontV + Cons + + + vowel harmony + + Main + +PLlarPLPL +P1umP1P1 +P2unP2P2 +P3siiP3P3 +ACCniyiACCACC +DATkaaDATDAT +LOCdaLOCLOC +ABLdanABLABL +GENninGENGEN +INSTlaINSTINST +COMblaCOMCOM +EQUgaEQUEQU +NEGmaNEGNEG +PASTditiPASTPAST +EVIDmisEVIDEVID +FUTasakFUTFUT +CONDsaCONDCOND +IMPsinIMPIMP +ABILabilABILABIL +CAUStirCAUSCAUS +PASSilnPASSPASS +RECIPisRECIPRECIP +REFLinREFLREFL +DESIDgiDESIDDESID +AGENTkiAGENTAGENT + +katkatkat +polpolpol +murmurmur +toktoktok +basbasbas +gungungun +dardardar +loploplop +sutsutsut +noknoknok +kelkelkel +pirpirpir +sensensen +bilbilbil +desdesdes +gitgitgit +nernerner +tiptiptip +mekmekmek +lislislis + diff --git a/conformance-stress/edge-cases/early-lexicon-agglutinative/words.yaml b/conformance-stress/edge-cases/early-lexicon-agglutinative/words.yaml new file mode 100644 index 000000000..c1d1d69d3 --- /dev/null +++ b/conformance-stress/edge-cases/early-lexicon-agglutinative/words.yaml @@ -0,0 +1,234 @@ +# kind: stress (timing and optimization parity fixture, not conformance; see conformance-stress/README.md) +language: StressEarlyLexiconAgglutinative +sources: [] +requires: [phonology] +fieldworks_producible: true +budget_ms: 60000 +words: + - word: polsi + note: "Agglutinative stress with root material found early in the word, so root-substring and edge-segment prunes apply; expected parses are the master engine's." + parses: + - signature: "pol+P3|polsi" + rules: [mr_P3] + - word: subissime + note: "Agglutinative stress with root material found early in the word, so root-substring and edge-segment prunes apply; expected parses are the master engine's." + expect_fail: true + - word: bille + note: "Agglutinative stress with root material found early in the word, so root-substring and edge-segment prunes apply; expected parses are the master engine's." + parses: + - signature: "bil+INST|bille" + rules: [mr_INST, prule1] + - word: katn + note: "Agglutinative stress with root material found early in the word, so root-substring and edge-segment prunes apply; expected parses are the master engine's." + parses: + - signature: "kat+PASS|katn" + rules: [mr_PASS] + - word: metkegeyiundanbla + note: "Agglutinative stress with root material found early in the word, so root-substring and edge-segment prunes apply; expected parses are the master engine's." + expect_fail: true + - word: lolisninseinkide + note: "Agglutinative stress with root material found early in the word, so root-substring and edge-segment prunes apply; expected parses are the master engine's." + expect_fail: true + - word: mekdeseum + note: "Agglutinative stress with root material found early in the word, so root-substring and edge-segment prunes apply; expected parses are the master engine's." + parses: + - signature: "mek+LOC+COND+P1|mekdeseum" + rules: [mr_COND, mr_LOC, mr_P1, prule1] + - word: dayblaabilsidenkiun + note: "Agglutinative stress with root material found early in the word, so root-substring and edge-segment prunes apply; expected parses are the master engine's." + expect_fail: true + - word: pokkiummisninebildi + note: "Agglutinative stress with root material found early in the word, so root-substring and edge-segment prunes apply; expected parses are the master engine's." + expect_fail: true + - word: nagunmisse + note: "Agglutinative stress with root material found early in the word, so root-substring and edge-segment prunes apply; expected parses are the master engine's." + expect_fail: true + - word: tigesekuminlede + note: "Agglutinative stress with root material found early in the word, so root-substring and edge-segment prunes apply; expected parses are the master engine's." + expect_fail: true + - word: negkemissinkiin + note: "Agglutinative stress with root material found early in the word, so root-substring and edge-segment prunes apply; expected parses are the master engine's." + expect_fail: true + - word: katgisin + note: "Agglutinative stress with root material found early in the word, so root-substring and edge-segment prunes apply; expected parses are the master engine's." + parses: + - signature: "kat+DESID+IMP|katgisin" + rules: [mr_DESID, mr_IMP] + - signature: "kat+DESID+P3+PASS|katgisin" + rules: [mr_DESID, mr_P3, mr_PASS] + - word: didtiyimesi + note: "Agglutinative stress with root material found early in the word, so root-substring and edge-segment prunes apply; expected parses are the master engine's." + expect_fail: true + - word: dukgiiebilun + note: "Agglutinative stress with root material found early in the word, so root-substring and edge-segment prunes apply; expected parses are the master engine's." + expect_fail: true + - word: darga + note: "Agglutinative stress with root material found early in the word, so root-substring and edge-segment prunes apply; expected parses are the master engine's." + parses: + - signature: "dar+EQU|darga" + rules: [mr_EQU] + - word: bibiebildedenis + note: "Agglutinative stress with root material found early in the word, so root-substring and edge-segment prunes apply; expected parses are the master engine's." + expect_fail: true + - word: rugniilmissinble + note: "Agglutinative stress with root material found early in the word, so root-substring and edge-segment prunes apply; expected parses are the master engine's." + expect_fail: true + - word: mekge + note: "Agglutinative stress with root material found early in the word, so root-substring and edge-segment prunes apply; expected parses are the master engine's." + parses: + - signature: "mek+EQU|mekge" + rules: [mr_EQU, prule1] + - word: yermisesekni + note: "Agglutinative stress with root material found early in the word, so root-substring and edge-segment prunes apply; expected parses are the master engine's." + expect_fail: true + - word: gundimis + note: "Agglutinative stress with root material found early in the word, so root-substring and edge-segment prunes apply; expected parses are the master engine's." + parses: + - signature: "gun+PAST+EVID|gundimis" + rules: [mr_EVID, mr_PAST] + - word: kelsin + note: "Agglutinative stress with root material found early in the word, so root-substring and edge-segment prunes apply; expected parses are the master engine's." + parses: + - signature: "kel+IMP|kelsin" + rules: [mr_IMP] + - signature: "kel+P3+PASS|kelsin" + rules: [mr_P3, mr_PASS] + - word: tatisesekinimissin + note: "Agglutinative stress with root material found early in the word, so root-substring and edge-segment prunes apply; expected parses are the master engine's." + expect_fail: true + - word: lapsinkemisti + note: "Agglutinative stress with root material found early in the word, so root-substring and edge-segment prunes apply; expected parses are the master engine's." + expect_fail: true + - word: piyikiebil + note: "Agglutinative stress with root material found early in the word, so root-substring and edge-segment prunes apply; expected parses are the master engine's." + expect_fail: true + - word: denkeebildeblege + note: "Agglutinative stress with root material found early in the word, so root-substring and edge-segment prunes apply; expected parses are the master engine's." + expect_fail: true + - word: yatabiltirilinge + note: "Agglutinative stress with root material found early in the word, so root-substring and edge-segment prunes apply; expected parses are the master engine's." + expect_fail: true + - word: gatagalarumsigi + note: "Agglutinative stress with root material found early in the word, so root-substring and edge-segment prunes apply; expected parses are the master engine's." + expect_fail: true + - word: yupdadiille + note: "Agglutinative stress with root material found early in the word, so root-substring and edge-segment prunes apply; expected parses are the master engine's." + expect_fail: true + - word: kelgiun + note: "Agglutinative stress with root material found early in the word, so root-substring and edge-segment prunes apply; expected parses are the master engine's." + parses: + - signature: "kel+DESID+P2|kelgiun" + rules: [mr_DESID, mr_P2] + - word: sekdiunblala + note: "Agglutinative stress with root material found early in the word, so root-substring and edge-segment prunes apply; expected parses are the master engine's." + expect_fail: true + - word: yimseleum + note: "Agglutinative stress with root material found early in the word, so root-substring and edge-segment prunes apply; expected parses are the master engine's." + expect_fail: true + - word: kelninmis + note: "Agglutinative stress with root material found early in the word, so root-substring and edge-segment prunes apply; expected parses are the master engine's." + parses: + - signature: "kel+ACC+PASS+EVID|kelninmis" + rules: [mr_ACC, mr_EVID, mr_PASS] + - signature: "kel+GEN+EVID|kelninmis" + rules: [mr_EVID, mr_GEN] + - signature: "kel+PASS+REFL+EVID|kelninmis" + rules: [mr_EVID, mr_PASS, mr_REFL] + - word: tipinleble + note: "Agglutinative stress with root material found early in the word, so root-substring and edge-segment prunes apply; expected parses are the master engine's." + parses: + - signature: "tip+P3+PASS+INST+COM|tipinleble" + rules: [mr_COM, mr_INST, mr_P3, mr_PASS, prule1] + - signature: "tip+REFL+INST+COM|tipinleble" + rules: [mr_COM, mr_INST, mr_REFL, prule1] + - word: darun + note: "Agglutinative stress with root material found early in the word, so root-substring and edge-segment prunes apply; expected parses are the master engine's." + parses: + - signature: "dar+P2|darun" + rules: [mr_P2] + - word: kumninesekis + note: "Agglutinative stress with root material found early in the word, so root-substring and edge-segment prunes apply; expected parses are the master engine's." + expect_fail: true + - word: gidnininesekniki + note: "Agglutinative stress with root material found early in the word, so root-substring and edge-segment prunes apply; expected parses are the master engine's." + expect_fail: true + - word: likkikese + note: "Agglutinative stress with root material found early in the word, so root-substring and edge-segment prunes apply; expected parses are the master engine's." + expect_fail: true + - word: lagblaisgeninsin + note: "Agglutinative stress with root material found early in the word, so root-substring and edge-segment prunes apply; expected parses are the master engine's." + expect_fail: true + - word: pabnigelededennin + note: "Agglutinative stress with root material found early in the word, so root-substring and edge-segment prunes apply; expected parses are the master engine's." + expect_fail: true + - word: boksingeble + note: "Agglutinative stress with root material found early in the word, so root-substring and edge-segment prunes apply; expected parses are the master engine's." + expect_fail: true + - word: randasinkegi + note: "Agglutinative stress with root material found early in the word, so root-substring and edge-segment prunes apply; expected parses are the master engine's." + expect_fail: true + - word: bobkamislergime + note: "Agglutinative stress with root material found early in the word, so root-substring and edge-segment prunes apply; expected parses are the master engine's." + expect_fail: true + - word: demgiselelermis + note: "Agglutinative stress with root material found early in the word, so root-substring and edge-segment prunes apply; expected parses are the master engine's." + expect_fail: true + - word: seltirsimediin + note: "Agglutinative stress with root material found early in the word, so root-substring and edge-segment prunes apply; expected parses are the master engine's." + expect_fail: true + - word: kidingibleninse + note: "Agglutinative stress with root material found early in the word, so root-substring and edge-segment prunes apply; expected parses are the master engine's." + expect_fail: true + - word: toksin + note: "Agglutinative stress with root material found early in the word, so root-substring and edge-segment prunes apply; expected parses are the master engine's." + parses: + - signature: "tok+IMP|toksin" + rules: [mr_IMP] + - signature: "tok+P3+PASS|toksin" + rules: [mr_P3, mr_PASS] + - word: riggebleleris + note: "Agglutinative stress with root material found early in the word, so root-substring and edge-segment prunes apply; expected parses are the master engine's." + expect_fail: true + - word: rasilmisis + note: "Agglutinative stress with root material found early in the word, so root-substring and edge-segment prunes apply; expected parses are the master engine's." + expect_fail: true + - word: sutblalar + note: "Agglutinative stress with root material found early in the word, so root-substring and edge-segment prunes apply; expected parses are the master engine's." + parses: + - signature: "sut+COM+PL|sutblalar" + rules: [mr_COM, mr_PL] + - word: gittirler + note: "Agglutinative stress with root material found early in the word, so root-substring and edge-segment prunes apply; expected parses are the master engine's." + parses: + - signature: "git+CAUS+PL|gittirler" + rules: [mr_CAUS, mr_PL, prule1] + - word: tipisunbla + note: "Agglutinative stress with root material found early in the word, so root-substring and edge-segment prunes apply; expected parses are the master engine's." + parses: + - signature: "tip+RECIP+P2+COM|tipisunbla" + rules: [mr_COM, mr_P2, mr_RECIP] + - word: pirkisium + note: "Agglutinative stress with root material found early in the word, so root-substring and edge-segment prunes apply; expected parses are the master engine's." + parses: + - signature: "pir+AGENT+P3+P1|pirkisium" + rules: [mr_AGENT, mr_P1, mr_P3] + - word: darasakmis + note: "Agglutinative stress with root material found early in the word, so root-substring and edge-segment prunes apply; expected parses are the master engine's." + parses: + - signature: "dar+FUT+EVID|darasakmis" + rules: [mr_EVID, mr_FUT] + - word: nurlarinninuntiris + note: "Agglutinative stress with root material found early in the word, so root-substring and edge-segment prunes apply; expected parses are the master engine's." + expect_fail: true + - word: kegisinkileede + note: "Agglutinative stress with root material found early in the word, so root-substring and edge-segment prunes apply; expected parses are the master engine's." + expect_fail: true + - word: kosasinninumgagi + note: "Agglutinative stress with root material found early in the word, so root-substring and edge-segment prunes apply; expected parses are the master engine's." + expect_fail: true + - word: nemungiebilkidesin + note: "Agglutinative stress with root material found early in the word, so root-substring and edge-segment prunes apply; expected parses are the master engine's." + expect_fail: true + - word: lodundakiinsingi + note: "Agglutinative stress with root material found early in the word, so root-substring and edge-segment prunes apply; expected parses are the master engine's." + expect_fail: true diff --git a/conformance-stress/edge-cases/env-austronesian-nasal-prefix/grammar.xml b/conformance-stress/edge-cases/env-austronesian-nasal-prefix/grammar.xml new file mode 100644 index 000000000..ba0b66a0b --- /dev/null +++ b/conformance-stress/edge-cases/env-austronesian-nasal-prefix/grammar.xml @@ -0,0 +1,72 @@ + + + + + + AustronesianNasalPrefixes + x + idaeiupbtdkgmns + + Main + + a + e + i + u + p + b + t + d + k + g + m + n + s + + + ^0*0&0∅ + + + + + + Any + Lab + Cor + Vel + V + Nas + + + + Main + + activememmenmekmemeACT + causativepempenpekpeCAUS + locative+^0ikanLOC + + + pabaR00root0 + bupiR01root1 + bapuR02root2 + tadiR03root3 + dusaR04root4 + saduR05root5 + kaguR06root6 + gakuR07root7 + kugaR08root8 + umiR09root9 + apiR10root10 + ubuR11root11 + ataR12root12 + isuR13root13 + aduR14root14 + pipaR15root15 + bubaR16root16 + dasiR17root17 + kiguR18root18 + gusiR19root19 + + + + + diff --git a/conformance-stress/edge-cases/env-austronesian-nasal-prefix/words.yaml b/conformance-stress/edge-cases/env-austronesian-nasal-prefix/words.yaml new file mode 100644 index 000000000..6afe190af --- /dev/null +++ b/conformance-stress/edge-cases/env-austronesian-nasal-prefix/words.yaml @@ -0,0 +1,280 @@ +# kind: stress (timing and optimization parity fixture, not conformance; see conformance-stress/README.md) +language: AustronesianNasalPrefixes +inspired_by: ["Synthetic Austronesian nasal-assimilating meN- and peN- prefixes with place-conditioned allomorphs and a locative suffix with a zero allomorph (not modeling one real language)."] +sources: [] +requires: [] +fieldworks_producible: true +# Stress fixture for the required-environment prefilter. Null affixes insert FLEx-style boundaries; +# expected analyses were checked against their environments and the rule order. +budget_ms: 60000 +words: + - word: paba + note: >- + Parse by allomorph selection: each prefix allomorph is chosen by the segment that follows it, the suffix by the segment before it, and an earlier conditioned allomorph whose context holds blocks the fallback. + exercises: + - "AffixProcessRule: prefix/suffix/circumfix/infix" + parses: + - signature: "R00|paba" + gloss: parse + rules: [] + - word: bupi + note: >- + Parse by allomorph selection: each prefix allomorph is chosen by the segment that follows it, the suffix by the segment before it, and an earlier conditioned allomorph whose context holds blocks the fallback. + parses: + - signature: "R01|bupi" + gloss: parse + rules: [] + - word: bapu + note: >- + Parse by allomorph selection: each prefix allomorph is chosen by the segment that follows it, the suffix by the segment before it, and an earlier conditioned allomorph whose context holds blocks the fallback. + parses: + - signature: "R02|bapu" + gloss: parse + rules: [] + - word: tadi + note: >- + Parse by allomorph selection: each prefix allomorph is chosen by the segment that follows it, the suffix by the segment before it, and an earlier conditioned allomorph whose context holds blocks the fallback. + parses: + - signature: "R03|tadi" + gloss: parse + rules: [] + - word: dusa + note: >- + Parse by allomorph selection: each prefix allomorph is chosen by the segment that follows it, the suffix by the segment before it, and an earlier conditioned allomorph whose context holds blocks the fallback. + parses: + - signature: "R04|dusa" + gloss: parse + rules: [] + - word: sadu + note: >- + Parse by allomorph selection: each prefix allomorph is chosen by the segment that follows it, the suffix by the segment before it, and an earlier conditioned allomorph whose context holds blocks the fallback. + parses: + - signature: "R05|sadu" + gloss: parse + rules: [] + - word: kagu + note: >- + Parse by allomorph selection: each prefix allomorph is chosen by the segment that follows it, the suffix by the segment before it, and an earlier conditioned allomorph whose context holds blocks the fallback. + parses: + - signature: "R06|kagu" + gloss: parse + rules: [] + - word: gaku + note: >- + Parse by allomorph selection: each prefix allomorph is chosen by the segment that follows it, the suffix by the segment before it, and an earlier conditioned allomorph whose context holds blocks the fallback. + parses: + - signature: "R07|gaku" + gloss: parse + rules: [] + - word: kuga + note: >- + Parse by allomorph selection: each prefix allomorph is chosen by the segment that follows it, the suffix by the segment before it, and an earlier conditioned allomorph whose context holds blocks the fallback. + parses: + - signature: "R08|kuga" + gloss: parse + rules: [] + - word: umi + note: >- + Parse by allomorph selection: each prefix allomorph is chosen by the segment that follows it, the suffix by the segment before it, and an earlier conditioned allomorph whose context holds blocks the fallback. + parses: + - signature: "R09|umi" + gloss: parse + rules: [] + - word: api + note: >- + Parse by allomorph selection: each prefix allomorph is chosen by the segment that follows it, the suffix by the segment before it, and an earlier conditioned allomorph whose context holds blocks the fallback. + parses: + - signature: "R10|api" + gloss: parse + rules: [] + - word: ubu + note: >- + Parse by allomorph selection: each prefix allomorph is chosen by the segment that follows it, the suffix by the segment before it, and an earlier conditioned allomorph whose context holds blocks the fallback. + parses: + - signature: "R11|ubu" + gloss: parse + rules: [] + - word: ata + note: >- + Parse by allomorph selection: each prefix allomorph is chosen by the segment that follows it, the suffix by the segment before it, and an earlier conditioned allomorph whose context holds blocks the fallback. + parses: + - signature: "R12|ata" + gloss: parse + rules: [] + - word: isu + note: >- + Parse by allomorph selection: each prefix allomorph is chosen by the segment that follows it, the suffix by the segment before it, and an earlier conditioned allomorph whose context holds blocks the fallback. + parses: + - signature: "R13|isu" + gloss: parse + rules: [] + - word: peisui + note: >- + Parse by allomorph selection: each prefix allomorph is chosen by the segment that follows it, the suffix by the segment before it, and an earlier conditioned allomorph whose context holds blocks the fallback. + parses: + - signature: "CAUS+R13+LOC|peisui" + gloss: parse + rules: [mrCAUS, mrLOC] + - signature: "CAUS+R13+LOC|peisui" + gloss: parse + rules: [mrLOC, mrCAUS] + - word: mempaba + note: >- + Parse by allomorph selection: each prefix allomorph is chosen by the segment that follows it, the suffix by the segment before it, and an earlier conditioned allomorph whose context holds blocks the fallback. + parses: + - signature: "ACT+R00|mempaba" + gloss: parse + rules: [mrACT] + - word: pemeata + note: >- + Parse by allomorph selection: each prefix allomorph is chosen by the segment that follows it, the suffix by the segment before it, and an earlier conditioned allomorph whose context holds blocks the fallback. + parses: + - signature: "CAUS+ACT+R12|pemeata" + gloss: parse + rules: [mrCAUS, mrACT] + - word: kigui + note: >- + Parse by allomorph selection: each prefix allomorph is chosen by the segment that follows it, the suffix by the segment before it, and an earlier conditioned allomorph whose context holds blocks the fallback. + parses: + - signature: "R18+LOC|kigui" + gloss: parse + rules: [mrLOC] + - word: meata + note: >- + Parse by allomorph selection: each prefix allomorph is chosen by the segment that follows it, the suffix by the segment before it, and an earlier conditioned allomorph whose context holds blocks the fallback. + parses: + - signature: "ACT+R12|meata" + gloss: parse + rules: [mrACT] + - word: tadii + note: >- + Parse by allomorph selection: each prefix allomorph is chosen by the segment that follows it, the suffix by the segment before it, and an earlier conditioned allomorph whose context holds blocks the fallback. + parses: + - signature: "R03+LOC|tadii" + gloss: parse + rules: [mrLOC] + - word: mekgusi + note: >- + Parse by allomorph selection: each prefix allomorph is chosen by the segment that follows it, the suffix by the segment before it, and an earlier conditioned allomorph whose context holds blocks the fallback. + parses: + - signature: "ACT+R19|mekgusi" + gloss: parse + rules: [mrACT] + - word: pembapu + note: >- + Parse by allomorph selection: each prefix allomorph is chosen by the segment that follows it, the suffix by the segment before it, and an earlier conditioned allomorph whose context holds blocks the fallback. + parses: + - signature: "CAUS+R02|pembapu" + gloss: parse + rules: [mrCAUS] + - word: meadu + note: >- + Parse by allomorph selection: each prefix allomorph is chosen by the segment that follows it, the suffix by the segment before it, and an earlier conditioned allomorph whose context holds blocks the fallback. + parses: + - signature: "ACT+R14|meadu" + gloss: parse + rules: [mrACT] + - word: pentadi + note: >- + Parse by allomorph selection: each prefix allomorph is chosen by the segment that follows it, the suffix by the segment before it, and an earlier conditioned allomorph whose context holds blocks the fallback. + parses: + - signature: "CAUS+R03|pentadi" + gloss: parse + rules: [mrCAUS] + - word: mempendasi + note: >- + Parse by allomorph selection: each prefix allomorph is chosen by the segment that follows it, the suffix by the segment before it, and an earlier conditioned allomorph whose context holds blocks the fallback. + parses: + - signature: "ACT+CAUS+R17|mempendasi" + gloss: parse + rules: [mrACT, mrCAUS] + - word: gusii + note: >- + Parse by allomorph selection: each prefix allomorph is chosen by the segment that follows it, the suffix by the segment before it, and an earlier conditioned allomorph whose context holds blocks the fallback. + parses: + - signature: "R19+LOC|gusii" + gloss: parse + rules: [mrLOC] + - word: mekgaku + note: >- + Parse by allomorph selection: each prefix allomorph is chosen by the segment that follows it, the suffix by the segment before it, and an earlier conditioned allomorph whose context holds blocks the fallback. + parses: + - signature: "ACT+R07|mekgaku" + gloss: parse + rules: [mrACT] + - word: pemempaba + note: >- + Parse by allomorph selection: each prefix allomorph is chosen by the segment that follows it, the suffix by the segment before it, and an earlier conditioned allomorph whose context holds blocks the fallback. + parses: + - signature: "CAUS+ACT+R00|pemempaba" + gloss: parse + rules: [mrCAUS, mrACT] + - word: pemekkuga + note: >- + Parse by allomorph selection: each prefix allomorph is chosen by the segment that follows it, the suffix by the segment before it, and an earlier conditioned allomorph whose context holds blocks the fallback. + parses: + - signature: "CAUS+ACT+R08|pemekkuga" + gloss: parse + rules: [mrCAUS, mrACT] + - word: meapii + note: >- + Parse by allomorph selection: each prefix allomorph is chosen by the segment that follows it, the suffix by the segment before it, and an earlier conditioned allomorph whose context holds blocks the fallback. + parses: + - signature: "ACT+R10+LOC|meapii" + gloss: parse + rules: [mrACT, mrLOC] + - signature: "ACT+R10+LOC|meapii" + gloss: parse + rules: [mrLOC, mrACT] + - word: mempipai + note: >- + Parse by allomorph selection: each prefix allomorph is chosen by the segment that follows it, the suffix by the segment before it, and an earlier conditioned allomorph whose context holds blocks the fallback. + parses: + - signature: "ACT+R15+LOC|mempipai" + gloss: parse + rules: [mrACT, mrLOC] + - signature: "ACT+R15+LOC|mempipai" + gloss: parse + rules: [mrLOC, mrACT] + - word: mekgakui + note: >- + Parse by allomorph selection: each prefix allomorph is chosen by the segment that follows it, the suffix by the segment before it, and an earlier conditioned allomorph whose context holds blocks the fallback. + parses: + - signature: "ACT+R07+LOC|mekgakui" + gloss: parse + rules: [mrACT, mrLOC] + - signature: "ACT+R07+LOC|mekgakui" + gloss: parse + rules: [mrLOC, mrACT] + - word: pekdusa + note: >- + Rejection: no allomorph choice satisfies every Required environment and disjunctive block for this surface. + expect_fail: true + - word: mepekadu + note: >- + Rejection: no allomorph choice satisfies every Required environment and disjunctive block for this surface. + expect_fail: true + - word: mekdasi + note: >- + Rejection: no allomorph choice satisfies every Required environment and disjunctive block for this surface. + expect_fail: true + - word: pemmentadi + note: >- + Rejection: no allomorph choice satisfies every Required environment and disjunctive block for this surface. + expect_fail: true + - word: pekmeapi + note: >- + Rejection: no allomorph choice satisfies every Required environment and disjunctive block for this surface. + expect_fail: true + - word: mekpemkigu + note: >- + Rejection: no allomorph choice satisfies every Required environment and disjunctive block for this surface. + expect_fail: true + - word: penmengusi + note: >- + Rejection: no allomorph choice satisfies every Required environment and disjunctive block for this surface. + expect_fail: true + - word: mempekbupi + note: >- + Rejection: no allomorph choice satisfies every Required environment and disjunctive block for this surface. + expect_fail: true diff --git a/conformance-stress/edge-cases/env-bantu-concord/grammar.xml b/conformance-stress/edge-cases/env-bantu-concord/grammar.xml new file mode 100644 index 000000000..46a3358d5 --- /dev/null +++ b/conformance-stress/edge-cases/env-bantu-concord/grammar.xml @@ -0,0 +1,75 @@ + + + + + + BantuConcordAllomorphy + x + idaeioupbtdkgmns + + Main + + a + e + i + o + u + p + b + t + d + k + g + m + n + s + + + ^0*0&0∅ + + + + + + Any + Lab + Cor + Vel + Nas + V + VA + VB + + + + Main + + concordmnku^0+aCONC + negationttiNEG + tense+^0ninasiTAM + + + papaR00root0 + bipuR01root1 + pubiR02root2 + bapiR03root3 + tadaR04root4 + diduR05root5 + tudaR06root6 + kakiR07root7 + guguR08root8 + kagiR09root9 + mamaR10root10 + ninaR11root11 + mumiR12root12 + apaR13root13 + ibuR14root14 + ukiR15root15 + atuR16root16 + ekiR17root17 + oduR18root18 + esaR19root19 + + + + + diff --git a/conformance-stress/edge-cases/env-bantu-concord/words.yaml b/conformance-stress/edge-cases/env-bantu-concord/words.yaml new file mode 100644 index 000000000..eb658f06f --- /dev/null +++ b/conformance-stress/edge-cases/env-bantu-concord/words.yaml @@ -0,0 +1,295 @@ +# kind: stress (timing and optimization parity fixture, not conformance; see conformance-stress/README.md) +language: BantuConcordAllomorphy +inspired_by: ["Synthetic Bantu-style noun-class concord and tense allomorphy (not modeling one real language): a concord prefix with four place-conditioned allomorphs plus a fallback, a negative prefix, and a tense suffix with a zero allomorph; conditioned allomorphs precede the fallback so synthesis tries them."] +sources: [] +requires: [] +fieldworks_producible: true +# Stress fixture for the required-environment prefilter. Null affixes insert FLEx-style boundaries; +# expected analyses were checked against their environments and the rule order. +budget_ms: 60000 +words: + - word: papa + note: >- + Parse by allomorph selection: each prefix allomorph is chosen by the segment that follows it, the suffix by the segment before it, and an earlier conditioned allomorph whose context holds blocks the fallback. + exercises: + - "AffixProcessRule: prefix/suffix/circumfix/infix" + parses: + - signature: "R00|papa" + gloss: parse + rules: [] + - word: bipu + note: >- + Parse by allomorph selection: each prefix allomorph is chosen by the segment that follows it, the suffix by the segment before it, and an earlier conditioned allomorph whose context holds blocks the fallback. + parses: + - signature: "R01|bipu" + gloss: parse + rules: [] + - word: pubi + note: >- + Parse by allomorph selection: each prefix allomorph is chosen by the segment that follows it, the suffix by the segment before it, and an earlier conditioned allomorph whose context holds blocks the fallback. + parses: + - signature: "R02|pubi" + gloss: parse + rules: [] + - word: bapi + note: >- + Parse by allomorph selection: each prefix allomorph is chosen by the segment that follows it, the suffix by the segment before it, and an earlier conditioned allomorph whose context holds blocks the fallback. + parses: + - signature: "R03|bapi" + gloss: parse + rules: [] + - word: tada + note: >- + Parse by allomorph selection: each prefix allomorph is chosen by the segment that follows it, the suffix by the segment before it, and an earlier conditioned allomorph whose context holds blocks the fallback. + parses: + - signature: "R04|tada" + gloss: parse + rules: [] + - word: didu + note: >- + Parse by allomorph selection: each prefix allomorph is chosen by the segment that follows it, the suffix by the segment before it, and an earlier conditioned allomorph whose context holds blocks the fallback. + parses: + - signature: "R05|didu" + gloss: parse + rules: [] + - word: tuda + note: >- + Parse by allomorph selection: each prefix allomorph is chosen by the segment that follows it, the suffix by the segment before it, and an earlier conditioned allomorph whose context holds blocks the fallback. + parses: + - signature: "R06|tuda" + gloss: parse + rules: [] + - word: kaki + note: >- + Parse by allomorph selection: each prefix allomorph is chosen by the segment that follows it, the suffix by the segment before it, and an earlier conditioned allomorph whose context holds blocks the fallback. + parses: + - signature: "R07|kaki" + gloss: parse + rules: [] + - word: gugu + note: >- + Parse by allomorph selection: each prefix allomorph is chosen by the segment that follows it, the suffix by the segment before it, and an earlier conditioned allomorph whose context holds blocks the fallback. + parses: + - signature: "R08|gugu" + gloss: parse + rules: [] + - word: kagi + note: >- + Parse by allomorph selection: each prefix allomorph is chosen by the segment that follows it, the suffix by the segment before it, and an earlier conditioned allomorph whose context holds blocks the fallback. + parses: + - signature: "R09|kagi" + gloss: parse + rules: [] + - word: mama + note: >- + Parse by allomorph selection: each prefix allomorph is chosen by the segment that follows it, the suffix by the segment before it, and an earlier conditioned allomorph whose context holds blocks the fallback. + parses: + - signature: "CONC+R10|[(^0)(*0)(&0)∅]?+?mama" + gloss: parse + rules: [mrCONC] + - signature: "R10|mama" + gloss: parse + rules: [] + - word: nina + note: >- + Parse by allomorph selection: each prefix allomorph is chosen by the segment that follows it, the suffix by the segment before it, and an earlier conditioned allomorph whose context holds blocks the fallback. + parses: + - signature: "CONC+R11|[(^0)(*0)(&0)∅]?+?nina" + gloss: parse + rules: [mrCONC] + - signature: "R11|nina" + gloss: parse + rules: [] + - word: mumi + note: >- + Parse by allomorph selection: each prefix allomorph is chosen by the segment that follows it, the suffix by the segment before it, and an earlier conditioned allomorph whose context holds blocks the fallback. + parses: + - signature: "CONC+R12|[(^0)(*0)(&0)∅]?+?mumi" + gloss: parse + rules: [mrCONC] + - signature: "R12|mumi" + gloss: parse + rules: [] + - word: apa + note: >- + Parse by allomorph selection: each prefix allomorph is chosen by the segment that follows it, the suffix by the segment before it, and an earlier conditioned allomorph whose context holds blocks the fallback. + parses: + - signature: "R13|apa" + gloss: parse + rules: [] + - word: tauki + note: >- + Parse by allomorph selection: each prefix allomorph is chosen by the segment that follows it, the suffix by the segment before it, and an earlier conditioned allomorph whose context holds blocks the fallback. + parses: + - signature: "NEG+CONC+R15|tauki" + gloss: parse + rules: [mrNEG, mrCONC] + - word: mpubi + note: >- + Parse by allomorph selection: each prefix allomorph is chosen by the segment that follows it, the suffix by the segment before it, and an earlier conditioned allomorph whose context holds blocks the fallback. + parses: + - signature: "CONC+R02|mpubi" + gloss: parse + rules: [mrCONC] + - word: tikugugu + note: >- + Parse by allomorph selection: each prefix allomorph is chosen by the segment that follows it, the suffix by the segment before it, and an earlier conditioned allomorph whose context holds blocks the fallback. + parses: + - signature: "NEG+CONC+R08|tikugugu" + gloss: parse + rules: [mrNEG, mrCONC] + - word: apani + note: >- + Parse by allomorph selection: each prefix allomorph is chosen by the segment that follows it, the suffix by the segment before it, and an earlier conditioned allomorph whose context holds blocks the fallback. + parses: + - signature: "R13+TAM|apani" + gloss: parse + rules: [mrTAM] + - word: diduna + note: >- + Parse by allomorph selection: each prefix allomorph is chosen by the segment that follows it, the suffix by the segment before it, and an earlier conditioned allomorph whose context holds blocks the fallback. + parses: + - signature: "R05+TAM|diduna" + gloss: parse + rules: [mrTAM] + - word: kakina + note: >- + Parse by allomorph selection: each prefix allomorph is chosen by the segment that follows it, the suffix by the segment before it, and an earlier conditioned allomorph whose context holds blocks the fallback. + parses: + - signature: "R07+TAM|kakina" + gloss: parse + rules: [mrTAM] + - word: tididu + note: >- + Parse by allomorph selection: each prefix allomorph is chosen by the segment that follows it, the suffix by the segment before it, and an earlier conditioned allomorph whose context holds blocks the fallback. + parses: + - signature: "NEG+R05|tididu" + gloss: parse + rules: [mrNEG] + - word: auki + note: >- + Parse by allomorph selection: each prefix allomorph is chosen by the segment that follows it, the suffix by the segment before it, and an earlier conditioned allomorph whose context holds blocks the fallback. + parses: + - signature: "CONC+R15|auki" + gloss: parse + rules: [mrCONC] + - word: tukina + note: >- + Parse by allomorph selection: each prefix allomorph is chosen by the segment that follows it, the suffix by the segment before it, and an earlier conditioned allomorph whose context holds blocks the fallback. + parses: + - signature: "NEG+R15+TAM|tukina" + gloss: parse + rules: [mrNEG, mrTAM] + - signature: "NEG+R15+TAM|tukina" + gloss: parse + rules: [mrTAM, mrNEG] + - word: ntigugu + note: >- + Parse by allomorph selection: each prefix allomorph is chosen by the segment that follows it, the suffix by the segment before it, and an earlier conditioned allomorph whose context holds blocks the fallback. + parses: + - signature: "CONC+NEG+R08|ntigugu" + gloss: parse + rules: [mrCONC, mrNEG] + - word: aibuna + note: >- + Parse by allomorph selection: each prefix allomorph is chosen by the segment that follows it, the suffix by the segment before it, and an earlier conditioned allomorph whose context holds blocks the fallback. + parses: + - signature: "CONC+R14+TAM|aibuna" + gloss: parse + rules: [mrCONC, mrTAM] + - signature: "CONC+R14+TAM|aibuna" + gloss: parse + rules: [mrTAM, mrCONC] + - word: ibuna + note: >- + Parse by allomorph selection: each prefix allomorph is chosen by the segment that follows it, the suffix by the segment before it, and an earlier conditioned allomorph whose context holds blocks the fallback. + parses: + - signature: "R14+TAM|ibuna" + gloss: parse + rules: [mrTAM] + - word: timumina + note: >- + Parse by allomorph selection: each prefix allomorph is chosen by the segment that follows it, the suffix by the segment before it, and an earlier conditioned allomorph whose context holds blocks the fallback. + parses: + - signature: "NEG+CONC+R12+TAM|ti[(^0)(*0)(&0)∅]?+?mumina" + gloss: parse + rules: [mrCONC, mrNEG, mrTAM] + - signature: "NEG+CONC+R12+TAM|ti[(^0)(*0)(&0)∅]?+?mumina" + gloss: parse + rules: [mrCONC, mrTAM, mrNEG] + - signature: "NEG+CONC+R12+TAM|ti[(^0)(*0)(&0)∅]?+?mumina" + gloss: parse + rules: [mrTAM, mrCONC, mrNEG] + - signature: "NEG+R12+TAM|timumina" + gloss: parse + rules: [mrNEG, mrTAM] + - signature: "NEG+R12+TAM|timumina" + gloss: parse + rules: [mrTAM, mrNEG] + - word: timbipu + note: >- + Parse by allomorph selection: each prefix allomorph is chosen by the segment that follows it, the suffix by the segment before it, and an earlier conditioned allomorph whose context holds blocks the fallback. + parses: + - signature: "NEG+CONC+R01|timbipu" + gloss: parse + rules: [mrNEG, mrCONC] + - word: bipuna + note: >- + Parse by allomorph selection: each prefix allomorph is chosen by the segment that follows it, the suffix by the segment before it, and an earlier conditioned allomorph whose context holds blocks the fallback. + parses: + - signature: "R01+TAM|bipuna" + gloss: parse + rules: [mrTAM] + - word: ntipubi + note: >- + Parse by allomorph selection: each prefix allomorph is chosen by the segment that follows it, the suffix by the segment before it, and an earlier conditioned allomorph whose context holds blocks the fallback. + parses: + - signature: "CONC+NEG+R02|ntipubi" + gloss: parse + rules: [mrCONC, mrNEG] + - word: kagina + note: >- + Parse by allomorph selection: each prefix allomorph is chosen by the segment that follows it, the suffix by the segment before it, and an earlier conditioned allomorph whose context holds blocks the fallback. + parses: + - signature: "R09+TAM|kagina" + gloss: parse + rules: [mrTAM] + - word: timpapa + note: >- + Parse by allomorph selection: each prefix allomorph is chosen by the segment that follows it, the suffix by the segment before it, and an earlier conditioned allomorph whose context holds blocks the fallback. + parses: + - signature: "NEG+CONC+R00|timpapa" + gloss: parse + rules: [mrNEG, mrCONC] + - word: atadani + note: >- + Rejection: no allomorph choice satisfies every Required environment and disjunctive block for this surface. + expect_fail: true + - word: timkagi + note: >- + Rejection: no allomorph choice satisfies every Required environment and disjunctive block for this surface. + expect_fail: true + - word: kakini + note: >- + Rejection: no allomorph choice satisfies every Required environment and disjunctive block for this surface. + expect_fail: true + - word: kutodu + note: >- + Rejection: no allomorph choice satisfies every Required environment and disjunctive block for this surface. + expect_fail: true + - word: tkumumi + note: >- + Rejection: no allomorph choice satisfies every Required environment and disjunctive block for this surface. + expect_fail: true + - word: tkukagi + note: >- + Rejection: no allomorph choice satisfies every Required environment and disjunctive block for this surface. + expect_fail: true + - word: tingugu + note: >- + Rejection: no allomorph choice satisfies every Required environment and disjunctive block for this surface. + expect_fail: true + - word: atatu + note: >- + Rejection: no allomorph choice satisfies every Required environment and disjunctive block for this surface. + expect_fail: true diff --git a/conformance-stress/edge-cases/env-zero-allomorphs/grammar.xml b/conformance-stress/edge-cases/env-zero-allomorphs/grammar.xml new file mode 100644 index 000000000..9c9842d4c --- /dev/null +++ b/conformance-stress/edge-cases/env-zero-allomorphs/grammar.xml @@ -0,0 +1,73 @@ + + + + + + StressEnvZeroAllomorphs + x + + idaiupbtkdgsmn + + + Main + + a + i + u + p + b + t + k + d + g + s + m + n + + + ^0*0&0∅ + + + + + + Any + Nas + Sib + + + + Main + +classPrefix^0+kukaP1 +personPrefix^0+tiP2 +suffix+^0papiS1 + + + batuR00root0 + kidaR01root1 + gupiR02root2 + tabiR03root3 + dupaR04root4 + kipaR05root5 + gitaR06root6 + bidaR07root7 + pudiR08root8 + kabuR09root9 + tukaR10root10 + gabiR11root11 + dikaR12root12 + paguR13root13 + bukitR14root14 + mapuR15root15 + kanuR16root16 + tabunR17root17 + gisamR18root18 + pikasR19root19 + + + + + diff --git a/conformance-stress/edge-cases/env-zero-allomorphs/words.yaml b/conformance-stress/edge-cases/env-zero-allomorphs/words.yaml new file mode 100644 index 000000000..3eef14a59 --- /dev/null +++ b/conformance-stress/edge-cases/env-zero-allomorphs/words.yaml @@ -0,0 +1,324 @@ +# kind: stress (timing and optimization parity fixture, not conformance; see conformance-stress/README.md) +language: StressEnvZeroAllomorphs +inspired_by: ["synthetic Bantu/Austronesian zero-allomorph prefix and suffix probe (not modeling any real language)"] +sources: [] +requires: [] +fieldworks_producible: true +# Research stress fixture for the required-environment prefilter, not registered in the conformance ledgers. +# The zero allomorphs (indexes 0) carry a Required left environment on a rare segment class and are placed +# first so synthesis tries them; tabun and gisam exercise the null suffix after a nasal. +budget_ms: 60000 +words: + - word: batu + note: >- + Bare root batu; every affix is optional, and no zero allomorph's rare-class context is satisfied. + exercises: + - "AffixProcessRule: prefix/suffix/circumfix/infix" + parses: + - signature: "R00|batu" + gloss: R00 + rules: [] + - word: kida + note: >- + Bare root kida; every affix is optional, and no zero allomorph's rare-class context is satisfied. + parses: + - signature: "R01|kida" + gloss: R01 + rules: [] + - word: gupi + note: >- + Bare root gupi; every affix is optional, and no zero allomorph's rare-class context is satisfied. + parses: + - signature: "R02|gupi" + gloss: R02 + rules: [] + - word: tabi + note: >- + Bare root tabi; every affix is optional, and no zero allomorph's rare-class context is satisfied. + parses: + - signature: "R03|tabi" + gloss: R03 + rules: [] + - word: dupa + note: >- + Bare root dupa; every affix is optional, and no zero allomorph's rare-class context is satisfied. + parses: + - signature: "R04|dupa" + gloss: R04 + rules: [] + - word: kipa + note: >- + Bare root kipa; every affix is optional, and no zero allomorph's rare-class context is satisfied. + parses: + - signature: "R05|kipa" + gloss: R05 + rules: [] + - word: gita + note: >- + Bare root gita; every affix is optional, and no zero allomorph's rare-class context is satisfied. + parses: + - signature: "R06|gita" + gloss: R06 + rules: [] + - word: bida + note: >- + Bare root bida; every affix is optional, and no zero allomorph's rare-class context is satisfied. + parses: + - signature: "R07|bida" + gloss: R07 + rules: [] + - word: pudi + note: >- + Bare root pudi; every affix is optional, and no zero allomorph's rare-class context is satisfied. + parses: + - signature: "R08|pudi" + gloss: R08 + rules: [] + - word: kabu + note: >- + Bare root kabu; every affix is optional, and no zero allomorph's rare-class context is satisfied. + parses: + - signature: "R09|kabu" + gloss: R09 + rules: [] + - word: tuka + note: >- + Bare root tuka; every affix is optional, and no zero allomorph's rare-class context is satisfied. + parses: + - signature: "R10|tuka" + gloss: R10 + rules: [] + - word: gabi + note: >- + Bare root gabi; every affix is optional, and no zero allomorph's rare-class context is satisfied. + parses: + - signature: "R11|gabi" + gloss: R11 + rules: [] + - word: kukida + note: >- + Hand derivation: root R01 'kida' with prefixes P1 applied inner to outer; 1 rule orders are possible because the unordered suffix may be applied between or after the prefixes. + parses: + - signature: "P1+R01|kukida" + gloss: R01 + rules: [mrP1] + - word: kagupi + note: >- + Hand derivation: root R02 'gupi' with prefixes P1 applied inner to outer; 1 rule orders are possible because the unordered suffix may be applied between or after the prefixes. + parses: + - signature: "P1+R02|kagupi" + gloss: R02 + rules: [mrP1] + - word: titabi + note: >- + Hand derivation: root R03 'tabi' with prefixes P2 applied inner to outer; 1 rule orders are possible because the unordered suffix may be applied between or after the prefixes. + parses: + - signature: "P2+R03|titabi" + gloss: R03 + rules: [mrP2] + - word: dupapa + note: >- + Hand derivation: root R04 'dupa' and suffix S1; 1 rule orders are possible because the unordered suffix may be applied between or after the prefixes. + parses: + - signature: "R04+S1|dupapa" + gloss: R04 + rules: [mrS1] + - word: kipapi + note: >- + Hand derivation: root R05 'kipa' and suffix S1; 1 rule orders are possible because the unordered suffix may be applied between or after the prefixes. + parses: + - signature: "R05+S1|kipapi" + gloss: R05 + rules: [mrS1] + - word: kugitapa + note: >- + Hand derivation: root R06 'gita' with prefixes P1 applied inner to outer and suffix S1; 2 rule orders are possible because the unordered suffix may be applied between or after the prefixes. + parses: + - signature: "P1+R06+S1|kugitapa" + gloss: R06 + rules: [mrS1, mrP1] + - signature: "P1+R06+S1|kugitapa" + gloss: R06 + rules: [mrP1, mrS1] + - word: tibidapi + note: >- + Hand derivation: root R07 'bida' with prefixes P2 applied inner to outer and suffix S1; 2 rule orders are possible because the unordered suffix may be applied between or after the prefixes. + parses: + - signature: "P2+R07+S1|tibidapi" + gloss: R07 + rules: [mrS1, mrP2] + - signature: "P2+R07+S1|tibidapi" + gloss: R07 + rules: [mrP2, mrS1] + - word: katipudi + note: >- + Hand derivation: root R08 'pudi' with prefixes P2+P1 applied inner to outer; 1 rule orders are possible because the unordered suffix may be applied between or after the prefixes. + parses: + - signature: "P1+P2+R08|katipudi" + gloss: R08 + rules: [mrP2, mrP1] + - word: tikukabupa + note: >- + Hand derivation: root R09 'kabu' with prefixes P1+P2 applied inner to outer and suffix S1; 3 rule orders are possible because the unordered suffix may be applied between or after the prefixes. + parses: + - signature: "P2+P1+R09+S1|tikukabupa" + gloss: R09 + rules: [mrS1, mrP1, mrP2] + - signature: "P2+P1+R09+S1|tikukabupa" + gloss: R09 + rules: [mrP1, mrS1, mrP2] + - signature: "P2+P1+R09+S1|tikukabupa" + gloss: R09 + rules: [mrP1, mrP2, mrS1] + - word: mapu + note: >- + Bare root mapu; every affix is optional, and no zero allomorph's rare-class context is satisfied. + parses: + - signature: "R15|mapu" + gloss: R15 + rules: [] + - word: kanu + note: >- + Bare root kanu; every affix is optional, and no zero allomorph's rare-class context is satisfied. + parses: + - signature: "R16|kanu" + gloss: R16 + rules: [] + - word: tabun + note: >- + Bare root tabun; the zero suffix is licensed by the final nasal; all affixes are optional. + parses: + - signature: "R17+S1|tabun+?[(^0)(*0)(&0)∅]?" + gloss: parse + rules: [mrS1] + - signature: "R17|tabun" + gloss: R17 + rules: [] + - word: gisam + note: >- + Bare root gisam; the zero suffix is licensed by the final nasal; all affixes are optional. + parses: + - signature: "R18+S1|gisam+?[(^0)(*0)(&0)∅]?" + gloss: parse + rules: [mrS1] + - signature: "R18|gisam" + gloss: R18 + rules: [] + - word: pikas + note: >- + Bare root pikas; every affix is optional, and no zero allomorph's rare-class context is satisfied. + parses: + - signature: "R19|pikas" + gloss: R19 + rules: [] + - word: kumapu + note: >- + Hand derivation: root R15 'mapu' with prefixes P1 applied inner to outer; 1 rule orders are possible because the unordered suffix may be applied between or after the prefixes. + parses: + - signature: "P1+R15|kumapu" + gloss: R15 + rules: [mrP1] + - word: mapupa + note: >- + Hand derivation: root R15 'mapu' and suffix S1; 1 rule orders are possible because the unordered suffix may be applied between or after the prefixes. + parses: + - signature: "R15+S1|mapupa" + gloss: R15 + rules: [mrS1] + - word: kanupi + note: >- + Hand derivation: root R16 'kanu' and suffix S1; 1 rule orders are possible because the unordered suffix may be applied between or after the prefixes. + parses: + - signature: "R16+S1|kanupi" + gloss: R16 + rules: [mrS1] + - word: kukanupa + note: >- + Hand derivation: root R16 'kanu' with prefixes P1 applied inner to outer and suffix S1; 2 rule orders are possible because the unordered suffix may be applied between or after the prefixes. + parses: + - signature: "P1+R16+S1|kukanupa" + gloss: R16 + rules: [mrS1, mrP1] + - signature: "P1+R16+S1|kukanupa" + gloss: R16 + rules: [mrP1, mrS1] + - word: tipikas + note: >- + Hand derivation: root R19 'pikas' with prefixes P2 applied inner to outer; 1 rule orders are possible because the unordered suffix may be applied between or after the prefixes. + parses: + - signature: "P2+R19|tipikas" + gloss: R19 + rules: [mrP2] + - word: katabun + note: >- + Hand derivation: root R17 'tabun' with prefixes P1 applied inner to outer; the optional zero suffix follows the final nasal and can apply before or after P1. + parses: + - signature: "P1+R17+S1|katabun+?[(^0)(*0)(&0)∅]?" + gloss: parse + rules: [mrP1, mrS1] + - signature: "P1+R17+S1|katabun+?[(^0)(*0)(&0)∅]?" + gloss: parse + rules: [mrP1, mrS1] + - signature: "P1+R17|katabun" + gloss: R17 + rules: [mrP1] + - word: tigisampa + note: >- + Discriminating rejection: the suffix pa follows m, so the zero allomorph S1z (Required left environment on nasals) holds there, and the earlier, more specific zero allomorph disjunctively blocks the overt pa. The zero allomorph cannot itself produce this surface. + expect_fail: true + blocked_by: [mrS1] + - word: kadika + note: >- + Hand derivation: root R12 'dika' with prefixes P1 applied inner to outer; 1 rule orders are possible because the unordered suffix may be applied between or after the prefixes. + parses: + - signature: "P1+R12|kadika" + gloss: R12 + rules: [mrP1] + - word: tipagupa + note: >- + Hand derivation: root R13 'pagu' with prefixes P2 applied inner to outer and suffix S1; 2 rule orders are possible because the unordered suffix may be applied between or after the prefixes. + parses: + - signature: "P2+R13+S1|tipagupa" + gloss: R13 + rules: [mrS1, mrP2] + - signature: "P2+R13+S1|tipagupa" + gloss: R13 + rules: [mrP2, mrS1] + - word: bukitpi + note: >- + Hand derivation: root R14 'bukit' and suffix S1; 1 rule orders are possible because the unordered suffix may be applied between or after the prefixes. + parses: + - signature: "R14+S1|bukitpi" + gloss: R14 + rules: [mrS1] + - word: kupagu + note: >- + Hand derivation: root R13 'pagu' with prefixes P1 applied inner to outer; 1 rule orders are possible because the unordered suffix may be applied between or after the prefixes. + parses: + - signature: "P1+R13|kupagu" + gloss: R13 + rules: [mrP1] + - word: tibatu + note: >- + Hand derivation: root R00 'batu' with prefixes P2 applied inner to outer; 1 rule orders are possible because the unordered suffix may be applied between or after the prefixes. + parses: + - signature: "P2+R00|tibatu" + gloss: R00 + rules: [mrP2] + - word: gupipa + note: >- + Hand derivation: root R02 'gupi' and suffix S1; 1 rule orders are possible because the unordered suffix may be applied between or after the prefixes. + parses: + - signature: "R02+S1|gupipa" + gloss: R02 + rules: [mrS1] + - word: katukapi + note: >- + Hand derivation: root R10 'tuka' with prefixes P1 applied inner to outer and suffix S1; 2 rule orders are possible because the unordered suffix may be applied between or after the prefixes. + parses: + - signature: "P1+R10+S1|katukapi" + gloss: R10 + rules: [mrS1, mrP1] + - signature: "P1+R10+S1|katukapi" + gloss: R10 + rules: [mrP1, mrS1] diff --git a/conformance-stress/edge-cases/excluded-cooccurrence/grammar.xml b/conformance-stress/edge-cases/excluded-cooccurrence/grammar.xml new file mode 100644 index 000000000..f70287a25 --- /dev/null +++ b/conformance-stress/edge-cases/excluded-cooccurrence/grammar.xml @@ -0,0 +1,372 @@ + + + + + StressExcludedCoOccurrence + + + v + + + Main + + p + t + k + m + n + s + a + i + u + + + ^0*0&0∅ + + + + + + Any + + + + Main + + + s1a + + + + a + + + S1a + + + s1b + + + + ma + + + S1b + + + s1c + + + + ni + + + S1c + + + s1d + + + + ku + + + S1d + + + s2a + + + + i + + + S2a + + + s2b + + + + ta + + + S2b + + + s2c + + + + ma + + + S2c + + + s2d + + + + su + + + S2d + + + s3a + + + + u + + + S3a + + + s3b + + + + na + + + S3b + + + s3c + + + + ka + + + S3c + + + s3d + + + + ti + + + S3d + + + s4a + + + + a + + + S4a + + + s4b + + + + pa + + + S4b + + + s4c + + + + mi + + + S4c + + + s4d + + + + si + + + S4d + + + s5a + + + + i + + + S5a + + + s5b + + + + ka + + + S5b + + + s5c + + + + nu + + + S5c + + + s5d + + + + ta + + + S5d + + + s6a + + + + u + + + S6a + + + s6b + + + + sa + + + S6b + + + s6c + + + + pi + + + S6c + + + s6d + + + + ^0+ + + + S6d + + + + + verbPrefixes + + slot1 + + + slot2 + + + slot3 + + + slot4 + + + slot5 + + + slot6 + + + + + + kat + R1 + + + mis + R2 + + + nup + R3 + + + tas + R4 + + + pum + R5 + + + sik + R6 + + + kam + R7 + + + nit + R8 + + + tup + R9 + + + mas + R10 + + + sin + R11 + + + pat + R12 + + + + + + + + + + + + + + + + + + + + diff --git a/conformance-stress/edge-cases/excluded-cooccurrence/words.yaml b/conformance-stress/edge-cases/excluded-cooccurrence/words.yaml new file mode 100644 index 000000000..2a2194205 --- /dev/null +++ b/conformance-stress/edge-cases/excluded-cooccurrence/words.yaml @@ -0,0 +1,419 @@ +# kind: stress (timing and optimization parity fixture, not conformance; see conformance-stress/README.md) +# Stress fixture for excluded co-occurrence pruning. The expected parses are engine output, not an independent +# enumeration: the original parses are master's (see conformance-stress/README.md) and the FLEx null-affix rows +# were regenerated from the #480 engine and checked against the grammar. +language: StressExcludedCoOccurrence +inspired_by: ["synthetic prefix-complex stress probe (not modeling any real language)"] +requires: [] +fieldworks_producible: true +budget_ms: 60000 +words: + - word: "tikunup" + note: >- + 2 segmentations; 2 survive the exclude rules. + parses: + - signature: "S3d+S1d+R3|tikunup" + rules: [mrS3d, mrS1d] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6d+S3d+S1d+R3|[(^0)(*0)(&0)∅]?+?tikunup" + rules: [mrS6d, mrS3d, mrS1d] + exercises: ["Morpheme co-occurrence rules"] + - word: "pikukat" + note: >- + 1 segmentations; 1 survive the exclude rules. + parses: + - signature: "S6c+S1d+R1|pikukat" + rules: [mrS6c, mrS1d] + exercises: ["Morpheme co-occurrence rules"] + - word: "pinunup" + note: >- + 1 segmentations; 1 survive the exclude rules. + parses: + - signature: "S6c+S5c+R3|pinunup" + rules: [mrS6c, mrS5c] + exercises: ["Morpheme co-occurrence rules"] + - word: "piminatanisin" + note: >- + 1 segmentations; 0 survive the exclude rules. + expect_fail: true + blocked_by: [mrS3b, mrS4c] + - word: "kanatakupum" + note: >- + 2 segmentations; 2 survive the exclude rules. + parses: + - signature: "S5b+S3b+S2b+S1d+R5|kanatakupum" + rules: [mrS5b, mrS3b, mrS2b, mrS1d] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6d+S5b+S3b+S2b+S1d+R5|[(^0)(*0)(&0)∅]?+?kanatakupum" + rules: [mrS6d, mrS5b, mrS3b, mrS2b, mrS1d] + exercises: ["Morpheme co-occurrence rules"] + - word: "nuumas" + note: >- + 2 segmentations; 2 survive the exclude rules. + parses: + - signature: "S5c+S3a+R10|nuumas" + rules: [mrS5c, mrS3a] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6d+S5c+S3a+R10|[(^0)(*0)(&0)∅]?+?nuumas" + rules: [mrS6d, mrS5c, mrS3a] + exercises: ["Morpheme co-occurrence rules"] + - word: "tasikasunup" + note: >- + 2 segmentations; 2 survive the exclude rules. + parses: + - signature: "S5d+S4d+S3c+S2d+R3|tasikasunup" + rules: [mrS5d, mrS4d, mrS3c, mrS2d] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6d+S5d+S4d+S3c+S2d+R3|[(^0)(*0)(&0)∅]?+?tasikasunup" + rules: [mrS6d, mrS5d, mrS4d, mrS3c, mrS2d] + exercises: ["Morpheme co-occurrence rules"] + - word: "uukat" + note: >- + 1 segmentations; 1 survive the exclude rules. + parses: + - signature: "S6a+S3a+R1|uukat" + rules: [mrS6a, mrS3a] + exercises: ["Morpheme co-occurrence rules"] + - word: "sapakamis" + note: >- + 1 segmentations; 1 survive the exclude rules. + parses: + - signature: "S6b+S4b+S3c+R2|sapakamis" + rules: [mrS6b, mrS4b, mrS3c] + exercises: ["Morpheme co-occurrence rules"] + - word: "sikatapat" + note: >- + 2 segmentations; 2 survive the exclude rules. + parses: + - signature: "S4d+S3c+S2b+R12|sikatapat" + rules: [mrS4d, mrS3c, mrS2b] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6d+S4d+S3c+S2b+R12|[(^0)(*0)(&0)∅]?+?sikatapat" + rules: [mrS6d, mrS4d, mrS3c, mrS2b] + exercises: ["Morpheme co-occurrence rules"] + - word: "nupauimas" + note: >- + 2 segmentations; 0 survive the exclude rules. + expect_fail: true + blocked_by: [mrS2a, mrS4b] + - word: "iusunisik" + note: >- + 2 segmentations; 2 survive the exclude rules. + parses: + - signature: "S5a+S3a+S2d+S1c+R6|iusunisik" + rules: [mrS5a, mrS3a, mrS2d, mrS1c] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6d+S5a+S3a+S2d+S1c+R6|[(^0)(*0)(&0)∅]?+?iusunisik" + rules: [mrS6d, mrS5a, mrS3a, mrS2d, mrS1c] + exercises: ["Morpheme co-occurrence rules"] + - word: "sanukanisin" + note: >- + 1 segmentations; 1 survive the exclude rules. + parses: + - signature: "S6b+S5c+S3c+S1c+R11|sanukanisin" + rules: [mrS6b, mrS5c, mrS3c, mrS1c] + exercises: ["Morpheme co-occurrence rules"] + - word: "nutimanup" + note: >- + 4 segmentations; 4 survive the exclude rules. + parses: + - signature: "S5c+S3d+S1b+R3|nutimanup" + rules: [mrS5c, mrS3d, mrS1b] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S5c+S3d+S2c+R3|nutimanup" + rules: [mrS5c, mrS3d, mrS2c] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6d+S5c+S3d+S1b+R3|[(^0)(*0)(&0)∅]?+?nutimanup" + rules: [mrS6d, mrS5c, mrS3d, mrS1b] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6d+S5c+S3d+S2c+R3|[(^0)(*0)(&0)∅]?+?nutimanup" + rules: [mrS6d, mrS5c, mrS3d, mrS2c] + exercises: ["Morpheme co-occurrence rules"] + - word: "nuamakat" + note: >- + 4 segmentations; 4 survive the exclude rules. + parses: + - signature: "S5c+S4a+S1b+R1|nuamakat" + rules: [mrS5c, mrS4a, mrS1b] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S5c+S4a+S2c+R1|nuamakat" + rules: [mrS5c, mrS4a, mrS2c] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6d+S5c+S4a+S1b+R1|[(^0)(*0)(&0)∅]?+?nuamakat" + rules: [mrS6d, mrS5c, mrS4a, mrS1b] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6d+S5c+S4a+S2c+R1|[(^0)(*0)(&0)∅]?+?nuamakat" + rules: [mrS6d, mrS5c, mrS4a, mrS2c] + exercises: ["Morpheme co-occurrence rules"] + - word: "taumatas" + note: >- + 4 segmentations; 2 survive the exclude rules. + parses: + - signature: "S5d+S3a+S2c+R4|taumatas" + rules: [mrS5d, mrS3a, mrS2c] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6d+S5d+S3a+S2c+R4|[(^0)(*0)(&0)∅]?+?taumatas" + rules: [mrS6d, mrS5d, mrS3a, mrS2c] + exercises: ["Morpheme co-occurrence rules"] + - word: "kaiamas" + note: >- + 4 segmentations; 2 survive the exclude rules. + parses: + - signature: "S3c+S2a+S1a+R10|kaiamas" + rules: [mrS3c, mrS2a, mrS1a] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S5b+S2a+S1a+R10|kaiamas" + rules: [mrS5b, mrS2a, mrS1a] + exercises: ["Morpheme co-occurrence rules"] + - word: "ikatakumis" + note: >- + 2 segmentations; 0 survive the exclude rules. + expect_fail: true + blocked_by: [mrS2b, mrS5a] + - word: "tapanakunit" + note: >- + 2 segmentations; 2 survive the exclude rules. + parses: + - signature: "S5d+S4b+S3b+S1d+R8|tapanakunit" + rules: [mrS5d, mrS4b, mrS3b, mrS1d] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6d+S5d+S4b+S3b+S1d+R8|[(^0)(*0)(&0)∅]?+?tapanakunit" + rules: [mrS6d, mrS5d, mrS4b, mrS3b, mrS1d] + exercises: ["Morpheme co-occurrence rules"] + - word: "pasusin" + note: >- + 2 segmentations; 2 survive the exclude rules. + parses: + - signature: "S4b+S2d+R11|pasusin" + rules: [mrS4b, mrS2d] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6d+S4b+S2d+R11|[(^0)(*0)(&0)∅]?+?pasusin" + rules: [mrS6d, mrS4b, mrS2d] + exercises: ["Morpheme co-occurrence rules"] + - word: "piaipum" + note: >- + 1 segmentations; 1 survive the exclude rules. + parses: + - signature: "S6c+S4a+S2a+R5|piaipum" + rules: [mrS6c, mrS4a, mrS2a] + exercises: ["Morpheme co-occurrence rules"] + - word: "tatapum" + note: >- + 2 segmentations; 2 survive the exclude rules. + parses: + - signature: "S5d+S2b+R5|tatapum" + rules: [mrS5d, mrS2b] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6d+S5d+S2b+R5|[(^0)(*0)(&0)∅]?+?tatapum" + rules: [mrS6d, mrS5d, mrS2b] + exercises: ["Morpheme co-occurrence rules"] + - word: "unimas" + note: >- + 3 segmentations; 3 survive the exclude rules. + parses: + - signature: "S3a+S1c+R10|unimas" + rules: [mrS3a, mrS1c] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6a+S1c+R10|unimas" + rules: [mrS6a, mrS1c] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6d+S3a+S1c+R10|[(^0)(*0)(&0)∅]?+?unimas" + rules: [mrS6d, mrS3a, mrS1c] + exercises: ["Morpheme co-occurrence rules"] + - word: "akutas" + note: >- + 2 segmentations; 2 survive the exclude rules. + parses: + - signature: "S4a+S1d+R4|akutas" + rules: [mrS4a, mrS1d] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6d+S4a+S1d+R4|[(^0)(*0)(&0)∅]?+?akutas" + rules: [mrS6d, mrS4a, mrS1d] + exercises: ["Morpheme co-occurrence rules"] + - word: "pinupatimakam" + note: >- + 2 segmentations; 2 survive the exclude rules. + parses: + - signature: "S6c+S5c+S4b+S3d+S1b+R7|pinupatimakam" + rules: [mrS6c, mrS5c, mrS4b, mrS3d, mrS1b] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6c+S5c+S4b+S3d+S2c+R7|pinupatimakam" + rules: [mrS6c, mrS5c, mrS4b, mrS3d, mrS2c] + exercises: ["Morpheme co-occurrence rules"] + - word: "nasuapum" + note: >- + 2 segmentations; 1 survive the exclude rules. + parses: + - signature: "S3b+S2d+S1a+R5|nasuapum" + rules: [mrS3b, mrS2d, mrS1a] + exercises: ["Morpheme co-occurrence rules"] + - word: "patisukukat" + note: >- + 2 segmentations; 2 survive the exclude rules. + parses: + - signature: "S4b+S3d+S2d+S1d+R1|patisukukat" + rules: [mrS4b, mrS3d, mrS2d, mrS1d] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6d+S4b+S3d+S2d+S1d+R1|[(^0)(*0)(&0)∅]?+?patisukukat" + rules: [mrS6d, mrS4b, mrS3d, mrS2d, mrS1d] + exercises: ["Morpheme co-occurrence rules"] + - word: "inikam" + note: >- + 4 segmentations; 4 survive the exclude rules. + parses: + - signature: "S2a+S1c+R7|inikam" + rules: [mrS2a, mrS1c] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S5a+S1c+R7|inikam" + rules: [mrS5a, mrS1c] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6d+S2a+S1c+R7|[(^0)(*0)(&0)∅]?+?inikam" + rules: [mrS6d, mrS2a, mrS1c] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6d+S5a+S1c+R7|[(^0)(*0)(&0)∅]?+?inikam" + rules: [mrS6d, mrS5a, mrS1c] + exercises: ["Morpheme co-occurrence rules"] + - word: "uatisunikat" + note: >- + 1 segmentations; 1 survive the exclude rules. + parses: + - signature: "S6a+S4a+S3d+S2d+S1c+R1|uatisunikat" + rules: [mrS6a, mrS4a, mrS3d, mrS2d, mrS1c] + exercises: ["Morpheme co-occurrence rules"] + - word: "nuananimis" + note: >- + 2 segmentations; 2 survive the exclude rules. + parses: + - signature: "S5c+S4a+S3b+S1c+R2|nuananimis" + rules: [mrS5c, mrS4a, mrS3b, mrS1c] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6d+S5c+S4a+S3b+S1c+R2|[(^0)(*0)(&0)∅]?+?nuananimis" + rules: [mrS6d, mrS5c, mrS4a, mrS3b, mrS1c] + exercises: ["Morpheme co-occurrence rules"] + - word: "pikatisuakam" + note: >- + 1 segmentations; 1 survive the exclude rules. + parses: + - signature: "S6c+S5b+S3d+S2d+S1a+R7|pikatisuakam" + rules: [mrS6c, mrS5b, mrS3d, mrS2d, mrS1a] + exercises: ["Morpheme co-occurrence rules"] + - word: "uamis" + note: >- + 4 segmentations; 3 survive the exclude rules. + parses: + - signature: "S3a+S1a+R2|uamis" + rules: [mrS3a, mrS1a] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6a+S1a+R2|uamis" + rules: [mrS6a, mrS1a] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6a+S4a+R2|uamis" + rules: [mrS6a, mrS4a] + exercises: ["Morpheme co-occurrence rules"] + - word: "nupausunit" + note: >- + 2 segmentations; 2 survive the exclude rules. + parses: + - signature: "S5c+S4b+S3a+S2d+R8|nupausunit" + rules: [mrS5c, mrS4b, mrS3a, mrS2d] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6d+S5c+S4b+S3a+S2d+R8|[(^0)(*0)(&0)∅]?+?nupausunit" + rules: [mrS6d, mrS5c, mrS4b, mrS3a, mrS2d] + exercises: ["Morpheme co-occurrence rules"] + - word: "katanipat" + note: >- + 4 segmentations; 4 survive the exclude rules. + parses: + - signature: "S3c+S2b+S1c+R12|katanipat" + rules: [mrS3c, mrS2b, mrS1c] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S5b+S2b+S1c+R12|katanipat" + rules: [mrS5b, mrS2b, mrS1c] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6d+S3c+S2b+S1c+R12|[(^0)(*0)(&0)∅]?+?katanipat" + rules: [mrS6d, mrS3c, mrS2b, mrS1c] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6d+S5b+S2b+S1c+R12|[(^0)(*0)(&0)∅]?+?katanipat" + rules: [mrS6d, mrS5b, mrS2b, mrS1c] + exercises: ["Morpheme co-occurrence rules"] + - word: "mikatup" + note: >- + 2 segmentations; 2 survive the exclude rules. + parses: + - signature: "S4c+S3c+R9|mikatup" + rules: [mrS4c, mrS3c] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6d+S4c+S3c+R9|[(^0)(*0)(&0)∅]?+?mikatup" + rules: [mrS6d, mrS4c, mrS3c] + exercises: ["Morpheme co-occurrence rules"] + - word: "piimis" + note: >- + 2 segmentations; 2 survive the exclude rules. + parses: + - signature: "S6c+S2a+R2|piimis" + rules: [mrS6c, mrS2a] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6c+S5a+R2|piimis" + rules: [mrS6c, mrS5a] + exercises: ["Morpheme co-occurrence rules"] + - word: "nusinaasik" + note: >- + 2 segmentations; 1 survive the exclude rules. + parses: + - signature: "S5c+S4d+S3b+S1a+R6|nusinaasik" + rules: [mrS5c, mrS4d, mrS3b, mrS1a] + exercises: ["Morpheme co-occurrence rules"] + - word: "maatup" + note: >- + 2 segmentations; 1 survive the exclude rules. + parses: + - signature: "S2c+S1a+R9|maatup" + rules: [mrS2c, mrS1a] + exercises: ["Morpheme co-occurrence rules"] + - word: "kasitipum" + note: >- + 2 segmentations; 2 survive the exclude rules. + parses: + - signature: "S5b+S4d+S3d+R5|kasitipum" + rules: [mrS5b, mrS4d, mrS3d] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6d+S5b+S4d+S3d+R5|[(^0)(*0)(&0)∅]?+?kasitipum" + rules: [mrS6d, mrS5b, mrS4d, mrS3d] + exercises: ["Morpheme co-occurrence rules"] + - word: "pinunataatas" + note: >- + 1 segmentations; 1 survive the exclude rules. + parses: + - signature: "S6c+S5c+S3b+S2b+S1a+R4|pinunataatas" + rules: [mrS6c, mrS5c, mrS3b, mrS2b, mrS1a] + exercises: ["Morpheme co-occurrence rules"] + - word: "numinakusik" + note: >- + 2 segmentations; 0 survive the exclude rules. + expect_fail: true + blocked_by: [mrS3b, mrS4c] + - word: "uasik" + note: >- + 4 segmentations; 3 survive the exclude rules. + parses: + - signature: "S3a+S1a+R6|uasik" + rules: [mrS3a, mrS1a] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6a+S1a+R6|uasik" + rules: [mrS6a, mrS1a] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S6a+S4a+R6|uasik" + rules: [mrS6a, mrS4a] + exercises: ["Morpheme co-occurrence rules"] + - word: "kasinaiamas" + note: >- + 2 segmentations; 1 survive the exclude rules. + parses: + - signature: "S5b+S4d+S3b+S2a+S1a+R10|kasinaiamas" + rules: [mrS5b, mrS4d, mrS3b, mrS2a, mrS1a] + exercises: ["Morpheme co-occurrence rules"] + - word: "sanuminakupat" + note: >- + 1 segmentations; 0 survive the exclude rules. + expect_fail: true + blocked_by: [mrS3b, mrS4c] diff --git a/conformance-stress/edge-cases/prefix-class-density/grammar.xml b/conformance-stress/edge-cases/prefix-class-density/grammar.xml new file mode 100644 index 000000000..ebbfc3426 --- /dev/null +++ b/conformance-stress/edge-cases/prefix-class-density/grammar.xml @@ -0,0 +1,110 @@ + + + + + StressBantuPrefixDensity + + nounverb + phaeiouptkbdgmnljsvwy + Main + a + e + i + o + u + p + t + k + b + d + g + m + n + l + j + s + v + w + y + + + Any + nc_a + nc_aeiou + nc_aou + nc_bdg + nc_bdgmnl + nc_ei + nc_l + nc_mn + nc_mnl + nc_ou + nc_ptk + + + + Main + + rCls + ng + ka + mu + ny + ki + ku + lu + CLSCLS + rPlu + ba + ma + ve + va + be + PLUPLU + rSubj + ni + tu + ko + si + wa + SUBJSUBJ + rObj + ku + ji + mi + OBJOBJ + + + nounTemplateslotClsslotPlu + verbTemplateslotObjslotSubj + + + pataPATApata + tikaTIKAtika + kopoKOPOkopo + bedeBEDEbede + giduGIDUgidu + manoMANOmano + nukuNUKUnuku + lemaLEMAlema + pelaPELApela + kituKITUkitu + daliDALIdali + bagoBAGObago + petPETpet + tikTIKtik + konKONkon + bedBEDbed + gidGIDgid + munMUNmun + nokNOKnok + lomLOMlom + ateATEate + emiEMIemi + ilaILAila + okuOKUoku + + + + + diff --git a/conformance-stress/edge-cases/prefix-class-density/words.yaml b/conformance-stress/edge-cases/prefix-class-density/words.yaml new file mode 100644 index 000000000..fc7ffa0f7 --- /dev/null +++ b/conformance-stress/edge-cases/prefix-class-density/words.yaml @@ -0,0 +1,395 @@ +# kind: stress (timing and optimization parity fixture, not conformance; see conformance-stress/README.md) +# HAND DERIVATION. Prefix rules, each with allomorphs conditioned on the first segment of the stem to its right +# (RightEnvironment). Environments of one rule are mutually exclusive, so exactly one allomorph is valid. +# CLS (noun class): p t k -> mu, b d g -> ng, m n -> ny, a -> ka, e i -> ki, o u -> ku, l -> lu +# PLU (plural, outside CLS): e i -> ba, p t k -> ma, b d g -> ve, a o u -> va, m n l -> be +# OBJ (verb, inner): b d g m n l -> ku, p t k -> ji, vowel -> mi +# SUBJ (verb, outer): p t k -> ni, any vowel -> tu, b d g -> ko, m n -> si, l -> wa +# Prefixes are applied innermost first, so an outer prefix sees the first segment of the inner prefix. +# Allomorph lists are ordered differently per rule, so recorded indices spread over 0..A-1. Every expected +# parse enumerates every root and slot choice that yields the surface, so ambiguous surfaces list all analyses. +# The expected parses are engine output (master's, see conformance-stress/README.md), checked against this +# derivation. +language: StressBantuPrefixDensity +inspired_by: ["synthetic Bantu noun-class and agreement prefixes written as separate environment-conditioned allomorphs"] +sources: + - "E1 stress fixture 2, hermitcrab-2026-10-27-synthesis-to-analysis-round" +requires: [] +fieldworks_producible: true +budget_ms: 60000 +words: + - word: bemupata + note: >- + pata + CLS + PLU: CLS -> mu- (allomorph 2); PLU -> be- (allomorph 4). Surface bemupata. + parses: + - signature: "PLU+CLS+PATA|bemupata" + gloss: PLU-CLS-pata + rules: [rCls, rPlu] + exercises: [] + - word: mupata + note: >- + pata + CLS: CLS -> mu- (allomorph 2). Surface mupata. + parses: + - signature: "CLS+PATA|mupata" + gloss: CLS-pata + rules: [rCls] + exercises: [] + - word: bemutika + note: >- + tika + CLS + PLU: CLS -> mu- (allomorph 2); PLU -> be- (allomorph 4). Surface bemutika. + parses: + - signature: "PLU+CLS+TIKA|bemutika" + gloss: PLU-CLS-tika + rules: [rCls, rPlu] + exercises: [] + - word: mutika + note: >- + tika + CLS: CLS -> mu- (allomorph 2). Surface mutika. + parses: + - signature: "CLS+TIKA|mutika" + gloss: CLS-tika + rules: [rCls] + exercises: [] + - word: bemukopo + note: >- + kopo + CLS + PLU: CLS -> mu- (allomorph 2); PLU -> be- (allomorph 4). Surface bemukopo. + parses: + - signature: "PLU+CLS+KOPO|bemukopo" + gloss: PLU-CLS-kopo + rules: [rCls, rPlu] + exercises: [] + - word: mukopo + note: >- + kopo + CLS: CLS -> mu- (allomorph 2). Surface mukopo. + parses: + - signature: "CLS+KOPO|mukopo" + gloss: CLS-kopo + rules: [rCls] + exercises: [] + - word: bengbede + note: >- + bede + CLS + PLU: CLS -> ng- (allomorph 0); PLU -> be- (allomorph 4). Surface bengbede. + parses: + - signature: "PLU+CLS+BEDE|bengbede" + gloss: PLU-CLS-bede + rules: [rCls, rPlu] + exercises: [] + - word: ngbede + note: >- + bede + CLS: CLS -> ng- (allomorph 0). Surface ngbede. + parses: + - signature: "CLS+BEDE|ngbede" + gloss: CLS-bede + rules: [rCls] + exercises: [] + - word: benggidu + note: >- + gidu + CLS + PLU: CLS -> ng- (allomorph 0); PLU -> be- (allomorph 4). Surface benggidu. + parses: + - signature: "PLU+CLS+GIDU|benggidu" + gloss: PLU-CLS-gidu + rules: [rCls, rPlu] + exercises: [] + - word: nggidu + note: >- + gidu + CLS: CLS -> ng- (allomorph 0). Surface nggidu. + parses: + - signature: "CLS+GIDU|nggidu" + gloss: CLS-gidu + rules: [rCls] + exercises: [] + - word: benymano + note: >- + mano + CLS + PLU: CLS -> ny- (allomorph 3); PLU -> be- (allomorph 4). Surface benymano. + parses: + - signature: "PLU+CLS+MANO|benymano" + gloss: PLU-CLS-mano + rules: [rCls, rPlu] + exercises: [] + - word: nymano + note: >- + mano + CLS: CLS -> ny- (allomorph 3). Surface nymano. + parses: + - signature: "CLS+MANO|nymano" + gloss: CLS-mano + rules: [rCls] + exercises: [] + - word: benynuku + note: >- + nuku + CLS + PLU: CLS -> ny- (allomorph 3); PLU -> be- (allomorph 4). Surface benynuku. + parses: + - signature: "PLU+CLS+NUKU|benynuku" + gloss: PLU-CLS-nuku + rules: [rCls, rPlu] + exercises: [] + - word: nynuku + note: >- + nuku + CLS: CLS -> ny- (allomorph 3). Surface nynuku. + parses: + - signature: "CLS+NUKU|nynuku" + gloss: CLS-nuku + rules: [rCls] + exercises: [] + - word: belulema + note: >- + lema + CLS + PLU: CLS -> lu- (allomorph 6); PLU -> be- (allomorph 4). Surface belulema. + parses: + - signature: "PLU+CLS+LEMA|belulema" + gloss: PLU-CLS-lema + rules: [rCls, rPlu] + exercises: [] + - word: lulema + note: >- + lema + CLS: CLS -> lu- (allomorph 6). Surface lulema. + parses: + - signature: "CLS+LEMA|lulema" + gloss: CLS-lema + rules: [rCls] + exercises: [] + - word: bemupela + note: >- + pela + CLS + PLU: CLS -> mu- (allomorph 2); PLU -> be- (allomorph 4). Surface bemupela. + parses: + - signature: "PLU+CLS+PELA|bemupela" + gloss: PLU-CLS-pela + rules: [rCls, rPlu] + exercises: [] + - word: mupela + note: >- + pela + CLS: CLS -> mu- (allomorph 2). Surface mupela. + parses: + - signature: "CLS+PELA|mupela" + gloss: CLS-pela + rules: [rCls] + exercises: [] + - word: bemukitu + note: >- + kitu + CLS + PLU: CLS -> mu- (allomorph 2); PLU -> be- (allomorph 4). Surface bemukitu. + parses: + - signature: "PLU+CLS+KITU|bemukitu" + gloss: PLU-CLS-kitu + rules: [rCls, rPlu] + exercises: [] + - word: mukitu + note: >- + kitu + CLS: CLS -> mu- (allomorph 2). Surface mukitu. + parses: + - signature: "CLS+KITU|mukitu" + gloss: CLS-kitu + rules: [rCls] + exercises: [] + - word: bengdali + note: >- + dali + CLS + PLU: CLS -> ng- (allomorph 0); PLU -> be- (allomorph 4). Surface bengdali. + parses: + - signature: "PLU+CLS+DALI|bengdali" + gloss: PLU-CLS-dali + rules: [rCls, rPlu] + exercises: [] + - word: ngdali + note: >- + dali + CLS: CLS -> ng- (allomorph 0). Surface ngdali. + parses: + - signature: "CLS+DALI|ngdali" + gloss: CLS-dali + rules: [rCls] + exercises: [] + - word: bengbago + note: >- + bago + CLS + PLU: CLS -> ng- (allomorph 0); PLU -> be- (allomorph 4). Surface bengbago. + parses: + - signature: "PLU+CLS+BAGO|bengbago" + gloss: PLU-CLS-bago + rules: [rCls, rPlu] + exercises: [] + - word: ngbago + note: >- + bago + CLS: CLS -> ng- (allomorph 0). Surface ngbago. + parses: + - signature: "CLS+BAGO|ngbago" + gloss: CLS-bago + rules: [rCls] + exercises: [] + - word: jipet + note: >- + pet + OBJ: OBJ -> ji- (allomorph 1). Surface jipet. + parses: + - signature: "OBJ+PET|jipet" + gloss: OBJ-pet + rules: [rObj] + exercises: [] + - word: jitik + note: >- + tik + OBJ: OBJ -> ji- (allomorph 1). Surface jitik. + parses: + - signature: "OBJ+TIK|jitik" + gloss: OBJ-tik + rules: [rObj] + exercises: [] + - word: jikon + note: >- + kon + OBJ: OBJ -> ji- (allomorph 1). Surface jikon. + parses: + - signature: "OBJ+KON|jikon" + gloss: OBJ-kon + rules: [rObj] + exercises: [] + - word: nikubed + note: >- + bed + OBJ + SUBJ: OBJ -> ku- (allomorph 0); SUBJ -> ni- (allomorph 0). Surface nikubed. + parses: + - signature: "SUBJ+OBJ+BED|nikubed" + gloss: SUBJ-OBJ-bed + rules: [rObj, rSubj] + exercises: [] + - word: kubed + note: >- + bed + OBJ: OBJ -> ku- (allomorph 0). Surface kubed. + parses: + - signature: "OBJ+BED|kubed" + gloss: OBJ-bed + rules: [rObj] + exercises: [] + - word: nikugid + note: >- + gid + OBJ + SUBJ: OBJ -> ku- (allomorph 0); SUBJ -> ni- (allomorph 0). Surface nikugid. + parses: + - signature: "SUBJ+OBJ+GID|nikugid" + gloss: SUBJ-OBJ-gid + rules: [rObj, rSubj] + exercises: [] + - word: kugid + note: >- + gid + OBJ: OBJ -> ku- (allomorph 0). Surface kugid. + parses: + - signature: "OBJ+GID|kugid" + gloss: OBJ-gid + rules: [rObj] + exercises: [] + - word: nikumun + note: >- + mun + OBJ + SUBJ: OBJ -> ku- (allomorph 0); SUBJ -> ni- (allomorph 0). Surface nikumun. + parses: + - signature: "SUBJ+OBJ+MUN|nikumun" + gloss: SUBJ-OBJ-mun + rules: [rObj, rSubj] + exercises: [] + - word: kumun + note: >- + mun + OBJ: OBJ -> ku- (allomorph 0). Surface kumun. + parses: + - signature: "OBJ+MUN|kumun" + gloss: OBJ-mun + rules: [rObj] + exercises: [] + - word: nikunok + note: >- + nok + OBJ + SUBJ: OBJ -> ku- (allomorph 0); SUBJ -> ni- (allomorph 0). Surface nikunok. + parses: + - signature: "SUBJ+OBJ+NOK|nikunok" + gloss: SUBJ-OBJ-nok + rules: [rObj, rSubj] + exercises: [] + - word: kunok + note: >- + nok + OBJ: OBJ -> ku- (allomorph 0). Surface kunok. + parses: + - signature: "OBJ+NOK|kunok" + gloss: OBJ-nok + rules: [rObj] + exercises: [] + - word: nikulom + note: >- + lom + OBJ + SUBJ: OBJ -> ku- (allomorph 0); SUBJ -> ni- (allomorph 0). Surface nikulom. + parses: + - signature: "SUBJ+OBJ+LOM|nikulom" + gloss: SUBJ-OBJ-lom + rules: [rObj, rSubj] + exercises: [] + - word: kulom + note: >- + lom + OBJ: OBJ -> ku- (allomorph 0). Surface kulom. + parses: + - signature: "OBJ+LOM|kulom" + gloss: OBJ-lom + rules: [rObj] + exercises: [] + - word: simiate + note: >- + ate + OBJ + SUBJ: OBJ -> mi- (allomorph 2); SUBJ -> si- (allomorph 3). Surface simiate. + parses: + - signature: "SUBJ+OBJ+ATE|simiate" + gloss: SUBJ-OBJ-ate + rules: [rObj, rSubj] + exercises: [] + - word: miate + note: >- + ate + OBJ: OBJ -> mi- (allomorph 2). Surface miate. + parses: + - signature: "OBJ+ATE|miate" + gloss: OBJ-ate + rules: [rObj] + exercises: [] + - word: simiemi + note: >- + emi + OBJ + SUBJ: OBJ -> mi- (allomorph 2); SUBJ -> si- (allomorph 3). Surface simiemi. + parses: + - signature: "SUBJ+OBJ+EMI|simiemi" + gloss: SUBJ-OBJ-emi + rules: [rObj, rSubj] + exercises: [] + - word: miemi + note: >- + emi + OBJ: OBJ -> mi- (allomorph 2). Surface miemi. + parses: + - signature: "OBJ+EMI|miemi" + gloss: OBJ-emi + rules: [rObj] + exercises: [] + - word: simiila + note: >- + ila + OBJ + SUBJ: OBJ -> mi- (allomorph 2); SUBJ -> si- (allomorph 3). Surface simiila. + parses: + - signature: "SUBJ+OBJ+ILA|simiila" + gloss: SUBJ-OBJ-ila + rules: [rObj, rSubj] + exercises: [] + - word: miila + note: >- + ila + OBJ: OBJ -> mi- (allomorph 2). Surface miila. + parses: + - signature: "OBJ+ILA|miila" + gloss: OBJ-ila + rules: [rObj] + exercises: [] + - word: simioku + note: >- + oku + OBJ + SUBJ: OBJ -> mi- (allomorph 2); SUBJ -> si- (allomorph 3). Surface simioku. + parses: + - signature: "SUBJ+OBJ+OKU|simioku" + gloss: SUBJ-OBJ-oku + rules: [rObj, rSubj] + exercises: [] + - word: mioku + note: >- + oku + OBJ: OBJ -> mi- (allomorph 2). Surface mioku. + parses: + - signature: "OBJ+OKU|mioku" + gloss: OBJ-oku + rules: [rObj] + exercises: [] + - word: kakata + note: >- + No allomorph environment and root combination yields this surface. + expect_fail: true + exercises: [] + - word: nipata + note: >- + No allomorph environment and root combination yields this surface. + expect_fail: true + exercises: [] + - word: bapata + note: >- + No allomorph environment and root combination yields this surface. + expect_fail: true + exercises: [] diff --git a/conformance-stress/edge-cases/required-template-slot/grammar.xml b/conformance-stress/edge-cases/required-template-slot/grammar.xml new file mode 100644 index 000000000..ae1d04968 --- /dev/null +++ b/conformance-stress/edge-cases/required-template-slot/grammar.xml @@ -0,0 +1,529 @@ + + + + + StressRequiredTemplateSlot + + v + n + + + Main + + a + e + i + o + u + b + d + g + k + l + m + n + p + s + t + v + w + y + + + + Any + + + + Main + + + mrEXT1 + + + + il + + + EXT1 + EXT1 + + + mrEXT2 + + + + an + + + EXT2 + EXT2 + + + mrFV1 + + + + a + + + FV1 + FV1 + + + mrFV2 + + + + e + + + FV2 + FV2 + + + mrOM1 + + + + mu + + + OM1 + OM1 + + + mrOM2 + + + + wa + + + OM2 + OM2 + + + mrOM3 + + + + ki + + + OM3 + OM3 + + + mrOM4 + + + + vi + + + OM4 + OM4 + + + mrOM5 + + + + ku + + + OM5 + OM5 + + + mrOM6 + + + + tu + + + OM6 + OM6 + + + mrTAM1 + + + + a + + + TAM1 + TAM1 + + + mrTAM2 + + + + na + + + TAM2 + TAM2 + + + mrTAM3 + + + + li + + + TAM3 + TAM3 + + + mrTAM4 + + + + ta + + + TAM4 + TAM4 + + + mrTAM5 + + + + me + + + TAM5 + TAM5 + + + mrSM1 + + + + ni + + + SM1 + SM1 + + + mrSM2 + + + + u + + + SM2 + SM2 + + + mrSM3 + + + + a + + + SM3 + SM3 + + + mrSM4 + + + + tu + + + SM4 + SM4 + + + mrSM5 + + + + m + + + SM5 + SM5 + + + mrSM6 + + + + wa + + + SM6 + SM6 + + + mrSM7 + + + + ki + + + SM7 + SM7 + + + mrSM8 + + + + vi + + + SM8 + SM8 + + + mrCL1 + + + + m + + + CL1 + CL1 + + + mrCL2 + + + + wa + + + CL2 + CL2 + + + mrCL3 + + + + ki + + + CL3 + CL3 + + + mrCL4 + + + + vi + + + CL4 + CL4 + + + mrCL5 + + + + n + + + CL5 + CL5 + + + mrCL6 + + + + ma + + + CL6 + CL6 + + + + + verbTemplate + extension + finalVowel + objectMarker + tam + subjectMarker + + + nounTemplate + nounClass + + + + + lim + V_LIM + lim.V + + + tum + V_TUM + tum.V + + + bon + V_BON + bon.V + + + kal + V_KAL + kal.V + + + pat + V_PAT + pat.V + + + sem + V_SEM + sem.V + + + som + V_SOM + som.V + + + gul + V_GUL + gul.V + + + nen + V_NEN + nen.V + + + dik + V_DIK + dik.V + + + lek + V_LEK + lek.V + + + wan + V_WAN + wan.V + + + bal + V_BAL + bal.V + + + tek + V_TEK + tek.V + + + mak + V_MAK + mak.V + + + sip + V_SIP + sip.V + + + lim + N_LIM + lim.N + + + tum + N_TUM + tum.N + + + kal + N_KAL + kal.N + + + bon + N_BON + bon.N + + + kilim + N_KILIM + kilim.N + + + mbali + N_MBALI + mbali.N + + + sima + N_SIMA + sima.N + + + kiti + N_KITI + kiti.N + + + nana + N_NANA + nana.N + + + lek + N_LEK + lek.N + + + tuma + N_TUMA + tuma.N + + + taka + N_TAKA + taka.N + + + mtu + N_MTU + mtu.N + + + diko + N_DIKO + diko.N + + + + + + diff --git a/conformance-stress/edge-cases/required-template-slot/words.yaml b/conformance-stress/edge-cases/required-template-slot/words.yaml new file mode 100644 index 000000000..2cb34de42 --- /dev/null +++ b/conformance-stress/edge-cases/required-template-slot/words.yaml @@ -0,0 +1,508 @@ +# kind: stress (timing and optimization parity fixture, not conformance; see conformance-stress/README.md) +# HAND DERIVATION (see grammar.xml). Pure-morphotactics Bantu-like stress grammar, no phonology. +# Verb template, application order innermost to outermost: extension (optional suffix, 2 fillers), +# final vowel (optional suffix, 2), object marker (optional prefix, 6), TAM (REQUIRED prefix, 5), +# subject marker (optional prefix, 8). Surface = SM TAM OM root EXT FV. Noun template: one REQUIRED +# class prefix (6 fillers). 16 verb roots and 14 noun roots; several noun and verb shapes coincide +# (lim tum kal bon lek) and noun roots like kilim/tuma contain verb-affix material, so bare stems +# and partly unapplied forms reach root lookup and die at the required slot. +# For each word the parses below are every (root, slot choice) whose surface equals the word. They +# are engine output (master's, see conformance-stress/README.md), checked against the slot tables above. +# A word with no derivation is an expect_fail word; its +# blocked_by names the required-slot rule class that no analysis can supply. +# Signature: morpheme IDs outermost first, then the root, then "|" and the surface. +language: StressRequiredTemplateSlot +inspired_by: ["Bantu verb templates with a required TAM slot (synthetic stress, not a specific language)"] +sources: + - "synthetic stress fixture for E3 (template replay at lexical lookup)" +requires: [] +fieldworks_producible: true +budget_ms: 60000 +words: + - word: matuma + note: >- + 2 derivation(s) found by enumerating root x slot choices (see header). + parses: + - signature: "CL6+N_TUMA|matuma" + rules: [mrCL6] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + - signature: "SM5+TAM1+V_TUM+FV1|matuma" + rules: [mrFV1, mrTAM1, mrSM5] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: makilim + note: >- + 2 derivation(s) found by enumerating root x slot choices (see header). + parses: + - signature: "CL6+N_KILIM|makilim" + rules: [mrCL6] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + - signature: "SM5+TAM1+OM3+V_LIM|makilim" + rules: [mrOM3, mrTAM1, mrSM5] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: mabon + note: >- + 2 derivation(s) found by enumerating root x slot choices (see header). + parses: + - signature: "CL6+N_BON|mabon" + rules: [mrCL6] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + - signature: "SM5+TAM1+V_BON|mabon" + rules: [mrTAM1, mrSM5] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: matum + note: >- + 2 derivation(s) found by enumerating root x slot choices (see header). + parses: + - signature: "CL6+N_TUM|matum" + rules: [mrCL6] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + - signature: "SM5+TAM1+V_TUM|matum" + rules: [mrTAM1, mrSM5] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: malim + note: >- + 2 derivation(s) found by enumerating root x slot choices (see header). + parses: + - signature: "CL6+N_LIM|malim" + rules: [mrCL6] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + - signature: "SM5+TAM1+V_LIM|malim" + rules: [mrTAM1, mrSM5] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: malek + note: >- + 2 derivation(s) found by enumerating root x slot choices (see header). + parses: + - signature: "CL6+N_LEK|malek" + rules: [mrCL6] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + - signature: "SM5+TAM1+V_LEK|malek" + rules: [mrTAM1, mrSM5] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: makal + note: >- + 2 derivation(s) found by enumerating root x slot choices (see header). + parses: + - signature: "CL6+N_KAL|makal" + rules: [mrCL6] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + - signature: "SM5+TAM1+V_KAL|makal" + rules: [mrTAM1, mrSM5] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: tuliwanan + note: >- + 1 derivation(s) found by enumerating root x slot choices (see header). + parses: + - signature: "SM4+TAM3+V_WAN+EXT2|tuliwanan" + rules: [mrEXT2, mrTAM3, mrSM4] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: mnamulekil + note: >- + 1 derivation(s) found by enumerating root x slot choices (see header). + parses: + - signature: "SM5+TAM2+OM1+V_LEK+EXT1|mnamulekil" + rules: [mrEXT1, mrOM1, mrTAM2, mrSM5] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: nilimubona + note: >- + 1 derivation(s) found by enumerating root x slot choices (see header). + parses: + - signature: "SM1+TAM3+OM1+V_BON+FV1|nilimubona" + rules: [mrFV1, mrOM1, mrTAM3, mrSM1] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: anawamake + note: >- + 1 derivation(s) found by enumerating root x slot choices (see header). + parses: + - signature: "SM3+TAM2+OM2+V_MAK+FV2|anawamake" + rules: [mrFV2, mrOM2, mrTAM2, mrSM3] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: waakal + note: >- + 1 derivation(s) found by enumerating root x slot choices (see header). + parses: + - signature: "SM6+TAM1+V_KAL|waakal" + rules: [mrTAM1, mrSM6] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: ulimutuman + note: >- + 1 derivation(s) found by enumerating root x slot choices (see header). + parses: + - signature: "SM2+TAM3+OM1+V_TUM+EXT2|ulimutuman" + rules: [mrEXT2, mrOM1, mrTAM3, mrSM2] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: anamuteka + note: >- + 1 derivation(s) found by enumerating root x slot choices (see header). + parses: + - signature: "SM3+TAM2+OM1+V_TEK+FV1|anamuteka" + rules: [mrFV1, mrOM1, mrTAM2, mrSM3] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: mnamutekan + note: >- + 1 derivation(s) found by enumerating root x slot choices (see header). + parses: + - signature: "SM5+TAM2+OM1+V_TEK+EXT2|mnamutekan" + rules: [mrEXT2, mrOM1, mrTAM2, mrSM5] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: wamewaleke + note: >- + 1 derivation(s) found by enumerating root x slot choices (see header). + parses: + - signature: "SM6+TAM5+OM2+V_LEK+FV2|wamewaleke" + rules: [mrFV2, mrOM2, mrTAM5, mrSM6] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: waawatekil + note: >- + 1 derivation(s) found by enumerating root x slot choices (see header). + parses: + - signature: "SM6+TAM1+OM2+V_TEK+EXT1|waawatekil" + rules: [mrEXT1, mrOM2, mrTAM1, mrSM6] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: likipatana + note: >- + 1 derivation(s) found by enumerating root x slot choices (see header). + parses: + - signature: "TAM3+OM3+V_PAT+EXT2+FV1|likipatana" + rules: [mrEXT2, mrFV1, mrOM3, mrTAM3] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: mlitunene + note: >- + 1 derivation(s) found by enumerating root x slot choices (see header). + parses: + - signature: "SM5+TAM3+OM6+V_NEN+FV2|mlitunene" + rules: [mrFV2, mrOM6, mrTAM3, mrSM5] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: waavisipe + note: >- + 1 derivation(s) found by enumerating root x slot choices (see header). + parses: + - signature: "SM6+TAM1+OM4+V_SIP+FV2|waavisipe" + rules: [mrFV2, mrOM4, mrTAM1, mrSM6] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: mmenena + note: >- + 1 derivation(s) found by enumerating root x slot choices (see header). + parses: + - signature: "SM5+TAM5+V_NEN+FV1|mmenena" + rules: [mrFV1, mrTAM5, mrSM5] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: mmetutek + note: >- + 1 derivation(s) found by enumerating root x slot choices (see header). + parses: + - signature: "SM5+TAM5+OM6+V_TEK|mmetutek" + rules: [mrOM6, mrTAM5, mrSM5] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: metumila + note: >- + 1 derivation(s) found by enumerating root x slot choices (see header). + parses: + - signature: "TAM5+V_TUM+EXT1+FV1|metumila" + rules: [mrEXT1, mrFV1, mrTAM5] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: nitakusipa + note: >- + 1 derivation(s) found by enumerating root x slot choices (see header). + parses: + - signature: "SM1+TAM4+OM5+V_SIP+FV1|nitakusipa" + rules: [mrFV1, mrOM5, mrTAM4, mrSM1] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: awalima + note: >- + 1 derivation(s) found by enumerating root x slot choices (see header). + parses: + - signature: "TAM1+OM2+V_LIM+FV1|awalima" + rules: [mrFV1, mrOM2, mrTAM1] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: unamakil + note: >- + 1 derivation(s) found by enumerating root x slot choices (see header). + parses: + - signature: "SM2+TAM2+V_MAK+EXT1|unamakil" + rules: [mrEXT1, mrTAM2, mrSM2] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: malimana + note: >- + 1 derivation(s) found by enumerating root x slot choices (see header). + parses: + - signature: "SM5+TAM1+V_LIM+EXT2+FV1|malimana" + rules: [mrEXT2, mrFV1, mrTAM1, mrSM5] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: tavipatila + note: >- + 1 derivation(s) found by enumerating root x slot choices (see header). + parses: + - signature: "TAM4+OM4+V_PAT+EXT1+FV1|tavipatila" + rules: [mrEXT1, mrFV1, mrOM4, mrTAM4] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: mekibalane + note: >- + 1 derivation(s) found by enumerating root x slot choices (see header). + parses: + - signature: "TAM5+OM3+V_BAL+EXT2+FV2|mekibalane" + rules: [mrEXT2, mrFV2, mrOM3, mrTAM5] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: tumebalane + note: >- + 1 derivation(s) found by enumerating root x slot choices (see header). + parses: + - signature: "SM4+TAM5+V_BAL+EXT2+FV2|tumebalane" + rules: [mrEXT2, mrFV2, mrTAM5, mrSM4] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: tamugula + note: >- + 1 derivation(s) found by enumerating root x slot choices (see header). + parses: + - signature: "TAM4+OM1+V_GUL+FV1|tamugula" + rules: [mrFV1, mrOM1, mrTAM4] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: ulimutuma + note: >- + 1 derivation(s) found by enumerating root x slot choices (see header). + parses: + - signature: "SM2+TAM3+OM1+V_TUM+FV1|ulimutuma" + rules: [mrFV1, mrOM1, mrTAM3, mrSM2] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: unawagul + note: >- + 1 derivation(s) found by enumerating root x slot choices (see header). + parses: + - signature: "SM2+TAM2+OM2+V_GUL|unawagul" + rules: [mrOM2, mrTAM2, mrSM2] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: mewasemane + note: >- + 1 derivation(s) found by enumerating root x slot choices (see header). + parses: + - signature: "TAM5+OM2+V_SEM+EXT2+FV2|mewasemane" + rules: [mrEXT2, mrFV2, mrOM2, mrTAM5] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: mtatuseman + note: >- + 1 derivation(s) found by enumerating root x slot choices (see header). + parses: + - signature: "SM5+TAM4+OM6+V_SEM+EXT2|mtatuseman" + rules: [mrEXT2, mrOM6, mrTAM4, mrSM5] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: nakukalan + note: >- + 1 derivation(s) found by enumerating root x slot choices (see header). + parses: + - signature: "TAM2+OM5+V_KAL+EXT2|nakukalan" + rules: [mrEXT2, mrOM5, mrTAM2] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: tuagulane + note: >- + 1 derivation(s) found by enumerating root x slot choices (see header). + parses: + - signature: "SM4+TAM1+V_GUL+EXT2+FV2|tuagulane" + rules: [mrEXT2, mrFV2, mrTAM1, mrSM4] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: nakileke + note: >- + 1 derivation(s) found by enumerating root x slot choices (see header). + parses: + - signature: "TAM2+OM3+V_LEK+FV2|nakileke" + rules: [mrFV2, mrOM3, mrTAM2] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: vinatubona + note: >- + 1 derivation(s) found by enumerating root x slot choices (see header). + parses: + - signature: "SM8+TAM2+OM6+V_BON+FV1|vinatubona" + rules: [mrFV1, mrOM6, mrTAM2, mrSM8] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: umewateke + note: >- + 1 derivation(s) found by enumerating root x slot choices (see header). + parses: + - signature: "SM2+TAM5+OM2+V_TEK+FV2|umewateke" + rules: [mrFV2, mrOM2, mrTAM5, mrSM2] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: vitatum + note: >- + 1 derivation(s) found by enumerating root x slot choices (see header). + parses: + - signature: "SM8+TAM4+V_TUM|vitatum" + rules: [mrTAM4, mrSM8] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: aaleke + note: >- + 1 derivation(s) found by enumerating root x slot choices (see header). + parses: + - signature: "SM3+TAM1+V_LEK+FV2|aaleke" + rules: [mrFV2, mrTAM1, mrSM3] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: vinabale + note: >- + 1 derivation(s) found by enumerating root x slot choices (see header). + parses: + - signature: "SM8+TAM2+V_BAL+FV2|vinabale" + rules: [mrFV2, mrTAM2, mrSM8] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: mtuma + note: >- + 1 derivation(s) found by enumerating root x slot choices (see header). + parses: + - signature: "CL1+N_TUMA|mtuma" + rules: [mrCL1] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: vikal + note: >- + 1 derivation(s) found by enumerating root x slot choices (see header). + parses: + - signature: "CL4+N_KAL|vikal" + rules: [mrCL4] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: vidiko + note: >- + 1 derivation(s) found by enumerating root x slot choices (see header). + parses: + - signature: "CL4+N_DIKO|vidiko" + rules: [mrCL4] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: kibon + note: >- + 1 derivation(s) found by enumerating root x slot choices (see header). + parses: + - signature: "CL3+N_BON|kibon" + rules: [mrCL3] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: tumu + note: >- + No derivation: the verb template needs a TAM prefix and the noun template a class prefix, and no + root plus slot choice yields this surface. Zero parses. + expect_fail: true + blocked_by: [mrTAM1] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: nalekk + note: >- + No derivation: the verb template needs a TAM prefix and the noun template a class prefix, and no + root plus slot choice yields this surface. Zero parses. + expect_fail: true + blocked_by: [mrTAM1] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: bon + note: >- + No derivation: the verb template needs a TAM prefix and the noun template a class prefix, and no + root plus slot choice yields this surface. Zero parses. + expect_fail: true + blocked_by: [mrTAM1] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + + - word: waatumb + note: >- + No derivation: the verb template needs a TAM prefix and the noun template a class prefix, and no + root plus slot choice yields this surface. Zero parses. + expect_fail: true + blocked_by: [mrTAM1] + exercises: + - "Affix template slots (obligatory/disjunctive/ordering)" + diff --git a/conformance-stress/edge-cases/truncating-slot-chain/grammar.xml b/conformance-stress/edge-cases/truncating-slot-chain/grammar.xml new file mode 100644 index 000000000..d0619395f --- /dev/null +++ b/conformance-stress/edge-cases/truncating-slot-chain/grammar.xml @@ -0,0 +1,137 @@ + + + + + truncating-slot-chain + v + + syl+- + cons+- + son+- + nas+- + voice+- + cont+- + high+- + low+- + back+- + round+- + lat+- + placelabialalveolarvelarglottalnone + + + Main + a + e + i + o + u + b + d + g + h + k + l + m + n + p + r + s + t + w + y + + AnyVowel + Main + +tam_kakatam_kaTAM.ka +tam_keketam_keTAM.ke +tam_kikitam_kiTAM.ki +tam_kokotam_koTAM.ko +tam_kukutam_kuTAM.ku +ext_kakaext_kaEXT.ka +ext_titiext_tiEXT.ti +ext_pupuext_puEXT.pu +ext_leleext_leEXT.le +ext_momoext_moEXT.mo +ext_nanaext_naEXT.na +ext_ririext_riEXT.ri +ext_susuext_suEXT.su +o2_babao2_baO2.ba +o2_didio2_diO2.di +o2_guguo2_guO2.gu +o2_heheo2_heO2.he +o2_kokoo2_koO2.ko +o2_lalao2_laO2.la +o2_memeo2_meO2.me +o2_nonoo2_noO2.no +o2_papao2_paO2.pa +o2_ruruo2_ruO2.ru +o3_tatao3_taO3.ta +o3_kikio3_kiO3.ki +o3_susuo3_suO3.su +o3_neneo3_neO3.ne +o3_popoo3_poO3.po +o3_rarao3_raO3.ra +o3_mimio3_miO3.mi +o3_loloo3_loO3.lo +o3_bubuo3_buO3.bu +o3_dadao3_daO3.da +o4_gagao4_gaO4.ga +o4_hihio4_hiO4.hi +o4_tutuo4_tuO4.tu +o4_kekeo4_keO4.ke +o4_boboo4_boO4.bo +o4_sasao4_saO4.sa +o4_ninio4_niO4.ni +o4_mamao4_maO4.ma +o4_pipio4_piO4.pi +o4_luluo4_luO4.lu +subj_nunusubj_nuSUBJ.nu +subj_bubusubj_buSUBJ.bu +subj_dudusubj_duSUBJ.du +subj_gogosubj_goSUBJ.go +subj_hohosubj_hoSUBJ.ho +subj_kokosubj_koSUBJ.ko +subj_lolosubj_loSUBJ.lo +subj_momosubj_moSUBJ.mo +subj_nonosubj_noSUBJ.no +subj_poposubj_poSUBJ.po +subj_rorosubj_roSUBJ.ro +subj_sososubj_soSUBJ.so +subj_totosubj_toSUBJ.to +subj_wowosubj_woSUBJ.wo +subj_yoyosubj_yoSUBJ.yo + +t0_katenseextopt2opt3opt4subjectt1_ketenseextopt2opt3opt4subjectt2_kitenseextopt2opt3opt4subjectt3_kotenseextopt2opt3opt4subjectt4_kutenseextopt2opt3opt4subject + +balbalbal +temtemtem +kumkumkum +dipdipdip +gorgorgor +hanhanhan +keskeskes +lublublub +mermermer +nugnugnug +patpatpat +remremrem +solsolsol +tagtagtag +wabwabwab +belbelbel +dagdagdag +gumgumgum +hithithit +korkorkor +lenlenlen +mosmosmos +nemnemnem +pirpirpir +rotrotrot +sabsabsab +tultultul +wenwenwen +bisbisbis +doldoldol + diff --git a/conformance-stress/edge-cases/truncating-slot-chain/words.yaml b/conformance-stress/edge-cases/truncating-slot-chain/words.yaml new file mode 100644 index 000000000..f301c2df1 --- /dev/null +++ b/conformance-stress/edge-cases/truncating-slot-chain/words.yaml @@ -0,0 +1,797 @@ +# kind: stress (timing and optimization parity fixture, not conformance; see conformance-stress/README.md) +language: StressTruncatingSlotChain +sources: [] +requires: [] +fieldworks_producible: true +budget_ms: 60000 +words: + - word: tokorklsu + note: "Truncating-slot stress: 60 words over 5 synthetic templates whose required and optional suffix slots each delete the vowel before them; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_to+kor+tam_ka+ext_le+o3_su|tokorklsu" + rules: [ext_le, o3_su, subj_to, tam_ka] + - signature: "subj_to+kor+tam_ke+ext_le+o3_su|tokorklsu" + rules: [ext_le, o3_su, subj_to, tam_ke] + - signature: "subj_to+kor+tam_ki+ext_le+o3_su|tokorklsu" + rules: [ext_le, o3_su, subj_to, tam_ki] + - signature: "subj_to+kor+tam_ko+ext_le+o3_su|tokorklsu" + rules: [ext_le, o3_su, subj_to, tam_ko] + - signature: "subj_to+kor+tam_ku+ext_le+o3_su|tokorklsu" + rules: [ext_le, o3_su, subj_to, tam_ku] + - word: nolenksu + note: "Truncating-slot stress: 60 words over 5 synthetic templates whose required and optional suffix slots each delete the vowel before them; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_no+len+tam_ka+ext_su|nolenksu" + rules: [ext_su, subj_no, tam_ka] + - signature: "subj_no+len+tam_ke+ext_su|nolenksu" + rules: [ext_su, subj_no, tam_ke] + - signature: "subj_no+len+tam_ki+ext_su|nolenksu" + rules: [ext_su, subj_no, tam_ki] + - signature: "subj_no+len+tam_ko+ext_su|nolenksu" + rules: [ext_su, subj_no, tam_ko] + - signature: "subj_no+len+tam_ku+ext_su|nolenksu" + rules: [ext_su, subj_no, tam_ku] + - word: dusabkti + note: "Truncating-slot stress: 60 words over 5 synthetic templates whose required and optional suffix slots each delete the vowel before them; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_du+sab+tam_ka+ext_ti|dusabkti" + rules: [ext_ti, subj_du, tam_ka] + - signature: "subj_du+sab+tam_ke+ext_ti|dusabkti" + rules: [ext_ti, subj_du, tam_ke] + - signature: "subj_du+sab+tam_ki+ext_ti|dusabkti" + rules: [ext_ti, subj_du, tam_ki] + - signature: "subj_du+sab+tam_ko+ext_ti|dusabkti" + rules: [ext_ti, subj_du, tam_ko] + - signature: "subj_du+sab+tam_ku+ext_ti|dusabkti" + rules: [ext_ti, subj_du, tam_ku] + - word: sodipkpu + note: "Truncating-slot stress: 60 words over 5 synthetic templates whose required and optional suffix slots each delete the vowel before them; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_so+dip+tam_ka+ext_pu|sodipkpu" + rules: [ext_pu, subj_so, tam_ka] + - signature: "subj_so+dip+tam_ke+ext_pu|sodipkpu" + rules: [ext_pu, subj_so, tam_ke] + - signature: "subj_so+dip+tam_ki+ext_pu|sodipkpu" + rules: [ext_pu, subj_so, tam_ki] + - signature: "subj_so+dip+tam_ko+ext_pu|sodipkpu" + rules: [ext_pu, subj_so, tam_ko] + - signature: "subj_so+dip+tam_ku+ext_pu|sodipkpu" + rules: [ext_pu, subj_so, tam_ku] + - word: topatksu + note: "Truncating-slot stress: 60 words over 5 synthetic templates whose required and optional suffix slots each delete the vowel before them; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_to+pat+tam_ka+ext_su|topatksu" + rules: [ext_su, subj_to, tam_ka] + - signature: "subj_to+pat+tam_ke+ext_su|topatksu" + rules: [ext_su, subj_to, tam_ke] + - signature: "subj_to+pat+tam_ki+ext_su|topatksu" + rules: [ext_su, subj_to, tam_ki] + - signature: "subj_to+pat+tam_ko+ext_su|topatksu" + rules: [ext_su, subj_to, tam_ko] + - signature: "subj_to+pat+tam_ku+ext_su|topatksu" + rules: [ext_su, subj_to, tam_ku] + - word: notagkkne + note: "Truncating-slot stress: 60 words over 5 synthetic templates whose required and optional suffix slots each delete the vowel before them; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_no+tag+tam_ka+ext_ka+o3_ne|notagkkne" + rules: [ext_ka, o3_ne, subj_no, tam_ka] + - signature: "subj_no+tag+tam_ke+ext_ka+o3_ne|notagkkne" + rules: [ext_ka, o3_ne, subj_no, tam_ke] + - signature: "subj_no+tag+tam_ki+ext_ka+o3_ne|notagkkne" + rules: [ext_ka, o3_ne, subj_no, tam_ki] + - signature: "subj_no+tag+tam_ko+ext_ka+o3_ne|notagkkne" + rules: [ext_ka, o3_ne, subj_no, tam_ko] + - signature: "subj_no+tag+tam_ku+ext_ka+o3_ne|notagkkne" + rules: [ext_ka, o3_ne, subj_no, tam_ku] + - word: pobiskrda + note: "Truncating-slot stress: 60 words over 5 synthetic templates whose required and optional suffix slots each delete the vowel before them; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_po+bis+tam_ka+ext_ri+o3_da|pobiskrda" + rules: [ext_ri, o3_da, subj_po, tam_ka] + - signature: "subj_po+bis+tam_ke+ext_ri+o3_da|pobiskrda" + rules: [ext_ri, o3_da, subj_po, tam_ke] + - signature: "subj_po+bis+tam_ki+ext_ri+o3_da|pobiskrda" + rules: [ext_ri, o3_da, subj_po, tam_ki] + - signature: "subj_po+bis+tam_ko+ext_ri+o3_da|pobiskrda" + rules: [ext_ri, o3_da, subj_po, tam_ko] + - signature: "subj_po+bis+tam_ku+ext_ri+o3_da|pobiskrda" + rules: [ext_ri, o3_da, subj_po, tam_ku] + - word: nunugkspi + note: "Truncating-slot stress: 60 words over 5 synthetic templates whose required and optional suffix slots each delete the vowel before them; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_nu+nug+tam_ka+ext_su+o4_pi|nunugkspi" + rules: [ext_su, o4_pi, subj_nu, tam_ka] + - signature: "subj_nu+nug+tam_ke+ext_su+o4_pi|nunugkspi" + rules: [ext_su, o4_pi, subj_nu, tam_ke] + - signature: "subj_nu+nug+tam_ki+ext_su+o4_pi|nunugkspi" + rules: [ext_su, o4_pi, subj_nu, tam_ki] + - signature: "subj_nu+nug+tam_ko+ext_su+o4_pi|nunugkspi" + rules: [ext_su, o4_pi, subj_nu, tam_ko] + - signature: "subj_nu+nug+tam_ku+ext_su+o4_pi|nunugkspi" + rules: [ext_su, o4_pi, subj_nu, tam_ku] + - word: rotemkprra + note: "Truncating-slot stress: 60 words over 5 synthetic templates whose required and optional suffix slots each delete the vowel before them; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_ro+tem+tam_ka+ext_pu+o2_ru+o3_ra|rotemkprra" + rules: [ext_pu, o2_ru, o3_ra, subj_ro, tam_ka] + - signature: "subj_ro+tem+tam_ke+ext_pu+o2_ru+o3_ra|rotemkprra" + rules: [ext_pu, o2_ru, o3_ra, subj_ro, tam_ke] + - signature: "subj_ro+tem+tam_ki+ext_pu+o2_ru+o3_ra|rotemkprra" + rules: [ext_pu, o2_ru, o3_ra, subj_ro, tam_ki] + - signature: "subj_ro+tem+tam_ko+ext_pu+o2_ru+o3_ra|rotemkprra" + rules: [ext_pu, o2_ru, o3_ra, subj_ro, tam_ko] + - signature: "subj_ro+tem+tam_ku+ext_pu+o2_ru+o3_ra|rotemkprra" + rules: [ext_pu, o2_ru, o3_ra, subj_ro, tam_ku] + - word: mowabkpdma + note: "Truncating-slot stress: 60 words over 5 synthetic templates whose required and optional suffix slots each delete the vowel before them; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_mo+wab+tam_ka+ext_pu+o2_di+o4_ma|mowabkpdma" + rules: [ext_pu, o2_di, o4_ma, subj_mo, tam_ka] + - signature: "subj_mo+wab+tam_ka+ext_pu+o3_da+o4_ma|mowabkpdma" + rules: [ext_pu, o3_da, o4_ma, subj_mo, tam_ka] + - signature: "subj_mo+wab+tam_ke+ext_pu+o2_di+o4_ma|mowabkpdma" + rules: [ext_pu, o2_di, o4_ma, subj_mo, tam_ke] + - signature: "subj_mo+wab+tam_ke+ext_pu+o3_da+o4_ma|mowabkpdma" + rules: [ext_pu, o3_da, o4_ma, subj_mo, tam_ke] + - signature: "subj_mo+wab+tam_ki+ext_pu+o2_di+o4_ma|mowabkpdma" + rules: [ext_pu, o2_di, o4_ma, subj_mo, tam_ki] + - signature: "subj_mo+wab+tam_ki+ext_pu+o3_da+o4_ma|mowabkpdma" + rules: [ext_pu, o3_da, o4_ma, subj_mo, tam_ki] + - signature: "subj_mo+wab+tam_ko+ext_pu+o2_di+o4_ma|mowabkpdma" + rules: [ext_pu, o2_di, o4_ma, subj_mo, tam_ko] + - signature: "subj_mo+wab+tam_ko+ext_pu+o3_da+o4_ma|mowabkpdma" + rules: [ext_pu, o3_da, o4_ma, subj_mo, tam_ko] + - signature: "subj_mo+wab+tam_ku+ext_pu+o2_di+o4_ma|mowabkpdma" + rules: [ext_pu, o2_di, o4_ma, subj_mo, tam_ku] + - signature: "subj_mo+wab+tam_ku+ext_pu+o3_da+o4_ma|mowabkpdma" + rules: [ext_pu, o3_da, o4_ma, subj_mo, tam_ku] + - word: nomerkkpa + note: "Truncating-slot stress: 60 words over 5 synthetic templates whose required and optional suffix slots each delete the vowel before them; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_no+mer+tam_ka+ext_ka+o2_pa|nomerkkpa" + rules: [ext_ka, o2_pa, subj_no, tam_ka] + - signature: "subj_no+mer+tam_ke+ext_ka+o2_pa|nomerkkpa" + rules: [ext_ka, o2_pa, subj_no, tam_ke] + - signature: "subj_no+mer+tam_ki+ext_ka+o2_pa|nomerkkpa" + rules: [ext_ka, o2_pa, subj_no, tam_ki] + - signature: "subj_no+mer+tam_ko+ext_ka+o2_pa|nomerkkpa" + rules: [ext_ka, o2_pa, subj_no, tam_ko] + - signature: "subj_no+mer+tam_ku+ext_ka+o2_pa|nomerkkpa" + rules: [ext_ka, o2_pa, subj_no, tam_ku] + - word: sowabkndmi + note: "Truncating-slot stress: 60 words over 5 synthetic templates whose required and optional suffix slots each delete the vowel before them; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_so+wab+tam_ka+ext_na+o2_di+o3_mi|sowabkndmi" + rules: [ext_na, o2_di, o3_mi, subj_so, tam_ka] + - signature: "subj_so+wab+tam_ke+ext_na+o2_di+o3_mi|sowabkndmi" + rules: [ext_na, o2_di, o3_mi, subj_so, tam_ke] + - signature: "subj_so+wab+tam_ki+ext_na+o2_di+o3_mi|sowabkndmi" + rules: [ext_na, o2_di, o3_mi, subj_so, tam_ki] + - signature: "subj_so+wab+tam_ko+ext_na+o2_di+o3_mi|sowabkndmi" + rules: [ext_na, o2_di, o3_mi, subj_so, tam_ko] + - signature: "subj_so+wab+tam_ku+ext_na+o2_di+o3_mi|sowabkndmi" + rules: [ext_na, o2_di, o3_mi, subj_so, tam_ku] + - word: mowenkmki + note: "Truncating-slot stress: 60 words over 5 synthetic templates whose required and optional suffix slots each delete the vowel before them; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_mo+wen+tam_ka+ext_mo+o3_ki|mowenkmki" + rules: [ext_mo, o3_ki, subj_mo, tam_ka] + - signature: "subj_mo+wen+tam_ke+ext_mo+o3_ki|mowenkmki" + rules: [ext_mo, o3_ki, subj_mo, tam_ke] + - signature: "subj_mo+wen+tam_ki+ext_mo+o3_ki|mowenkmki" + rules: [ext_mo, o3_ki, subj_mo, tam_ki] + - signature: "subj_mo+wen+tam_ko+ext_mo+o3_ki|mowenkmki" + rules: [ext_mo, o3_ki, subj_mo, tam_ko] + - signature: "subj_mo+wen+tam_ku+ext_mo+o3_ki|mowenkmki" + rules: [ext_mo, o3_ki, subj_mo, tam_ku] + - word: lomoskpra + note: "Truncating-slot stress: 60 words over 5 synthetic templates whose required and optional suffix slots each delete the vowel before them; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_lo+mos+tam_ka+ext_pu+o3_ra|lomoskpra" + rules: [ext_pu, o3_ra, subj_lo, tam_ka] + - signature: "subj_lo+mos+tam_ke+ext_pu+o3_ra|lomoskpra" + rules: [ext_pu, o3_ra, subj_lo, tam_ke] + - signature: "subj_lo+mos+tam_ki+ext_pu+o3_ra|lomoskpra" + rules: [ext_pu, o3_ra, subj_lo, tam_ki] + - signature: "subj_lo+mos+tam_ko+ext_pu+o3_ra|lomoskpra" + rules: [ext_pu, o3_ra, subj_lo, tam_ko] + - signature: "subj_lo+mos+tam_ku+ext_pu+o3_ra|lomoskpra" + rules: [ext_pu, o3_ra, subj_lo, tam_ku] + - word: dutemkmllu + note: "Truncating-slot stress: 60 words over 5 synthetic templates whose required and optional suffix slots each delete the vowel before them; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_du+tem+tam_ka+ext_mo+o2_la+o4_lu|dutemkmllu" + rules: [ext_mo, o2_la, o4_lu, subj_du, tam_ka] + - signature: "subj_du+tem+tam_ka+ext_mo+o3_lo+o4_lu|dutemkmllu" + rules: [ext_mo, o3_lo, o4_lu, subj_du, tam_ka] + - signature: "subj_du+tem+tam_ke+ext_mo+o2_la+o4_lu|dutemkmllu" + rules: [ext_mo, o2_la, o4_lu, subj_du, tam_ke] + - signature: "subj_du+tem+tam_ke+ext_mo+o3_lo+o4_lu|dutemkmllu" + rules: [ext_mo, o3_lo, o4_lu, subj_du, tam_ke] + - signature: "subj_du+tem+tam_ki+ext_mo+o2_la+o4_lu|dutemkmllu" + rules: [ext_mo, o2_la, o4_lu, subj_du, tam_ki] + - signature: "subj_du+tem+tam_ki+ext_mo+o3_lo+o4_lu|dutemkmllu" + rules: [ext_mo, o3_lo, o4_lu, subj_du, tam_ki] + - signature: "subj_du+tem+tam_ko+ext_mo+o2_la+o4_lu|dutemkmllu" + rules: [ext_mo, o2_la, o4_lu, subj_du, tam_ko] + - signature: "subj_du+tem+tam_ko+ext_mo+o3_lo+o4_lu|dutemkmllu" + rules: [ext_mo, o3_lo, o4_lu, subj_du, tam_ko] + - signature: "subj_du+tem+tam_ku+ext_mo+o2_la+o4_lu|dutemkmllu" + rules: [ext_mo, o2_la, o4_lu, subj_du, tam_ku] + - signature: "subj_du+tem+tam_ku+ext_mo+o3_lo+o4_lu|dutemkmllu" + rules: [ext_mo, o3_lo, o4_lu, subj_du, tam_ku] + - word: lotagkna + note: "Truncating-slot stress: 60 words over 5 synthetic templates whose required and optional suffix slots each delete the vowel before them; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_lo+tag+tam_ka+ext_na|lotagkna" + rules: [ext_na, subj_lo, tam_ka] + - signature: "subj_lo+tag+tam_ke+ext_na|lotagkna" + rules: [ext_na, subj_lo, tam_ke] + - signature: "subj_lo+tag+tam_ki+ext_na|lotagkna" + rules: [ext_na, subj_lo, tam_ki] + - signature: "subj_lo+tag+tam_ko+ext_na|lotagkna" + rules: [ext_na, subj_lo, tam_ko] + - signature: "subj_lo+tag+tam_ku+ext_na|lotagkna" + rules: [ext_na, subj_lo, tam_ku] + - word: mogumksta + note: "Truncating-slot stress: 60 words over 5 synthetic templates whose required and optional suffix slots each delete the vowel before them; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_mo+gum+tam_ka+ext_su+o3_ta|mogumksta" + rules: [ext_su, o3_ta, subj_mo, tam_ka] + - signature: "subj_mo+gum+tam_ke+ext_su+o3_ta|mogumksta" + rules: [ext_su, o3_ta, subj_mo, tam_ke] + - signature: "subj_mo+gum+tam_ki+ext_su+o3_ta|mogumksta" + rules: [ext_su, o3_ta, subj_mo, tam_ki] + - signature: "subj_mo+gum+tam_ko+ext_su+o3_ta|mogumksta" + rules: [ext_su, o3_ta, subj_mo, tam_ko] + - signature: "subj_mo+gum+tam_ku+ext_su+o3_ta|mogumksta" + rules: [ext_su, o3_ta, subj_mo, tam_ku] + - word: hokesksnpi + note: "Truncating-slot stress: 60 words over 5 synthetic templates whose required and optional suffix slots each delete the vowel before them; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_ho+kes+tam_ka+ext_su+o2_no+o4_pi|hokesksnpi" + rules: [ext_su, o2_no, o4_pi, subj_ho, tam_ka] + - signature: "subj_ho+kes+tam_ka+ext_su+o3_ne+o4_pi|hokesksnpi" + rules: [ext_su, o3_ne, o4_pi, subj_ho, tam_ka] + - signature: "subj_ho+kes+tam_ke+ext_su+o2_no+o4_pi|hokesksnpi" + rules: [ext_su, o2_no, o4_pi, subj_ho, tam_ke] + - signature: "subj_ho+kes+tam_ke+ext_su+o3_ne+o4_pi|hokesksnpi" + rules: [ext_su, o3_ne, o4_pi, subj_ho, tam_ke] + - signature: "subj_ho+kes+tam_ki+ext_su+o2_no+o4_pi|hokesksnpi" + rules: [ext_su, o2_no, o4_pi, subj_ho, tam_ki] + - signature: "subj_ho+kes+tam_ki+ext_su+o3_ne+o4_pi|hokesksnpi" + rules: [ext_su, o3_ne, o4_pi, subj_ho, tam_ki] + - signature: "subj_ho+kes+tam_ko+ext_su+o2_no+o4_pi|hokesksnpi" + rules: [ext_su, o2_no, o4_pi, subj_ho, tam_ko] + - signature: "subj_ho+kes+tam_ko+ext_su+o3_ne+o4_pi|hokesksnpi" + rules: [ext_su, o3_ne, o4_pi, subj_ho, tam_ko] + - signature: "subj_ho+kes+tam_ku+ext_su+o2_no+o4_pi|hokesksnpi" + rules: [ext_su, o2_no, o4_pi, subj_ho, tam_ku] + - signature: "subj_ho+kes+tam_ku+ext_su+o3_ne+o4_pi|hokesksnpi" + rules: [ext_su, o3_ne, o4_pi, subj_ho, tam_ku] + - word: pobalklbpo + note: "Truncating-slot stress: 60 words over 5 synthetic templates whose required and optional suffix slots each delete the vowel before them; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_po+bal+tam_ka+ext_le+o2_ba+o3_po|pobalklbpo" + rules: [ext_le, o2_ba, o3_po, subj_po, tam_ka] + - signature: "subj_po+bal+tam_ke+ext_le+o2_ba+o3_po|pobalklbpo" + rules: [ext_le, o2_ba, o3_po, subj_po, tam_ke] + - signature: "subj_po+bal+tam_ki+ext_le+o2_ba+o3_po|pobalklbpo" + rules: [ext_le, o2_ba, o3_po, subj_po, tam_ki] + - signature: "subj_po+bal+tam_ko+ext_le+o2_ba+o3_po|pobalklbpo" + rules: [ext_le, o2_ba, o3_po, subj_po, tam_ko] + - signature: "subj_po+bal+tam_ku+ext_le+o2_ba+o3_po|pobalklbpo" + rules: [ext_le, o2_ba, o3_po, subj_po, tam_ku] + - word: sosolkklo + note: "Truncating-slot stress: 60 words over 5 synthetic templates whose required and optional suffix slots each delete the vowel before them; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_so+sol+tam_ka+ext_ka+o3_lo|sosolkklo" + rules: [ext_ka, o3_lo, subj_so, tam_ka] + - signature: "subj_so+sol+tam_ke+ext_ka+o3_lo|sosolkklo" + rules: [ext_ka, o3_lo, subj_so, tam_ke] + - signature: "subj_so+sol+tam_ki+ext_ka+o3_lo|sosolkklo" + rules: [ext_ka, o3_lo, subj_so, tam_ki] + - signature: "subj_so+sol+tam_ko+ext_ka+o3_lo|sosolkklo" + rules: [ext_ka, o3_lo, subj_so, tam_ko] + - signature: "subj_so+sol+tam_ku+ext_ka+o3_lo|sosolkklo" + rules: [ext_ka, o3_lo, subj_so, tam_ku] + - word: totagktpa + note: "Truncating-slot stress: 60 words over 5 synthetic templates whose required and optional suffix slots each delete the vowel before them; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_to+tag+tam_ka+ext_ti+o2_pa|totagktpa" + rules: [ext_ti, o2_pa, subj_to, tam_ka] + - signature: "subj_to+tag+tam_ke+ext_ti+o2_pa|totagktpa" + rules: [ext_ti, o2_pa, subj_to, tam_ke] + - signature: "subj_to+tag+tam_ki+ext_ti+o2_pa|totagktpa" + rules: [ext_ti, o2_pa, subj_to, tam_ki] + - signature: "subj_to+tag+tam_ko+ext_ti+o2_pa|totagktpa" + rules: [ext_ti, o2_pa, subj_to, tam_ko] + - signature: "subj_to+tag+tam_ku+ext_ti+o2_pa|totagktpa" + rules: [ext_ti, o2_pa, subj_to, tam_ku] + - word: lobelktta + note: "Truncating-slot stress: 60 words over 5 synthetic templates whose required and optional suffix slots each delete the vowel before them; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_lo+bel+tam_ka+ext_ti+o3_ta|lobelktta" + rules: [ext_ti, o3_ta, subj_lo, tam_ka] + - signature: "subj_lo+bel+tam_ke+ext_ti+o3_ta|lobelktta" + rules: [ext_ti, o3_ta, subj_lo, tam_ke] + - signature: "subj_lo+bel+tam_ki+ext_ti+o3_ta|lobelktta" + rules: [ext_ti, o3_ta, subj_lo, tam_ki] + - signature: "subj_lo+bel+tam_ko+ext_ti+o3_ta|lobelktta" + rules: [ext_ti, o3_ta, subj_lo, tam_ko] + - signature: "subj_lo+bel+tam_ku+ext_ti+o3_ta|lobelktta" + rules: [ext_ti, o3_ta, subj_lo, tam_ku] + - word: sobelksu + note: "Truncating-slot stress: 60 words over 5 synthetic templates whose required and optional suffix slots each delete the vowel before them; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_so+bel+tam_ka+ext_su|sobelksu" + rules: [ext_su, subj_so, tam_ka] + - signature: "subj_so+bel+tam_ke+ext_su|sobelksu" + rules: [ext_su, subj_so, tam_ke] + - signature: "subj_so+bel+tam_ki+ext_su|sobelksu" + rules: [ext_su, subj_so, tam_ki] + - signature: "subj_so+bel+tam_ko+ext_su|sobelksu" + rules: [ext_su, subj_so, tam_ko] + - signature: "subj_so+bel+tam_ku+ext_su|sobelksu" + rules: [ext_su, subj_so, tam_ku] + - word: rotemkka + note: "Truncating-slot stress: 60 words over 5 synthetic templates whose required and optional suffix slots each delete the vowel before them; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_ro+tem+tam_ka+ext_ka|rotemkka" + rules: [ext_ka, subj_ro, tam_ka] + - signature: "subj_ro+tem+tam_ke+ext_ka|rotemkka" + rules: [ext_ka, subj_ro, tam_ke] + - signature: "subj_ro+tem+tam_ki+ext_ka|rotemkka" + rules: [ext_ka, subj_ro, tam_ki] + - signature: "subj_ro+tem+tam_ko+ext_ka|rotemkka" + rules: [ext_ka, subj_ro, tam_ko] + - signature: "subj_ro+tem+tam_ku+ext_ka|rotemkka" + rules: [ext_ka, subj_ro, tam_ku] + - word: dumerkrkni + note: "Truncating-slot stress: 60 words over 5 synthetic templates whose required and optional suffix slots each delete the vowel before them; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_du+mer+tam_ka+ext_ri+o2_ko+o4_ni|dumerkrkni" + rules: [ext_ri, o2_ko, o4_ni, subj_du, tam_ka] + - signature: "subj_du+mer+tam_ka+ext_ri+o3_ki+o4_ni|dumerkrkni" + rules: [ext_ri, o3_ki, o4_ni, subj_du, tam_ka] + - signature: "subj_du+mer+tam_ke+ext_ri+o2_ko+o4_ni|dumerkrkni" + rules: [ext_ri, o2_ko, o4_ni, subj_du, tam_ke] + - signature: "subj_du+mer+tam_ke+ext_ri+o3_ki+o4_ni|dumerkrkni" + rules: [ext_ri, o3_ki, o4_ni, subj_du, tam_ke] + - signature: "subj_du+mer+tam_ki+ext_ri+o2_ko+o4_ni|dumerkrkni" + rules: [ext_ri, o2_ko, o4_ni, subj_du, tam_ki] + - signature: "subj_du+mer+tam_ki+ext_ri+o3_ki+o4_ni|dumerkrkni" + rules: [ext_ri, o3_ki, o4_ni, subj_du, tam_ki] + - signature: "subj_du+mer+tam_ko+ext_ri+o2_ko+o4_ni|dumerkrkni" + rules: [ext_ri, o2_ko, o4_ni, subj_du, tam_ko] + - signature: "subj_du+mer+tam_ko+ext_ri+o3_ki+o4_ni|dumerkrkni" + rules: [ext_ri, o3_ki, o4_ni, subj_du, tam_ko] + - signature: "subj_du+mer+tam_ku+ext_ri+o2_ko+o4_ni|dumerkrkni" + rules: [ext_ri, o2_ko, o4_ni, subj_du, tam_ku] + - signature: "subj_du+mer+tam_ku+ext_ri+o3_ki+o4_ni|dumerkrkni" + rules: [ext_ri, o3_ki, o4_ni, subj_du, tam_ku] + - word: wotemknlra + note: "Truncating-slot stress: 60 words over 5 synthetic templates whose required and optional suffix slots each delete the vowel before them; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_wo+tem+tam_ka+ext_na+o2_la+o3_ra|wotemknlra" + rules: [ext_na, o2_la, o3_ra, subj_wo, tam_ka] + - signature: "subj_wo+tem+tam_ke+ext_na+o2_la+o3_ra|wotemknlra" + rules: [ext_na, o2_la, o3_ra, subj_wo, tam_ke] + - signature: "subj_wo+tem+tam_ki+ext_na+o2_la+o3_ra|wotemknlra" + rules: [ext_na, o2_la, o3_ra, subj_wo, tam_ki] + - signature: "subj_wo+tem+tam_ko+ext_na+o2_la+o3_ra|wotemknlra" + rules: [ext_na, o2_la, o3_ra, subj_wo, tam_ko] + - signature: "subj_wo+tem+tam_ku+ext_na+o2_la+o3_ra|wotemknlra" + rules: [ext_na, o2_la, o3_ra, subj_wo, tam_ku] + - word: lobalkkbma + note: "Truncating-slot stress: 60 words over 5 synthetic templates whose required and optional suffix slots each delete the vowel before them; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_lo+bal+tam_ka+ext_ka+o2_ba+o4_ma|lobalkkbma" + rules: [ext_ka, o2_ba, o4_ma, subj_lo, tam_ka] + - signature: "subj_lo+bal+tam_ka+ext_ka+o3_bu+o4_ma|lobalkkbma" + rules: [ext_ka, o3_bu, o4_ma, subj_lo, tam_ka] + - signature: "subj_lo+bal+tam_ke+ext_ka+o2_ba+o4_ma|lobalkkbma" + rules: [ext_ka, o2_ba, o4_ma, subj_lo, tam_ke] + - signature: "subj_lo+bal+tam_ke+ext_ka+o3_bu+o4_ma|lobalkkbma" + rules: [ext_ka, o3_bu, o4_ma, subj_lo, tam_ke] + - signature: "subj_lo+bal+tam_ki+ext_ka+o2_ba+o4_ma|lobalkkbma" + rules: [ext_ka, o2_ba, o4_ma, subj_lo, tam_ki] + - signature: "subj_lo+bal+tam_ki+ext_ka+o3_bu+o4_ma|lobalkkbma" + rules: [ext_ka, o3_bu, o4_ma, subj_lo, tam_ki] + - signature: "subj_lo+bal+tam_ko+ext_ka+o2_ba+o4_ma|lobalkkbma" + rules: [ext_ka, o2_ba, o4_ma, subj_lo, tam_ko] + - signature: "subj_lo+bal+tam_ko+ext_ka+o3_bu+o4_ma|lobalkkbma" + rules: [ext_ka, o3_bu, o4_ma, subj_lo, tam_ko] + - signature: "subj_lo+bal+tam_ku+ext_ka+o2_ba+o4_ma|lobalkkbma" + rules: [ext_ka, o2_ba, o4_ma, subj_lo, tam_ku] + - signature: "subj_lo+bal+tam_ku+ext_ka+o3_bu+o4_ma|lobalkkbma" + rules: [ext_ka, o3_bu, o4_ma, subj_lo, tam_ku] + - word: yotulkmkhi + note: "Truncating-slot stress: 60 words over 5 synthetic templates whose required and optional suffix slots each delete the vowel before them; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_yo+tul+tam_ka+ext_mo+o2_ko+o4_hi|yotulkmkhi" + rules: [ext_mo, o2_ko, o4_hi, subj_yo, tam_ka] + - signature: "subj_yo+tul+tam_ka+ext_mo+o3_ki+o4_hi|yotulkmkhi" + rules: [ext_mo, o3_ki, o4_hi, subj_yo, tam_ka] + - signature: "subj_yo+tul+tam_ke+ext_mo+o2_ko+o4_hi|yotulkmkhi" + rules: [ext_mo, o2_ko, o4_hi, subj_yo, tam_ke] + - signature: "subj_yo+tul+tam_ke+ext_mo+o3_ki+o4_hi|yotulkmkhi" + rules: [ext_mo, o3_ki, o4_hi, subj_yo, tam_ke] + - signature: "subj_yo+tul+tam_ki+ext_mo+o2_ko+o4_hi|yotulkmkhi" + rules: [ext_mo, o2_ko, o4_hi, subj_yo, tam_ki] + - signature: "subj_yo+tul+tam_ki+ext_mo+o3_ki+o4_hi|yotulkmkhi" + rules: [ext_mo, o3_ki, o4_hi, subj_yo, tam_ki] + - signature: "subj_yo+tul+tam_ko+ext_mo+o2_ko+o4_hi|yotulkmkhi" + rules: [ext_mo, o2_ko, o4_hi, subj_yo, tam_ko] + - signature: "subj_yo+tul+tam_ko+ext_mo+o3_ki+o4_hi|yotulkmkhi" + rules: [ext_mo, o3_ki, o4_hi, subj_yo, tam_ko] + - signature: "subj_yo+tul+tam_ku+ext_mo+o2_ko+o4_hi|yotulkmkhi" + rules: [ext_mo, o2_ko, o4_hi, subj_yo, tam_ku] + - signature: "subj_yo+tul+tam_ku+ext_mo+o3_ki+o4_hi|yotulkmkhi" + rules: [ext_mo, o3_ki, o4_hi, subj_yo, tam_ku] + - word: horotktta + note: "Truncating-slot stress: 60 words over 5 synthetic templates whose required and optional suffix slots each delete the vowel before them; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_ho+rot+tam_ka+ext_ti+o3_ta|horotktta" + rules: [ext_ti, o3_ta, subj_ho, tam_ka] + - signature: "subj_ho+rot+tam_ke+ext_ti+o3_ta|horotktta" + rules: [ext_ti, o3_ta, subj_ho, tam_ke] + - signature: "subj_ho+rot+tam_ki+ext_ti+o3_ta|horotktta" + rules: [ext_ti, o3_ta, subj_ho, tam_ki] + - signature: "subj_ho+rot+tam_ko+ext_ti+o3_ta|horotktta" + rules: [ext_ti, o3_ta, subj_ho, tam_ko] + - signature: "subj_ho+rot+tam_ku+ext_ti+o3_ta|horotktta" + rules: [ext_ti, o3_ta, subj_ho, tam_ku] + - word: lolubknlsa + note: "Truncating-slot stress: 60 words over 5 synthetic templates whose required and optional suffix slots each delete the vowel before them; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_lo+lub+tam_ka+ext_na+o2_la+o4_sa|lolubknlsa" + rules: [ext_na, o2_la, o4_sa, subj_lo, tam_ka] + - signature: "subj_lo+lub+tam_ka+ext_na+o3_lo+o4_sa|lolubknlsa" + rules: [ext_na, o3_lo, o4_sa, subj_lo, tam_ka] + - signature: "subj_lo+lub+tam_ke+ext_na+o2_la+o4_sa|lolubknlsa" + rules: [ext_na, o2_la, o4_sa, subj_lo, tam_ke] + - signature: "subj_lo+lub+tam_ke+ext_na+o3_lo+o4_sa|lolubknlsa" + rules: [ext_na, o3_lo, o4_sa, subj_lo, tam_ke] + - signature: "subj_lo+lub+tam_ki+ext_na+o2_la+o4_sa|lolubknlsa" + rules: [ext_na, o2_la, o4_sa, subj_lo, tam_ki] + - signature: "subj_lo+lub+tam_ki+ext_na+o3_lo+o4_sa|lolubknlsa" + rules: [ext_na, o3_lo, o4_sa, subj_lo, tam_ki] + - signature: "subj_lo+lub+tam_ko+ext_na+o2_la+o4_sa|lolubknlsa" + rules: [ext_na, o2_la, o4_sa, subj_lo, tam_ko] + - signature: "subj_lo+lub+tam_ko+ext_na+o3_lo+o4_sa|lolubknlsa" + rules: [ext_na, o3_lo, o4_sa, subj_lo, tam_ko] + - signature: "subj_lo+lub+tam_ku+ext_na+o2_la+o4_sa|lolubknlsa" + rules: [ext_na, o2_la, o4_sa, subj_lo, tam_ku] + - signature: "subj_lo+lub+tam_ku+ext_na+o3_lo+o4_sa|lolubknlsa" + rules: [ext_na, o3_lo, o4_sa, subj_lo, tam_ku] + - word: nogorkkmni + note: "Truncating-slot stress: 60 words over 5 synthetic templates whose required and optional suffix slots each delete the vowel before them; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_no+gor+tam_ka+ext_ka+o2_me+o4_ni|nogorkkmni" + rules: [ext_ka, o2_me, o4_ni, subj_no, tam_ka] + - signature: "subj_no+gor+tam_ka+ext_ka+o3_mi+o4_ni|nogorkkmni" + rules: [ext_ka, o3_mi, o4_ni, subj_no, tam_ka] + - signature: "subj_no+gor+tam_ke+ext_ka+o2_me+o4_ni|nogorkkmni" + rules: [ext_ka, o2_me, o4_ni, subj_no, tam_ke] + - signature: "subj_no+gor+tam_ke+ext_ka+o3_mi+o4_ni|nogorkkmni" + rules: [ext_ka, o3_mi, o4_ni, subj_no, tam_ke] + - signature: "subj_no+gor+tam_ki+ext_ka+o2_me+o4_ni|nogorkkmni" + rules: [ext_ka, o2_me, o4_ni, subj_no, tam_ki] + - signature: "subj_no+gor+tam_ki+ext_ka+o3_mi+o4_ni|nogorkkmni" + rules: [ext_ka, o3_mi, o4_ni, subj_no, tam_ki] + - signature: "subj_no+gor+tam_ko+ext_ka+o2_me+o4_ni|nogorkkmni" + rules: [ext_ka, o2_me, o4_ni, subj_no, tam_ko] + - signature: "subj_no+gor+tam_ko+ext_ka+o3_mi+o4_ni|nogorkkmni" + rules: [ext_ka, o3_mi, o4_ni, subj_no, tam_ko] + - signature: "subj_no+gor+tam_ku+ext_ka+o2_me+o4_ni|nogorkkmni" + rules: [ext_ka, o2_me, o4_ni, subj_no, tam_ku] + - signature: "subj_no+gor+tam_ku+ext_ka+o3_mi+o4_ni|nogorkkmni" + rules: [ext_ka, o3_mi, o4_ni, subj_no, tam_ku] + - word: dubalkshmlu + note: "Truncating-slot stress: 60 words over 5 synthetic templates whose required and optional suffix slots each delete the vowel before them; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_du+bal+tam_ka+ext_su+o2_he+o3_mi+o4_lu|dubalkshmlu" + rules: [ext_su, o2_he, o3_mi, o4_lu, subj_du, tam_ka] + - signature: "subj_du+bal+tam_ke+ext_su+o2_he+o3_mi+o4_lu|dubalkshmlu" + rules: [ext_su, o2_he, o3_mi, o4_lu, subj_du, tam_ke] + - signature: "subj_du+bal+tam_ki+ext_su+o2_he+o3_mi+o4_lu|dubalkshmlu" + rules: [ext_su, o2_he, o3_mi, o4_lu, subj_du, tam_ki] + - signature: "subj_du+bal+tam_ko+ext_su+o2_he+o3_mi+o4_lu|dubalkshmlu" + rules: [ext_su, o2_he, o3_mi, o4_lu, subj_du, tam_ko] + - signature: "subj_du+bal+tam_ku+ext_su+o2_he+o3_mi+o4_lu|dubalkshmlu" + rules: [ext_su, o2_he, o3_mi, o4_lu, subj_du, tam_ku] + - word: yomosknbtke + note: "Truncating-slot stress: 60 words over 5 synthetic templates whose required and optional suffix slots each delete the vowel before them; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_yo+mos+tam_ka+ext_na+o2_ba+o3_ta+o4_ke|yomosknbtke" + rules: [ext_na, o2_ba, o3_ta, o4_ke, subj_yo, tam_ka] + - signature: "subj_yo+mos+tam_ke+ext_na+o2_ba+o3_ta+o4_ke|yomosknbtke" + rules: [ext_na, o2_ba, o3_ta, o4_ke, subj_yo, tam_ke] + - signature: "subj_yo+mos+tam_ki+ext_na+o2_ba+o3_ta+o4_ke|yomosknbtke" + rules: [ext_na, o2_ba, o3_ta, o4_ke, subj_yo, tam_ki] + - signature: "subj_yo+mos+tam_ko+ext_na+o2_ba+o3_ta+o4_ke|yomosknbtke" + rules: [ext_na, o2_ba, o3_ta, o4_ke, subj_yo, tam_ko] + - signature: "subj_yo+mos+tam_ku+ext_na+o2_ba+o3_ta+o4_ke|yomosknbtke" + rules: [ext_na, o2_ba, o3_ta, o4_ke, subj_yo, tam_ku] + - word: mopatktnga + note: "Truncating-slot stress: 60 words over 5 synthetic templates whose required and optional suffix slots each delete the vowel before them; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_mo+pat+tam_ka+ext_ti+o2_no+o4_ga|mopatktnga" + rules: [ext_ti, o2_no, o4_ga, subj_mo, tam_ka] + - signature: "subj_mo+pat+tam_ka+ext_ti+o3_ne+o4_ga|mopatktnga" + rules: [ext_ti, o3_ne, o4_ga, subj_mo, tam_ka] + - signature: "subj_mo+pat+tam_ke+ext_ti+o2_no+o4_ga|mopatktnga" + rules: [ext_ti, o2_no, o4_ga, subj_mo, tam_ke] + - signature: "subj_mo+pat+tam_ke+ext_ti+o3_ne+o4_ga|mopatktnga" + rules: [ext_ti, o3_ne, o4_ga, subj_mo, tam_ke] + - signature: "subj_mo+pat+tam_ki+ext_ti+o2_no+o4_ga|mopatktnga" + rules: [ext_ti, o2_no, o4_ga, subj_mo, tam_ki] + - signature: "subj_mo+pat+tam_ki+ext_ti+o3_ne+o4_ga|mopatktnga" + rules: [ext_ti, o3_ne, o4_ga, subj_mo, tam_ki] + - signature: "subj_mo+pat+tam_ko+ext_ti+o2_no+o4_ga|mopatktnga" + rules: [ext_ti, o2_no, o4_ga, subj_mo, tam_ko] + - signature: "subj_mo+pat+tam_ko+ext_ti+o3_ne+o4_ga|mopatktnga" + rules: [ext_ti, o3_ne, o4_ga, subj_mo, tam_ko] + - signature: "subj_mo+pat+tam_ku+ext_ti+o2_no+o4_ga|mopatktnga" + rules: [ext_ti, o2_no, o4_ga, subj_mo, tam_ku] + - signature: "subj_mo+pat+tam_ku+ext_ti+o3_ne+o4_ga|mopatktnga" + rules: [ext_ti, o3_ne, o4_ga, subj_mo, tam_ku] + - word: hodipktpplu + note: "Truncating-slot stress: 60 words over 5 synthetic templates whose required and optional suffix slots each delete the vowel before them; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_ho+dip+tam_ka+ext_ti+o2_pa+o3_po+o4_lu|hodipktpplu" + rules: [ext_ti, o2_pa, o3_po, o4_lu, subj_ho, tam_ka] + - signature: "subj_ho+dip+tam_ke+ext_ti+o2_pa+o3_po+o4_lu|hodipktpplu" + rules: [ext_ti, o2_pa, o3_po, o4_lu, subj_ho, tam_ke] + - signature: "subj_ho+dip+tam_ki+ext_ti+o2_pa+o3_po+o4_lu|hodipktpplu" + rules: [ext_ti, o2_pa, o3_po, o4_lu, subj_ho, tam_ki] + - signature: "subj_ho+dip+tam_ko+ext_ti+o2_pa+o3_po+o4_lu|hodipktpplu" + rules: [ext_ti, o2_pa, o3_po, o4_lu, subj_ho, tam_ko] + - signature: "subj_ho+dip+tam_ku+ext_ti+o2_pa+o3_po+o4_lu|hodipktpplu" + rules: [ext_ti, o2_pa, o3_po, o4_lu, subj_ho, tam_ku] + - word: nuremknltke + note: "Truncating-slot stress: 60 words over 5 synthetic templates whose required and optional suffix slots each delete the vowel before them; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_nu+rem+tam_ka+ext_na+o2_la+o3_ta+o4_ke|nuremknltke" + rules: [ext_na, o2_la, o3_ta, o4_ke, subj_nu, tam_ka] + - signature: "subj_nu+rem+tam_ke+ext_na+o2_la+o3_ta+o4_ke|nuremknltke" + rules: [ext_na, o2_la, o3_ta, o4_ke, subj_nu, tam_ke] + - signature: "subj_nu+rem+tam_ki+ext_na+o2_la+o3_ta+o4_ke|nuremknltke" + rules: [ext_na, o2_la, o3_ta, o4_ke, subj_nu, tam_ki] + - signature: "subj_nu+rem+tam_ko+ext_na+o2_la+o3_ta+o4_ke|nuremknltke" + rules: [ext_na, o2_la, o3_ta, o4_ke, subj_nu, tam_ko] + - signature: "subj_nu+rem+tam_ku+ext_na+o2_la+o3_ta+o4_ke|nuremknltke" + rules: [ext_na, o2_la, o3_ta, o4_ke, subj_nu, tam_ku] + - word: gowabkmlke + note: "Truncating-slot stress: 60 words over 5 synthetic templates whose required and optional suffix slots each delete the vowel before them; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_go+wab+tam_ka+ext_mo+o2_la+o4_ke|gowabkmlke" + rules: [ext_mo, o2_la, o4_ke, subj_go, tam_ka] + - signature: "subj_go+wab+tam_ka+ext_mo+o3_lo+o4_ke|gowabkmlke" + rules: [ext_mo, o3_lo, o4_ke, subj_go, tam_ka] + - signature: "subj_go+wab+tam_ke+ext_mo+o2_la+o4_ke|gowabkmlke" + rules: [ext_mo, o2_la, o4_ke, subj_go, tam_ke] + - signature: "subj_go+wab+tam_ke+ext_mo+o3_lo+o4_ke|gowabkmlke" + rules: [ext_mo, o3_lo, o4_ke, subj_go, tam_ke] + - signature: "subj_go+wab+tam_ki+ext_mo+o2_la+o4_ke|gowabkmlke" + rules: [ext_mo, o2_la, o4_ke, subj_go, tam_ki] + - signature: "subj_go+wab+tam_ki+ext_mo+o3_lo+o4_ke|gowabkmlke" + rules: [ext_mo, o3_lo, o4_ke, subj_go, tam_ki] + - signature: "subj_go+wab+tam_ko+ext_mo+o2_la+o4_ke|gowabkmlke" + rules: [ext_mo, o2_la, o4_ke, subj_go, tam_ko] + - signature: "subj_go+wab+tam_ko+ext_mo+o3_lo+o4_ke|gowabkmlke" + rules: [ext_mo, o3_lo, o4_ke, subj_go, tam_ko] + - signature: "subj_go+wab+tam_ku+ext_mo+o2_la+o4_ke|gowabkmlke" + rules: [ext_mo, o2_la, o4_ke, subj_go, tam_ku] + - signature: "subj_go+wab+tam_ku+ext_mo+o3_lo+o4_ke|gowabkmlke" + rules: [ext_mo, o3_lo, o4_ke, subj_go, tam_ku] + - word: bunemksdpi + note: "Truncating-slot stress: 60 words over 5 synthetic templates whose required and optional suffix slots each delete the vowel before them; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_bu+nem+tam_ka+ext_su+o2_di+o4_pi|bunemksdpi" + rules: [ext_su, o2_di, o4_pi, subj_bu, tam_ka] + - signature: "subj_bu+nem+tam_ka+ext_su+o3_da+o4_pi|bunemksdpi" + rules: [ext_su, o3_da, o4_pi, subj_bu, tam_ka] + - signature: "subj_bu+nem+tam_ke+ext_su+o2_di+o4_pi|bunemksdpi" + rules: [ext_su, o2_di, o4_pi, subj_bu, tam_ke] + - signature: "subj_bu+nem+tam_ke+ext_su+o3_da+o4_pi|bunemksdpi" + rules: [ext_su, o3_da, o4_pi, subj_bu, tam_ke] + - signature: "subj_bu+nem+tam_ki+ext_su+o2_di+o4_pi|bunemksdpi" + rules: [ext_su, o2_di, o4_pi, subj_bu, tam_ki] + - signature: "subj_bu+nem+tam_ki+ext_su+o3_da+o4_pi|bunemksdpi" + rules: [ext_su, o3_da, o4_pi, subj_bu, tam_ki] + - signature: "subj_bu+nem+tam_ko+ext_su+o2_di+o4_pi|bunemksdpi" + rules: [ext_su, o2_di, o4_pi, subj_bu, tam_ko] + - signature: "subj_bu+nem+tam_ko+ext_su+o3_da+o4_pi|bunemksdpi" + rules: [ext_su, o3_da, o4_pi, subj_bu, tam_ko] + - signature: "subj_bu+nem+tam_ku+ext_su+o2_di+o4_pi|bunemksdpi" + rules: [ext_su, o2_di, o4_pi, subj_bu, tam_ku] + - signature: "subj_bu+nem+tam_ku+ext_su+o3_da+o4_pi|bunemksdpi" + rules: [ext_su, o3_da, o4_pi, subj_bu, tam_ku] + - word: honemkske + note: "Truncating-slot stress: 60 words over 5 synthetic templates whose required and optional suffix slots each delete the vowel before them; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_ho+nem+tam_ka+ext_su+o4_ke|honemkske" + rules: [ext_su, o4_ke, subj_ho, tam_ka] + - signature: "subj_ho+nem+tam_ke+ext_su+o4_ke|honemkske" + rules: [ext_su, o4_ke, subj_ho, tam_ke] + - signature: "subj_ho+nem+tam_ki+ext_su+o4_ke|honemkske" + rules: [ext_su, o4_ke, subj_ho, tam_ki] + - signature: "subj_ho+nem+tam_ko+ext_su+o4_ke|honemkske" + rules: [ext_su, o4_ke, subj_ho, tam_ko] + - signature: "subj_ho+nem+tam_ku+ext_su+o4_ke|honemkske" + rules: [ext_su, o4_ke, subj_ho, tam_ku] + - word: wobiskrhblu + note: "Truncating-slot stress: 60 words over 5 synthetic templates whose required and optional suffix slots each delete the vowel before them; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_wo+bis+tam_ka+ext_ri+o2_he+o3_bu+o4_lu|wobiskrhblu" + rules: [ext_ri, o2_he, o3_bu, o4_lu, subj_wo, tam_ka] + - signature: "subj_wo+bis+tam_ke+ext_ri+o2_he+o3_bu+o4_lu|wobiskrhblu" + rules: [ext_ri, o2_he, o3_bu, o4_lu, subj_wo, tam_ke] + - signature: "subj_wo+bis+tam_ki+ext_ri+o2_he+o3_bu+o4_lu|wobiskrhblu" + rules: [ext_ri, o2_he, o3_bu, o4_lu, subj_wo, tam_ki] + - signature: "subj_wo+bis+tam_ko+ext_ri+o2_he+o3_bu+o4_lu|wobiskrhblu" + rules: [ext_ri, o2_he, o3_bu, o4_lu, subj_wo, tam_ko] + - signature: "subj_wo+bis+tam_ku+ext_ri+o2_he+o3_bu+o4_lu|wobiskrhblu" + rules: [ext_ri, o2_he, o3_bu, o4_lu, subj_wo, tam_ku] + - word: nunemkpu + note: "Truncating-slot stress: 60 words over 5 synthetic templates whose required and optional suffix slots each delete the vowel before them; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_nu+nem+tam_ka+ext_pu|nunemkpu" + rules: [ext_pu, subj_nu, tam_ka] + - signature: "subj_nu+nem+tam_ke+ext_pu|nunemkpu" + rules: [ext_pu, subj_nu, tam_ke] + - signature: "subj_nu+nem+tam_ki+ext_pu|nunemkpu" + rules: [ext_pu, subj_nu, tam_ki] + - signature: "subj_nu+nem+tam_ko+ext_pu|nunemkpu" + rules: [ext_pu, subj_nu, tam_ko] + - signature: "subj_nu+nem+tam_ku+ext_pu|nunemkpu" + rules: [ext_pu, subj_nu, tam_ku] + - word: nuremkpsa + note: "Truncating-slot stress: 60 words over 5 synthetic templates whose required and optional suffix slots each delete the vowel before them; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_nu+rem+tam_ka+ext_pu+o4_sa|nuremkpsa" + rules: [ext_pu, o4_sa, subj_nu, tam_ka] + - signature: "subj_nu+rem+tam_ke+ext_pu+o4_sa|nuremkpsa" + rules: [ext_pu, o4_sa, subj_nu, tam_ke] + - signature: "subj_nu+rem+tam_ki+ext_pu+o4_sa|nuremkpsa" + rules: [ext_pu, o4_sa, subj_nu, tam_ki] + - signature: "subj_nu+rem+tam_ko+ext_pu+o4_sa|nuremkpsa" + rules: [ext_pu, o4_sa, subj_nu, tam_ko] + - signature: "subj_nu+rem+tam_ku+ext_pu+o4_sa|nuremkpsa" + rules: [ext_pu, o4_sa, subj_nu, tam_ku] + - word: gopirkmkksa + note: "Truncating-slot stress: 60 words over 5 synthetic templates whose required and optional suffix slots each delete the vowel before them; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_go+pir+tam_ka+ext_mo+o2_ko+o3_ki+o4_sa|gopirkmkksa" + rules: [ext_mo, o2_ko, o3_ki, o4_sa, subj_go, tam_ka] + - signature: "subj_go+pir+tam_ke+ext_mo+o2_ko+o3_ki+o4_sa|gopirkmkksa" + rules: [ext_mo, o2_ko, o3_ki, o4_sa, subj_go, tam_ke] + - signature: "subj_go+pir+tam_ki+ext_mo+o2_ko+o3_ki+o4_sa|gopirkmkksa" + rules: [ext_mo, o2_ko, o3_ki, o4_sa, subj_go, tam_ki] + - signature: "subj_go+pir+tam_ko+ext_mo+o2_ko+o3_ki+o4_sa|gopirkmkksa" + rules: [ext_mo, o2_ko, o3_ki, o4_sa, subj_go, tam_ko] + - signature: "subj_go+pir+tam_ku+ext_mo+o2_ko+o3_ki+o4_sa|gopirkmkksa" + rules: [ext_mo, o2_ko, o3_ki, o4_sa, subj_go, tam_ku] + - word: nomerkthksa + note: "Truncating-slot stress: 60 words over 5 synthetic templates whose required and optional suffix slots each delete the vowel before them; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_no+mer+tam_ka+ext_ti+o2_he+o3_ki+o4_sa|nomerkthksa" + rules: [ext_ti, o2_he, o3_ki, o4_sa, subj_no, tam_ka] + - signature: "subj_no+mer+tam_ke+ext_ti+o2_he+o3_ki+o4_sa|nomerkthksa" + rules: [ext_ti, o2_he, o3_ki, o4_sa, subj_no, tam_ke] + - signature: "subj_no+mer+tam_ki+ext_ti+o2_he+o3_ki+o4_sa|nomerkthksa" + rules: [ext_ti, o2_he, o3_ki, o4_sa, subj_no, tam_ki] + - signature: "subj_no+mer+tam_ko+ext_ti+o2_he+o3_ki+o4_sa|nomerkthksa" + rules: [ext_ti, o2_he, o3_ki, o4_sa, subj_no, tam_ko] + - signature: "subj_no+mer+tam_ku+ext_ti+o2_he+o3_ki+o4_sa|nomerkthksa" + rules: [ext_ti, o2_he, o3_ki, o4_sa, subj_no, tam_ku] + - word: sokesksnke + note: "Truncating-slot stress: 60 words over 5 synthetic templates whose required and optional suffix slots each delete the vowel before them; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_so+kes+tam_ka+ext_su+o2_no+o4_ke|sokesksnke" + rules: [ext_su, o2_no, o4_ke, subj_so, tam_ka] + - signature: "subj_so+kes+tam_ka+ext_su+o3_ne+o4_ke|sokesksnke" + rules: [ext_su, o3_ne, o4_ke, subj_so, tam_ka] + - signature: "subj_so+kes+tam_ke+ext_su+o2_no+o4_ke|sokesksnke" + rules: [ext_su, o2_no, o4_ke, subj_so, tam_ke] + - signature: "subj_so+kes+tam_ke+ext_su+o3_ne+o4_ke|sokesksnke" + rules: [ext_su, o3_ne, o4_ke, subj_so, tam_ke] + - signature: "subj_so+kes+tam_ki+ext_su+o2_no+o4_ke|sokesksnke" + rules: [ext_su, o2_no, o4_ke, subj_so, tam_ki] + - signature: "subj_so+kes+tam_ki+ext_su+o3_ne+o4_ke|sokesksnke" + rules: [ext_su, o3_ne, o4_ke, subj_so, tam_ki] + - signature: "subj_so+kes+tam_ko+ext_su+o2_no+o4_ke|sokesksnke" + rules: [ext_su, o2_no, o4_ke, subj_so, tam_ko] + - signature: "subj_so+kes+tam_ko+ext_su+o3_ne+o4_ke|sokesksnke" + rules: [ext_su, o3_ne, o4_ke, subj_so, tam_ko] + - signature: "subj_so+kes+tam_ku+ext_su+o2_no+o4_ke|sokesksnke" + rules: [ext_su, o2_no, o4_ke, subj_so, tam_ku] + - signature: "subj_so+kes+tam_ku+ext_su+o3_ne+o4_ke|sokesksnke" + rules: [ext_su, o3_ne, o4_ke, subj_so, tam_ku] + - word: kolenktpma + note: "Truncating-slot stress: 60 words over 5 synthetic templates whose required and optional suffix slots each delete the vowel before them; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_ko+len+tam_ka+ext_ti+o2_pa+o4_ma|kolenktpma" + rules: [ext_ti, o2_pa, o4_ma, subj_ko, tam_ka] + - signature: "subj_ko+len+tam_ka+ext_ti+o3_po+o4_ma|kolenktpma" + rules: [ext_ti, o3_po, o4_ma, subj_ko, tam_ka] + - signature: "subj_ko+len+tam_ke+ext_ti+o2_pa+o4_ma|kolenktpma" + rules: [ext_ti, o2_pa, o4_ma, subj_ko, tam_ke] + - signature: "subj_ko+len+tam_ke+ext_ti+o3_po+o4_ma|kolenktpma" + rules: [ext_ti, o3_po, o4_ma, subj_ko, tam_ke] + - signature: "subj_ko+len+tam_ki+ext_ti+o2_pa+o4_ma|kolenktpma" + rules: [ext_ti, o2_pa, o4_ma, subj_ko, tam_ki] + - signature: "subj_ko+len+tam_ki+ext_ti+o3_po+o4_ma|kolenktpma" + rules: [ext_ti, o3_po, o4_ma, subj_ko, tam_ki] + - signature: "subj_ko+len+tam_ko+ext_ti+o2_pa+o4_ma|kolenktpma" + rules: [ext_ti, o2_pa, o4_ma, subj_ko, tam_ko] + - signature: "subj_ko+len+tam_ko+ext_ti+o3_po+o4_ma|kolenktpma" + rules: [ext_ti, o3_po, o4_ma, subj_ko, tam_ko] + - signature: "subj_ko+len+tam_ku+ext_ti+o2_pa+o4_ma|kolenktpma" + rules: [ext_ti, o2_pa, o4_ma, subj_ko, tam_ku] + - signature: "subj_ko+len+tam_ku+ext_ti+o3_po+o4_ma|kolenktpma" + rules: [ext_ti, o3_po, o4_ma, subj_ko, tam_ku] + - word: bumerklbkbo + note: "Truncating-slot stress: 60 words over 5 synthetic templates whose required and optional suffix slots each delete the vowel before them; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_bu+mer+tam_ka+ext_le+o2_ba+o3_ki+o4_bo|bumerklbkbo" + rules: [ext_le, o2_ba, o3_ki, o4_bo, subj_bu, tam_ka] + - signature: "subj_bu+mer+tam_ke+ext_le+o2_ba+o3_ki+o4_bo|bumerklbkbo" + rules: [ext_le, o2_ba, o3_ki, o4_bo, subj_bu, tam_ke] + - signature: "subj_bu+mer+tam_ki+ext_le+o2_ba+o3_ki+o4_bo|bumerklbkbo" + rules: [ext_le, o2_ba, o3_ki, o4_bo, subj_bu, tam_ki] + - signature: "subj_bu+mer+tam_ko+ext_le+o2_ba+o3_ki+o4_bo|bumerklbkbo" + rules: [ext_le, o2_ba, o3_ki, o4_bo, subj_bu, tam_ko] + - signature: "subj_bu+mer+tam_ku+ext_le+o2_ba+o3_ki+o4_bo|bumerklbkbo" + rules: [ext_le, o2_ba, o3_ki, o4_bo, subj_bu, tam_ku] + - word: kotagktbu + note: "Truncating-slot stress: 60 words over 5 synthetic templates whose required and optional suffix slots each delete the vowel before them; expected parses are the master engine's, 12 words have no parse." + parses: + - signature: "subj_ko+tag+tam_ka+ext_ti+o3_bu|kotagktbu" + rules: [ext_ti, o3_bu, subj_ko, tam_ka] + - signature: "subj_ko+tag+tam_ke+ext_ti+o3_bu|kotagktbu" + rules: [ext_ti, o3_bu, subj_ko, tam_ke] + - signature: "subj_ko+tag+tam_ki+ext_ti+o3_bu|kotagktbu" + rules: [ext_ti, o3_bu, subj_ko, tam_ki] + - signature: "subj_ko+tag+tam_ko+ext_ti+o3_bu|kotagktbu" + rules: [ext_ti, o3_bu, subj_ko, tam_ko] + - signature: "subj_ko+tag+tam_ku+ext_ti+o3_bu|kotagktbu" + rules: [ext_ti, o3_bu, subj_ko, tam_ku] + - word: gobamkti + note: "Truncating-slot stress: 60 words over 5 synthetic templates whose required and optional suffix slots each delete the vowel before them; expected parses are the master engine's, 12 words have no parse." + expect_fail: true + - word: hitkkla + note: "Truncating-slot stress: 60 words over 5 synthetic templates whose required and optional suffix slots each delete the vowel before them; expected parses are the master engine's, 12 words have no parse." + expect_fail: true + - word: pohulkkni + note: "Truncating-slot stress: 60 words over 5 synthetic templates whose required and optional suffix slots each delete the vowel before them; expected parses are the master engine's, 12 words have no parse." + expect_fail: true + - word: korkkthi + note: "Truncating-slot stress: 60 words over 5 synthetic templates whose required and optional suffix slots each delete the vowel before them; expected parses are the master engine's, 12 words have no parse." + expect_fail: true + - word: bubamkmlo + note: "Truncating-slot stress: 60 words over 5 synthetic templates whose required and optional suffix slots each delete the vowel before them; expected parses are the master engine's, 12 words have no parse." + expect_fail: true + - word: merktltu + note: "Truncating-slot stress: 60 words over 5 synthetic templates whose required and optional suffix slots each delete the vowel before them; expected parses are the master engine's, 12 words have no parse." + expect_fail: true + - word: gobamknki + note: "Truncating-slot stress: 60 words over 5 synthetic templates whose required and optional suffix slots each delete the vowel before them; expected parses are the master engine's, 12 words have no parse." + expect_fail: true + - word: merkppo + note: "Truncating-slot stress: 60 words over 5 synthetic templates whose required and optional suffix slots each delete the vowel before them; expected parses are the master engine's, 12 words have no parse." + expect_fail: true + - word: kogipklnki + note: "Truncating-slot stress: 60 words over 5 synthetic templates whose required and optional suffix slots each delete the vowel before them; expected parses are the master engine's, 12 words have no parse." + expect_fail: true + - word: lenkpmmtu + note: "Truncating-slot stress: 60 words over 5 synthetic templates whose required and optional suffix slots each delete the vowel before them; expected parses are the master engine's, 12 words have no parse." + expect_fail: true + - word: logipkmstu + note: "Truncating-slot stress: 60 words over 5 synthetic templates whose required and optional suffix slots each delete the vowel before them; expected parses are the master engine's, 12 words have no parse." + expect_fail: true + - word: hanknplu + note: "Truncating-slot stress: 60 words over 5 synthetic templates whose required and optional suffix slots each delete the vowel before them; expected parses are the master engine's, 12 words have no parse." + expect_fail: true diff --git a/tests/SIL.Machine.Morphology.HermitCrab.Tests/StressFixtureParityTests.cs b/tests/SIL.Machine.Morphology.HermitCrab.Tests/StressFixtureParityTests.cs new file mode 100644 index 000000000..6fd5b399a --- /dev/null +++ b/tests/SIL.Machine.Morphology.HermitCrab.Tests/StressFixtureParityTests.cs @@ -0,0 +1,42 @@ +using NUnit.Framework; +using SIL.Machine.Morphology.HermitCrab.Conformance; + +namespace SIL.Machine.Morphology.HermitCrab; + +[TestFixture] +[Explicit("Timing and optimization fixtures; run only with --filter TestCategory=Stress")] +[Category("Stress")] +public sealed class StressFixtureParityTests +{ + private static string StressRoot() + { + string? directory = TestContext.CurrentContext.TestDirectory; + while (directory is not null) + { + if (File.Exists(Path.Combine(directory, "conformance", "constructs.txt"))) + return Path.Combine(directory, "conformance-stress"); + directory = Directory.GetParent(directory)?.FullName; + } + + Assert.Fail("Could not locate conformance-stress."); + return string.Empty; + } + + private static IEnumerable FixtureIds() => Fixture.DiscoverAll(StressRoot()).Select(fixture => fixture.Id); + + [TestCaseSource(nameof(FixtureIds))] + public void ParsesMatchTheMasterEngine(string fixtureId) + { + List fixtures = Fixture.DiscoverAll(StressRoot()).Where(f => f.Id == fixtureId).ToList(); + RunReport report = Runner.RunSelfCheck( + fixtures, + includePathological: true, + engineCapabilities: new SelfCheckEngine().Capabilities, + propose: false, + proposeOutput: TextWriter.Null + ); + string reasons = string.Join("; ", report.Results.Select(r => r.Reason)); + Assert.That(report.Failed, Is.EqualTo(0), reasons); + Assert.That(report.Passed, Is.EqualTo(1), reasons); + } +}