From 5ab44bc4422da836f8ace76fb44f1c3a8d32025d Mon Sep 17 00:00:00 2001 From: John Lambert Date: Wed, 28 Oct 2026 08:33:51 -0400 Subject: [PATCH 01/14] Add 16 analysis stress grammars as opt-in timing fixtures in conformance-stress, outside the conformance suite and CI Co-Authored-By: Claude Opus 5.5 --- conformance-stress/README.md | 42 ++ .../allomorph-list-density/grammar.xml | 115 ++++ .../allomorph-list-density/words.yaml | 373 ++++++++++++ .../athabaskan-prefix-complex/grammar.xml | 456 ++++++++++++++ .../athabaskan-prefix-complex/words.yaml | 554 ++++++++++++++++++ .../bantu-extension-chain/grammar.xml | 500 ++++++++++++++++ .../bantu-extension-chain/words.yaml | 404 +++++++++++++ .../bantu-extension-required-slot/grammar.xml | 455 ++++++++++++++ .../bantu-extension-required-slot/words.yaml | 462 +++++++++++++++ .../bantu-tam-templates-shared/grammar.xml | 236 ++++++++ .../bantu-tam-templates-shared/words.yaml | 284 +++++++++ .../bantu-tam-templates/grammar.xml | 321 ++++++++++ .../edge-cases/bantu-tam-templates/words.yaml | 284 +++++++++ .../grammar.xml | 313 ++++++++++ .../words.yaml | 444 ++++++++++++++ .../early-lexicon-agglutinative/grammar.xml | 95 +++ .../early-lexicon-agglutinative/words.yaml | 235 ++++++++ .../env-austronesian-nasal-prefix/grammar.xml | 68 +++ .../env-austronesian-nasal-prefix/words.yaml | 286 +++++++++ .../edge-cases/env-bantu-concord/grammar.xml | 71 +++ .../edge-cases/env-bantu-concord/words.yaml | 298 ++++++++++ .../env-zero-allomorphs/grammar.xml | 69 +++ .../edge-cases/env-zero-allomorphs/words.yaml | 317 ++++++++++ .../excluded-cooccurrence/grammar.xml | 368 ++++++++++++ .../excluded-cooccurrence/words.yaml | 419 +++++++++++++ .../edge-cases/mpr-bantu-concord/grammar.xml | 208 +++++++ .../edge-cases/mpr-bantu-concord/words.yaml | 138 +++++ .../mpr-inflection-classes/grammar.xml | 294 ++++++++++ .../mpr-inflection-classes/words.yaml | 306 ++++++++++ .../prefix-class-density/grammar.xml | 110 ++++ .../prefix-class-density/words.yaml | 394 +++++++++++++ .../required-template-slot/grammar.xml | 529 +++++++++++++++++ .../required-template-slot/words.yaml | 508 ++++++++++++++++ .../StressFixtureParityTests.cs | 42 ++ 34 files changed, 9998 insertions(+) create mode 100644 conformance-stress/README.md create mode 100644 conformance-stress/edge-cases/allomorph-list-density/grammar.xml create mode 100644 conformance-stress/edge-cases/allomorph-list-density/words.yaml create mode 100644 conformance-stress/edge-cases/athabaskan-prefix-complex/grammar.xml create mode 100644 conformance-stress/edge-cases/athabaskan-prefix-complex/words.yaml create mode 100644 conformance-stress/edge-cases/bantu-extension-chain/grammar.xml create mode 100644 conformance-stress/edge-cases/bantu-extension-chain/words.yaml create mode 100644 conformance-stress/edge-cases/bantu-extension-required-slot/grammar.xml create mode 100644 conformance-stress/edge-cases/bantu-extension-required-slot/words.yaml create mode 100644 conformance-stress/edge-cases/bantu-tam-templates-shared/grammar.xml create mode 100644 conformance-stress/edge-cases/bantu-tam-templates-shared/words.yaml create mode 100644 conformance-stress/edge-cases/bantu-tam-templates/grammar.xml create mode 100644 conformance-stress/edge-cases/bantu-tam-templates/words.yaml create mode 100644 conformance-stress/edge-cases/derivation-chain-homophone-roots/grammar.xml create mode 100644 conformance-stress/edge-cases/derivation-chain-homophone-roots/words.yaml create mode 100644 conformance-stress/edge-cases/early-lexicon-agglutinative/grammar.xml create mode 100644 conformance-stress/edge-cases/early-lexicon-agglutinative/words.yaml create mode 100644 conformance-stress/edge-cases/env-austronesian-nasal-prefix/grammar.xml create mode 100644 conformance-stress/edge-cases/env-austronesian-nasal-prefix/words.yaml create mode 100644 conformance-stress/edge-cases/env-bantu-concord/grammar.xml create mode 100644 conformance-stress/edge-cases/env-bantu-concord/words.yaml create mode 100644 conformance-stress/edge-cases/env-zero-allomorphs/grammar.xml create mode 100644 conformance-stress/edge-cases/env-zero-allomorphs/words.yaml create mode 100644 conformance-stress/edge-cases/excluded-cooccurrence/grammar.xml create mode 100644 conformance-stress/edge-cases/excluded-cooccurrence/words.yaml create mode 100644 conformance-stress/edge-cases/mpr-bantu-concord/grammar.xml create mode 100644 conformance-stress/edge-cases/mpr-bantu-concord/words.yaml create mode 100644 conformance-stress/edge-cases/mpr-inflection-classes/grammar.xml create mode 100644 conformance-stress/edge-cases/mpr-inflection-classes/words.yaml create mode 100644 conformance-stress/edge-cases/prefix-class-density/grammar.xml create mode 100644 conformance-stress/edge-cases/prefix-class-density/words.yaml create mode 100644 conformance-stress/edge-cases/required-template-slot/grammar.xml create mode 100644 conformance-stress/edge-cases/required-template-slot/words.yaml create mode 100644 tests/SIL.Machine.Morphology.HermitCrab.Tests/StressFixtureParityTests.cs diff --git a/conformance-stress/README.md b/conformance-stress/README.md new file mode 100644 index 000000000..88d5d13d3 --- /dev/null +++ b/conformance-stress/README.md @@ -0,0 +1,42 @@ +# 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 parses are what `master` produces (three identical runs were +required), so 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) | +| `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) | +| `mpr-bantu-concord` | noun-class concord through MPR features | #570 (MPR replay) | +| `mpr-inflection-classes` | inflection classes through MPR features | #570 (MPR replay) | +| `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) | + +`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..5a8663640 --- /dev/null +++ b/conformance-stress/edge-cases/athabaskan-prefix-complex/grammar.xml @@ -0,0 +1,456 @@ + + + + + StressAthabaskanPrefixComplex + + + v + + + Main + + a + i + k + n + t + + + + 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 + + + + + + + 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..fa7a876a3 --- /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, generated by gen_dense_exclusions.py. The expected parses +# come from that script's own enumeration of filler choices, not from the engine, and were confirmed +# against the engine with Morpher.PruneExcludedCoOccurrence off. +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+S6e|taaninik" + rules: [mrS6e, mrS3b, mrS2e, mrS1b] + exercises: ["Morpheme co-occurrence rules"] + - 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"] + - 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+S6e|nikaanat" + rules: [mrS6e, mrS3c, mrS2d, mrS1a] + exercises: ["Morpheme co-occurrence rules"] + - 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"] + - word: "naikat" + note: >- + 7 segmentations; 7 survive the exclude rules. + parses: + - signature: "S4c+S1b+R5+S6e|naikat" + rules: [mrS6e, mrS4c, mrS1b] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S4c+S1b+R5|naikat" + rules: [mrS4c, mrS1b] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S4c+S2a+R5+S6e|naikat" + rules: [mrS6e, mrS4c, mrS2a] + 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"] + - 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+S6e|kaitik" + rules: [mrS6e, mrS2d, mrS1b] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S2d+S1b+R10|kaitik" + rules: [mrS2d, mrS1b] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S4b+S1b+R10+S6e|kaitik" + rules: [mrS6e, mrS4b, mrS1b] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S4b+S1b+R10|kaitik" + rules: [mrS4b, mrS1b] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S4b+S2a+R10+S6e|kaitik" + rules: [mrS6e, mrS4b, mrS2a] + 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"] + - 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+S6e|titatik" + rules: [mrS6e, mrS2c, mrS1c] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S2c+S1c+R10|titatik" + rules: [mrS2c, mrS1c] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S4e+S1c+R10+S6e|titatik" + rules: [mrS6e, mrS4e, 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"] + - word: "kiatikitik" + note: >- + 10 segmentations; 4 survive the exclude rules. + parses: + - signature: "S3e+S2c+S1d+R10+S6e|kiatikitik" + rules: [mrS6e, mrS3e, mrS2c, mrS1d] + exercises: ["Morpheme co-occurrence rules"] + - 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"] + - 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+S6e|iatatik" + rules: [mrS6e, mrS4a, mrS2b, mrS1c] + exercises: ["Morpheme co-occurrence rules"] + - 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"] + - word: "nikataant" + note: >- + 8 segmentations; 4 survive the exclude rules. + parses: + - signature: "S3c+S2d+S1c+R7+S6e|nikataant" + rules: [mrS6e, mrS3c, mrS2d, mrS1c] + exercises: ["Morpheme co-occurrence rules"] + - 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"] + - 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+S6e|katiakin" + rules: [mrS6e, mrS4b, mrS2c, mrS1a] + exercises: ["Morpheme co-occurrence rules"] + - 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"] + - 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+S6e|kakakinik" + rules: [mrS6e, mrS4b, mrS2d, mrS1d] + exercises: ["Morpheme co-occurrence rules"] + - 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"] + - 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+S6e|katiinat" + rules: [mrS6e, mrS4b, mrS2c, mrS1b] + exercises: ["Morpheme co-occurrence rules"] + - 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"] + - 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+S6e|akatatak" + rules: [mrS6e, mrS3a, mrS2d, mrS1c] + exercises: ["Morpheme co-occurrence rules"] + - 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"] + - word: "katitaink" + note: >- + 7 segmentations; 4 survive the exclude rules. + parses: + - signature: "S4b+S2c+S1c+R4+S6e|katitaink" + rules: [mrS6e, mrS4b, mrS2c, mrS1c] + exercises: ["Morpheme co-occurrence rules"] + - 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"] + - word: "tikakinat" + note: >- + 6 segmentations; 4 survive the exclude rules. + parses: + - signature: "S4e+S2d+S1d+R3+S6e|tikakinat" + rules: [mrS6e, mrS4e, mrS2d, mrS1d] + exercises: ["Morpheme co-occurrence rules"] + - 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"] + - 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+S6e|taaikat" + rules: [mrS6e, mrS3b, mrS2b, mrS1b] + exercises: ["Morpheme co-occurrence rules"] + - 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"] + - word: "kiatitin" + note: >- + 8 segmentations; 5 survive the exclude rules. + parses: + - signature: "S3e+S2c+R6+S6e|kiatitin" + rules: [mrS6e, mrS3e, mrS2c] + exercises: ["Morpheme co-occurrence rules"] + - 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"] + - word: "tainanik" + note: >- + 4 segmentations; 4 survive the exclude rules. + parses: + - signature: "S3b+S2a+S1e+R8+S6e|tainanik" + rules: [mrS6e, mrS3b, mrS2a, mrS1e] + exercises: ["Morpheme co-occurrence rules"] + - 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"] + - 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+S6e|tatiatak" + rules: [mrS6e, mrS3b, mrS2c, mrS1a] + exercises: ["Morpheme co-occurrence rules"] + - 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"] + - 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+S6e|nikatatin" + rules: [mrS6e, mrS3c, mrS2d, mrS1c] + exercises: ["Morpheme co-occurrence rules"] + - 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"] + - 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+S6e|kaitakan" + rules: [mrS6e, mrS4b, mrS2a, mrS1c] + exercises: ["Morpheme co-occurrence rules"] + - 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"] 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..070144d8a --- /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..144abbe5a --- /dev/null +++ b/conformance-stress/edge-cases/bantu-extension-chain/words.yaml @@ -0,0 +1,404 @@ +# kind: stress (timing and optimization parity fixture, not conformance; see conformance-stress/README.md) +# StressBantuExtensionChain: dense-exclusion stress fixture, generated by gen_dense_exclusions.py. The expected parses +# come from that script's own enumeration of filler choices, not from the engine, and were confirmed +# against the engine with Morpher.PruneExcludedCoOccurrence off. +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..4554db1f2 --- /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, enumerated by an independent script over +# the rule tables, then confirmed against the engine. 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-templates-shared/grammar.xml b/conformance-stress/edge-cases/bantu-tam-templates-shared/grammar.xml new file mode 100644 index 000000000..8d480e395 --- /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..42ac12f26 --- /dev/null +++ b/conformance-stress/edge-cases/bantu-tam-templates-shared/words.yaml @@ -0,0 +1,284 @@ +# kind: stress (timing and optimization parity fixture, not conformance; see conformance-stress/README.md) +language: StressBantuTamTemplatesShared +sources: [] +requires: [] +fieldworks_producible: false +fieldworks_producible_notes: "research stress fixture; not authored through FieldWorks" +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..54b102162 --- /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..4f54fd557 --- /dev/null +++ b/conformance-stress/edge-cases/bantu-tam-templates/words.yaml @@ -0,0 +1,284 @@ +# kind: stress (timing and optimization parity fixture, not conformance; see conformance-stress/README.md) +language: StressBantuTamTemplates +sources: [] +requires: [] +fieldworks_producible: false +fieldworks_producible_notes: "research stress fixture; not authored through FieldWorks" +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..c441a44f6 --- /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, enumerated by an independent script over +# the rule tables, then confirmed against the engine. 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..948ec404e --- /dev/null +++ b/conformance-stress/edge-cases/early-lexicon-agglutinative/words.yaml @@ -0,0 +1,235 @@ +# kind: stress (timing and optimization parity fixture, not conformance; see conformance-stress/README.md) +language: StressEarlyLexiconAgglutinative +sources: [] +requires: [phonology] +fieldworks_producible: false +fieldworks_producible_notes: "research stress fixture; not authored through FieldWorks" +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..f1ce9cd4c --- /dev/null +++ b/conformance-stress/edge-cases/env-austronesian-nasal-prefix/grammar.xml @@ -0,0 +1,68 @@ + + + + + + AustronesianNasalPrefixes + x + idaeiupbtdkgmns + + Main + + a + e + i + u + p + b + t + d + k + g + m + n + s + + + + Any + Lab + Cor + Vel + V + Nas + + + + Main + + activememmenmekmemeACT + causativepempenpekpeCAUS + locativeikanLOC + + + 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..f0bc3da74 --- /dev/null +++ b/conformance-stress/edge-cases/env-austronesian-nasal-prefix/words.yaml @@ -0,0 +1,286 @@ +# 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: [] +# Stress fixture for the required-environment prefilter. Expected parses follow the allomorph and disjunction +# rules by hand; the zero allomorphs' environments are read at an engine-defined position, so words with a +# zero-allomorph parse take the engine's verdict with the prefilter switched off. +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+LOC|umi" + gloss: parse + rules: [mrLOC] + - 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+LOC+CAUS+R17|mempendasi" + gloss: parse + rules: [mrACT, mrCAUS, mrLOC] + - 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..a86c4c28b --- /dev/null +++ b/conformance-stress/edge-cases/env-bantu-concord/grammar.xml @@ -0,0 +1,71 @@ + + + + + + BantuConcordAllomorphy + x + idaeioupbtdkgmns + + Main + + a + e + i + o + u + p + b + t + d + k + g + m + n + s + + + + Any + Lab + Cor + Vel + Nas + V + VA + VB + + + + Main + + concordmnkuaCONC + negationttiNEG + tenseninasiTAM + + + 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..439716b2c --- /dev/null +++ b/conformance-stress/edge-cases/env-bantu-concord/words.yaml @@ -0,0 +1,298 @@ +# 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: [] +# Stress fixture for the required-environment prefilter. Expected parses follow the allomorph and disjunction +# rules by hand; the zero allomorphs' environments are read at an engine-defined position, so words with a +# zero-allomorph parse take the engine's verdict with the prefilter switched off. +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: "R10|mama" + gloss: parse + rules: [] + - signature: "R10+TAM|mama" + gloss: parse + rules: [mrTAM] + - 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: "R11|nina" + gloss: parse + rules: [] + - signature: "R11+TAM|nina" + gloss: parse + rules: [mrTAM] + - 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: "R12|mumi" + gloss: parse + rules: [] + - signature: "R12+TAM|mumi" + gloss: parse + rules: [mrTAM] + - 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] + - signature: "CONC+TAM+NEG+R08|ntigugu" + gloss: parse + rules: [mrCONC, mrNEG, mrTAM] + - 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: "CONC+NEG+R12+TAM|timumina" + gloss: parse + rules: [mrNEG, mrCONC, mrTAM] + - signature: "CONC+NEG+R12+TAM|timumina" + gloss: parse + rules: [mrTAM, mrNEG, mrCONC] + - 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] + - signature: "CONC+TAM+NEG+R02|ntipubi" + gloss: parse + rules: [mrCONC, mrNEG, mrTAM] + - 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..d7b0d6f70 --- /dev/null +++ b/conformance-stress/edge-cases/env-zero-allomorphs/grammar.xml @@ -0,0 +1,69 @@ + + + + + + StressEnvZeroAllomorphs + x + + idaiupbtkdgsmn + + + Main + + a + i + u + p + b + t + k + d + g + s + m + n + + + + Any + Nas + Sib + + + + Main + +classPrefixkukaP1 +personPrefixtiP2 +suffixpapiS1 + + + 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..afcc56fc2 --- /dev/null +++ b/conformance-stress/edge-cases/env-zero-allomorphs/words.yaml @@ -0,0 +1,317 @@ +# 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: [] +# 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; no word here validates them. +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: [] + - signature: "R16+P1|kanu" + gloss: R16 + rules: [mrP1] + - signature: "R16+S1|kanu" + gloss: R16 + rules: [mrS1] + - word: tabun + note: >- + Bare root tabun; every affix is optional, and no zero allomorph's rare-class context is satisfied. + parses: + - signature: "R17|tabun" + gloss: R17 + rules: [] + - word: gisam + note: >- + Bare root gisam; every affix is optional, and no zero allomorph's rare-class context is satisfied. + parses: + - 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; 1 rule orders are possible because the unordered suffix may be applied between or after the prefixes. + parses: + - 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..355bb69c4 --- /dev/null +++ b/conformance-stress/edge-cases/excluded-cooccurrence/grammar.xml @@ -0,0 +1,368 @@ + + + + + StressExcludedCoOccurrence + + + v + + + Main + + p + t + k + m + n + s + a + i + u + + + + 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 + + + + + + + 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..68c1eb99e --- /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. Generated by gen_excluded_cooccurrence.py; the +# expected parses come from that script's independent enumeration of slot choices, and were confirmed +# against the engine with Morpher.PruneExcludedCoOccurrence off. +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+S6d|tikunup" + rules: [mrS6d, mrS3d, mrS1d] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S3d+S1d+R3|tikunup" + rules: [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+S6d|kanatakupum" + rules: [mrS6d, mrS5b, mrS3b, mrS2b, mrS1d] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S5b+S3b+S2b+S1d+R5|kanatakupum" + rules: [mrS5b, mrS3b, mrS2b, mrS1d] + exercises: ["Morpheme co-occurrence rules"] + - word: "nuumas" + note: >- + 2 segmentations; 2 survive the exclude rules. + parses: + - signature: "S5c+S3a+R10+S6d|nuumas" + rules: [mrS6d, mrS5c, mrS3a] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S5c+S3a+R10|nuumas" + rules: [mrS5c, mrS3a] + exercises: ["Morpheme co-occurrence rules"] + - word: "tasikasunup" + note: >- + 2 segmentations; 2 survive the exclude rules. + parses: + - signature: "S5d+S4d+S3c+S2d+R3+S6d|tasikasunup" + rules: [mrS6d, mrS5d, mrS4d, mrS3c, mrS2d] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S5d+S4d+S3c+S2d+R3|tasikasunup" + rules: [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+S6d|sikatapat" + rules: [mrS6d, mrS4d, mrS3c, mrS2b] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S4d+S3c+S2b+R12|sikatapat" + rules: [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+S6d|iusunisik" + rules: [mrS6d, mrS5a, mrS3a, mrS2d, mrS1c] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S5a+S3a+S2d+S1c+R6|iusunisik" + rules: [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+S6d|nutimanup" + rules: [mrS6d, mrS5c, mrS3d, mrS1b] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S5c+S3d+S1b+R3|nutimanup" + rules: [mrS5c, mrS3d, mrS1b] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S5c+S3d+S2c+R3+S6d|nutimanup" + rules: [mrS6d, mrS5c, mrS3d, mrS2c] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S5c+S3d+S2c+R3|nutimanup" + rules: [mrS5c, mrS3d, mrS2c] + exercises: ["Morpheme co-occurrence rules"] + - word: "nuamakat" + note: >- + 4 segmentations; 4 survive the exclude rules. + parses: + - signature: "S5c+S4a+S1b+R1+S6d|nuamakat" + rules: [mrS6d, mrS5c, mrS4a, mrS1b] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S5c+S4a+S1b+R1|nuamakat" + rules: [mrS5c, mrS4a, mrS1b] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S5c+S4a+S2c+R1+S6d|nuamakat" + rules: [mrS6d, mrS5c, mrS4a, mrS2c] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S5c+S4a+S2c+R1|nuamakat" + rules: [mrS5c, mrS4a, mrS2c] + exercises: ["Morpheme co-occurrence rules"] + - word: "taumatas" + note: >- + 4 segmentations; 2 survive the exclude rules. + parses: + - signature: "S5d+S3a+S2c+R4+S6d|taumatas" + rules: [mrS6d, mrS5d, mrS3a, mrS2c] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S5d+S3a+S2c+R4|taumatas" + rules: [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+S6d|tapanakunit" + rules: [mrS6d, mrS5d, mrS4b, mrS3b, mrS1d] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S5d+S4b+S3b+S1d+R8|tapanakunit" + rules: [mrS5d, mrS4b, mrS3b, mrS1d] + exercises: ["Morpheme co-occurrence rules"] + - word: "pasusin" + note: >- + 2 segmentations; 2 survive the exclude rules. + parses: + - signature: "S4b+S2d+R11+S6d|pasusin" + rules: [mrS6d, mrS4b, mrS2d] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S4b+S2d+R11|pasusin" + rules: [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+S6d|tatapum" + rules: [mrS6d, mrS5d, mrS2b] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S5d+S2b+R5|tatapum" + rules: [mrS5d, mrS2b] + exercises: ["Morpheme co-occurrence rules"] + - word: "unimas" + note: >- + 3 segmentations; 3 survive the exclude rules. + parses: + - signature: "S3a+S1c+R10+S6d|unimas" + rules: [mrS6d, mrS3a, mrS1c] + exercises: ["Morpheme co-occurrence rules"] + - 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"] + - word: "akutas" + note: >- + 2 segmentations; 2 survive the exclude rules. + parses: + - signature: "S4a+S1d+R4+S6d|akutas" + rules: [mrS6d, mrS4a, mrS1d] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S4a+S1d+R4|akutas" + rules: [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+S6d|patisukukat" + rules: [mrS6d, mrS4b, mrS3d, mrS2d, mrS1d] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S4b+S3d+S2d+S1d+R1|patisukukat" + rules: [mrS4b, mrS3d, mrS2d, mrS1d] + exercises: ["Morpheme co-occurrence rules"] + - word: "inikam" + note: >- + 4 segmentations; 4 survive the exclude rules. + parses: + - signature: "S2a+S1c+R7+S6d|inikam" + rules: [mrS6d, mrS2a, mrS1c] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S2a+S1c+R7|inikam" + rules: [mrS2a, mrS1c] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S5a+S1c+R7+S6d|inikam" + rules: [mrS6d, mrS5a, mrS1c] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S5a+S1c+R7|inikam" + rules: [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+S6d|nuananimis" + rules: [mrS6d, mrS5c, mrS4a, mrS3b, mrS1c] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S5c+S4a+S3b+S1c+R2|nuananimis" + rules: [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+S6d|nupausunit" + rules: [mrS6d, mrS5c, mrS4b, mrS3a, mrS2d] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S5c+S4b+S3a+S2d+R8|nupausunit" + rules: [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+S6d|katanipat" + rules: [mrS6d, mrS3c, mrS2b, mrS1c] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S3c+S2b+S1c+R12|katanipat" + rules: [mrS3c, mrS2b, mrS1c] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S5b+S2b+S1c+R12+S6d|katanipat" + rules: [mrS6d, mrS5b, mrS2b, mrS1c] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S5b+S2b+S1c+R12|katanipat" + rules: [mrS5b, mrS2b, mrS1c] + exercises: ["Morpheme co-occurrence rules"] + - word: "mikatup" + note: >- + 2 segmentations; 2 survive the exclude rules. + parses: + - signature: "S4c+S3c+R9+S6d|mikatup" + rules: [mrS6d, mrS4c, mrS3c] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S4c+S3c+R9|mikatup" + rules: [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+S6d|kasitipum" + rules: [mrS6d, mrS5b, mrS4d, mrS3d] + exercises: ["Morpheme co-occurrence rules"] + - signature: "S5b+S4d+S3d+R5|kasitipum" + rules: [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/mpr-bantu-concord/grammar.xml b/conformance-stress/edge-cases/mpr-bantu-concord/grammar.xml new file mode 100644 index 000000000..94d45745f --- /dev/null +++ b/conformance-stress/edge-cases/mpr-bantu-concord/grammar.xml @@ -0,0 +1,208 @@ + + + + + StressMprBantuConcord + v + + Class1 + Class2 + Class3 + Class4 + Class5 + Class6 + NounClass + + + Main + + a + e + i + o + u + l + m + n + r + s + t + k + p + d + + + Any + + + S + + + sm + + + + a + + + + u + + + + i + + + + a + + + + u + + + + i + + + SM + + + om + + + + u + + + + a + + + + i + + + + i + + + + a + + + + u + + + + ka + + + OM + + + fv + + + + a + + + + i + + + + a + + + + i + + + + a + + + + i + + + FV + + + + + verbTemplate + smSlot + omSlot + fvSlot + + + + + tum + V_tum + tum + + + lim + V_lim + lim + + + tuma + V_tuma + tuma + + + lima + V_lima + lima + + + kal + V_kal + kal + + + pak + V_pak + pak + + + kala + V_kala + kala + + + paka + V_paka + paka + + + dum + V_dum + dum + + + mal + V_mal + mal + + + duma + V_duma + duma + + + mala + V_mala + mala + + + + + + diff --git a/conformance-stress/edge-cases/mpr-bantu-concord/words.yaml b/conformance-stress/edge-cases/mpr-bantu-concord/words.yaml new file mode 100644 index 000000000..d75db7c58 --- /dev/null +++ b/conformance-stress/edge-cases/mpr-bantu-concord/words.yaml @@ -0,0 +1,138 @@ +# kind: stress (timing and optimization parity fixture, not conformance; see conformance-stress/README.md) +# Stress fixture for trail MPR replay, Bantu style: six noun-class features in one MPR group gate three +# agreement slots (subject concord, object concord, final vowel), each with one allomorph per class and +# homophonous shapes across classes. The object concord has one allomorph gated by excludedMPRFeatures. +# Expected parses were derived by hand from the concord tables in grammar.xml and confirmed against the engine. +language: StressMprBantuConcord +inspired_by: ["Bantu noun-class agreement (Swahili, Shona style); synthetic, not modeling a real language"] +sources: + - "research stress fixture; no external source" +requires: [] +fieldworks_producible: false +fieldworks_producible_notes: "research stress fixture; not authored through FieldWorks" +budget_ms: 15000 +words: + - word: atuma + note: "atuma" + parses: + - signature: "SM+V_tum+FV|atuma" + rules: [mrFv, mrSm] + - word: autuma + note: "autuma" + parses: + - signature: "SM+OM+V_tum+FV|autuma" + rules: [mrFv, mrOm, mrSm] + - word: alima + note: "alima" + parses: + - signature: "SM+V_lim+FV|alima" + rules: [mrFv, mrSm] + - word: aulima + note: "aulima" + parses: + - signature: "SM+OM+V_lim+FV|aulima" + rules: [mrFv, mrOm, mrSm] + - word: utumai + note: "utumai" + parses: + - signature: "SM+V_tuma+FV|utumai" + rules: [mrFv, mrSm] + - word: uatumai + note: "uatumai" + parses: + - signature: "SM+OM+V_tuma+FV|uatumai" + rules: [mrFv, mrOm, mrSm] + - word: ulimai + note: "ulimai" + parses: + - signature: "SM+V_lima+FV|ulimai" + rules: [mrFv, mrSm] + - word: ualimai + note: "ualimai" + parses: + - signature: "SM+OM+V_lima+FV|ualimai" + rules: [mrFv, mrOm, mrSm] + - word: ikala + note: "ikala" + parses: + - signature: "SM+V_kal+FV|ikala" + rules: [mrFv, mrSm] + - word: iikala + note: "iikala" + parses: + - signature: "OM+SM+V_kal+FV|iikala" + rules: [mrFv, mrOm, mrSm] + - signature: "SM+OM+V_kal+FV|iikala" + rules: [mrFv, mrOm, mrSm] + - word: ipaka + note: "ipaka" + parses: + - signature: "SM+V_pak+FV|ipaka" + rules: [mrFv, mrSm] + - word: iipaka + note: "iipaka" + parses: + - signature: "OM+SM+V_pak+FV|iipaka" + rules: [mrFv, mrOm, mrSm] + - signature: "SM+OM+V_pak+FV|iipaka" + rules: [mrFv, mrOm, mrSm] + - word: akalai + note: "akalai" + parses: + - signature: "SM+V_kala+FV|akalai" + rules: [mrFv, mrSm] + - word: aikalai + note: "aikalai" + parses: + - signature: "SM+OM+V_kala+FV|aikalai" + rules: [mrFv, mrOm, mrSm] + - word: apakai + note: "apakai" + parses: + - signature: "SM+V_paka+FV|apakai" + rules: [mrFv, mrSm] + - word: aipakai + note: "aipakai" + parses: + - signature: "SM+OM+V_paka+FV|aipakai" + rules: [mrFv, mrOm, mrSm] + - word: uduma + note: "uduma" + parses: + - signature: "SM+V_dum+FV|uduma" + rules: [mrFv, mrSm] + - word: uaduma + note: "uaduma" + parses: + - signature: "SM+OM+V_dum+FV|uaduma" + rules: [mrFv, mrOm, mrSm] + - word: umala + note: "umala" + parses: + - signature: "SM+V_mal+FV|umala" + rules: [mrFv, mrSm] + - word: uamala + note: "uamala" + parses: + - signature: "SM+OM+V_mal+FV|uamala" + rules: [mrFv, mrOm, mrSm] + - word: idumai + note: "idumai" + parses: + - signature: "SM+V_duma+FV|idumai" + rules: [mrFv, mrSm] + - word: iudumai + note: "iudumai" + parses: + - signature: "SM+OM+V_duma+FV|iudumai" + rules: [mrFv, mrOm, mrSm] + - word: imalai + note: "imalai" + parses: + - signature: "SM+V_mala+FV|imalai" + rules: [mrFv, mrSm] + - word: iumalai + note: "iumalai" + parses: + - signature: "SM+OM+V_mala+FV|iumalai" + rules: [mrFv, mrOm, mrSm] diff --git a/conformance-stress/edge-cases/mpr-inflection-classes/grammar.xml b/conformance-stress/edge-cases/mpr-inflection-classes/grammar.xml new file mode 100644 index 000000000..128904854 --- /dev/null +++ b/conformance-stress/edge-cases/mpr-inflection-classes/grammar.xml @@ -0,0 +1,294 @@ + + + + + StressMprInflectionClasses + n + + Decl1 + Decl2 + Decl3 + Decl4 + Decl5 + ThemeA + ThemeB + Declension + Theme + + + Main + + a + e + i + o + u + l + m + n + r + s + t + k + p + d + + + Any + + + S + + + der + + + + ti + + + + ta + + + + te + + + + ti + + + + to + + + DER + + + pl + + + + ar + + + + or + + + + ar + + + + or + + + + er + + + PL + + + nom + + + + a + + + + o + + + + s + + + + us + + + + e + + + + ak + + + NOM + + + gen + + + + is + + + + i + + + + is + + + + us + + + + es + + + GEN + + + dat + + + + ai + + + + o + + + + i + + + + ui + + + + is + + + + um + + + DAT + + + + + nounTemplate + derSlot + plSlot + caseSlot + + + + + tel + R_tel + tel + + + mur + R_mur + mur + + + kasp + R_kasp + kasp + + + lup + R_lup + lup + + + tela + R_tela + tela + + + mura + R_mura + mura + + + kas + R_kas + kas + + + lupo + R_lupo + lupo + + + nis + R_nis + nis + + + pat + R_pat + pat + + + ron + R_ron + ron + + + dom + R_dom + dom + + + nisu + R_nisu + nisu + + + pati + R_pati + pati + + + rona + R_rona + rona + + + domi + R_domi + domi + + + sim + R_sim + sim + + + nor + R_nor + nor + + + kad + R_kad + kad + + + lut + R_lut + lut + + + + + + diff --git a/conformance-stress/edge-cases/mpr-inflection-classes/words.yaml b/conformance-stress/edge-cases/mpr-inflection-classes/words.yaml new file mode 100644 index 000000000..df225862b --- /dev/null +++ b/conformance-stress/edge-cases/mpr-inflection-classes/words.yaml @@ -0,0 +1,306 @@ +# kind: stress (timing and optimization parity fixture, not conformance; see conformance-stress/README.md) +# Stress fixture for trail MPR replay: five declension classes carried as one MPR group, 20 noun roots +# (four per class, stems overlapping in shape across classes), and case/number suffixes with one allomorph +# per class, each gated by requiredMPRFeatures. Endings are homophonous across classes and cases, so most +# analyses of a surface form pick a suffix allomorph of the wrong class and die in synthesis on the MPR check. +# The DAT rule has one allomorph gated by excludedMPRFeatures. The DER slot outputs features of an Overwrite +# group (Theme), which also feeds the NOM "ak" allomorph. Expected parses were derived by hand from the +# ending tables in grammar.xml (root + optional DER + optional PL + one case ending, class-gated) and +# confirmed against the engine. +language: StressMprInflectionClasses +inspired_by: ["Indo-European declension classes (Latin, Russian style); synthetic, not modeling a real language"] +sources: + - "research harness stress fixture; no external source" +requires: [] +fieldworks_producible: false +fieldworks_producible_notes: "research stress fixture; not authored through FieldWorks" +budget_ms: 15000 +words: + - word: telis + note: "telis" + parses: + - signature: "R_tel+GEN|telis" + rules: [mrGen] + - word: muris + note: "muris" + parses: + - signature: "R_mur+GEN|muris" + rules: [mrGen] + - word: kaspis + note: "kaspis" + parses: + - signature: "R_kasp+GEN|kaspis" + rules: [mrGen] + - word: lupis + note: "lupis" + parses: + - signature: "R_lup+GEN|lupis" + rules: [mrGen] + - word: telai + note: "telai" + parses: + - signature: "R_tel+DAT|telai" + rules: [mrDat] + - signature: "R_tela+GEN|telai" + rules: [mrGen] + - word: murai + note: "murai" + parses: + - signature: "R_mur+DAT|murai" + rules: [mrDat] + - signature: "R_mura+GEN|murai" + rules: [mrGen] + - word: kasi + note: "kasi" + parses: + - signature: "R_kas+GEN|kasi" + rules: [mrGen] + - word: lupoi + note: "lupoi" + parses: + - signature: "R_lupo+GEN|lupoi" + rules: [mrGen] + - word: nisis + note: "nisis" + parses: + - signature: "R_nis+GEN|nisis" + rules: [mrGen] + - word: patis + note: "patis" + parses: + - signature: "R_pat+GEN|patis" + rules: [mrGen] + - word: ronis + note: "ronis" + parses: + - signature: "R_ron+GEN|ronis" + rules: [mrGen] + - word: domis + note: "domis" + parses: + - signature: "R_dom+GEN|domis" + rules: [mrGen] + - word: nisuus + note: "nisuus" + parses: + - signature: "R_nisu+GEN|nisuus" + rules: [mrGen] + - signature: "R_nisu+NOM|nisuus" + rules: [mrNom] + - word: patius + note: "patius" + parses: + - signature: "R_pati+GEN|patius" + rules: [mrGen] + - signature: "R_pati+NOM|patius" + rules: [mrNom] + - word: ronaus + note: "ronaus" + parses: + - signature: "R_rona+GEN|ronaus" + rules: [mrGen] + - signature: "R_rona+NOM|ronaus" + rules: [mrNom] + - word: domius + note: "domius" + parses: + - signature: "R_domi+GEN|domius" + rules: [mrGen] + - signature: "R_domi+NOM|domius" + rules: [mrNom] + - word: simes + note: "simes" + parses: + - signature: "R_sim+GEN|simes" + rules: [mrGen] + - word: nores + note: "nores" + parses: + - signature: "R_nor+GEN|nores" + rules: [mrGen] + - word: kades + note: "kades" + parses: + - signature: "R_kad+GEN|kades" + rules: [mrGen] + - word: lutes + note: "lutes" + parses: + - signature: "R_lut+GEN|lutes" + rules: [mrGen] + - word: telarai + note: "telarai" + parses: + - signature: "R_tel+PL+DAT|telarai" + rules: [mrPl, mrDat] + - word: murarai + note: "murarai" + parses: + - signature: "R_mur+PL+DAT|murarai" + rules: [mrPl, mrDat] + - word: kasparai + note: "kasparai" + parses: + - signature: "R_kasp+PL+DAT|kasparai" + rules: [mrPl, mrDat] + - word: luparai + note: "luparai" + parses: + - signature: "R_lup+PL+DAT|luparai" + rules: [mrPl, mrDat] + - word: telaoro + note: "telaoro" + parses: + - signature: "R_tela+PL+DAT|telaoro" + rules: [mrPl, mrDat] + - signature: "R_tela+PL+NOM|telaoro" + rules: [mrPl, mrNom] + - word: muraoro + note: "muraoro" + parses: + - signature: "R_mura+PL+DAT|muraoro" + rules: [mrPl, mrDat] + - signature: "R_mura+PL+NOM|muraoro" + rules: [mrPl, mrNom] + - word: kasoro + note: "kasoro" + parses: + - signature: "R_kas+PL+DAT|kasoro" + rules: [mrPl, mrDat] + - signature: "R_kas+PL+NOM|kasoro" + rules: [mrPl, mrNom] + - word: lupooro + note: "lupooro" + parses: + - signature: "R_lupo+PL+DAT|lupooro" + rules: [mrPl, mrDat] + - signature: "R_lupo+PL+NOM|lupooro" + rules: [mrPl, mrNom] + - word: nisari + note: "nisari" + parses: + - signature: "R_nis+PL+DAT|nisari" + rules: [mrPl, mrDat] + - word: patari + note: "patari" + parses: + - signature: "R_pat+PL+DAT|patari" + rules: [mrPl, mrDat] + - word: ronari + note: "ronari" + parses: + - signature: "R_ron+PL+DAT|ronari" + rules: [mrPl, mrDat] + - word: domari + note: "domari" + parses: + - signature: "R_dom+PL+DAT|domari" + rules: [mrPl, mrDat] + - word: nisuorui + note: "nisuorui" + parses: + - signature: "R_nisu+PL+DAT|nisuorui" + rules: [mrPl, mrDat] + - word: patiorui + note: "patiorui" + parses: + - signature: "R_pati+PL+DAT|patiorui" + rules: [mrPl, mrDat] + - word: ronaorui + note: "ronaorui" + parses: + - signature: "R_rona+PL+DAT|ronaorui" + rules: [mrPl, mrDat] + - word: domiorui + note: "domiorui" + parses: + - signature: "R_domi+PL+DAT|domiorui" + rules: [mrPl, mrDat] + - word: simeris + note: "simeris" + parses: + - signature: "R_sim+PL+DAT|simeris" + rules: [mrPl, mrDat] + - word: noreris + note: "noreris" + parses: + - signature: "R_nor+PL+DAT|noreris" + rules: [mrPl, mrDat] + - word: kaderis + note: "kaderis" + parses: + - signature: "R_kad+PL+DAT|kaderis" + rules: [mrPl, mrDat] + - word: luteris + note: "luteris" + parses: + - signature: "R_lut+PL+DAT|luteris" + rules: [mrPl, mrDat] + - word: teltia + note: "teltia" + parses: + - signature: "R_tel+DER+NOM|teltia" + rules: [mrDer, mrNom] + - word: murtia + note: "murtia" + parses: + - signature: "R_mur+DER+NOM|murtia" + rules: [mrDer, mrNom] + - word: kasptia + note: "kasptia" + parses: + - signature: "R_kasp+DER+NOM|kasptia" + rules: [mrDer, mrNom] + - word: luptia + note: "luptia" + parses: + - signature: "R_lup+DER+NOM|luptia" + rules: [mrDer, mrNom] + - word: telatao + note: "telatao" + parses: + - signature: "R_tela+DER+DAT|telatao" + rules: [mrDer, mrDat] + - signature: "R_tela+DER+NOM|telatao" + rules: [mrDer, mrNom] + - word: muratao + note: "muratao" + parses: + - signature: "R_mura+DER+DAT|muratao" + rules: [mrDer, mrDat] + - signature: "R_mura+DER+NOM|muratao" + rules: [mrDer, mrNom] + - word: kastao + note: "kastao" + parses: + - signature: "R_kas+DER+DAT|kastao" + rules: [mrDer, mrDat] + - signature: "R_kas+DER+NOM|kastao" + rules: [mrDer, mrNom] + - word: lupotao + note: "lupotao" + parses: + - signature: "R_lupo+DER+DAT|lupotao" + rules: [mrDer, mrDat] + - signature: "R_lupo+DER+NOM|lupotao" + rules: [mrDer, mrNom] + - word: nistes + note: "nistes" + parses: + - signature: "R_nis+DER+NOM|nistes" + rules: [mrDer, mrNom] + - word: pattes + note: "pattes" + parses: + - signature: "R_pat+DER+NOM|pattes" + rules: [mrDer, mrNom] + - word: rontes + note: "rontes" + parses: + - signature: "R_ron+DER+NOM|rontes" + rules: [mrDer, mrNom] + - word: domtes + note: "domtes" + parses: + - signature: "R_dom+DER+NOM|domtes" + rules: [mrDer, mrNom] 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..17c78abfb --- /dev/null +++ b/conformance-stress/edge-cases/prefix-class-density/words.yaml @@ -0,0 +1,394 @@ +# 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. +# Confirmed against the engine with the E1 cutoff off. +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..24c20d510 --- /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 +# were enumerated by a small independent script over the slot tables above, then confirmed against +# the engine with PruneByTemplateReplay off. 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/tests/SIL.Machine.Morphology.HermitCrab.Tests/StressFixtureParityTests.cs b/tests/SIL.Machine.Morphology.HermitCrab.Tests/StressFixtureParityTests.cs new file mode 100644 index 000000000..43a2e9fe4 --- /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) + { + string candidate = Path.Combine(directory, "conformance-stress"); + if (Directory.Exists(candidate)) + return candidate; + 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 HashSet(StringComparer.Ordinal) { "phonology", "morpher-settings" }, + propose: false, + proposeOutput: TextWriter.Null + ); + Assert.That(report.Failed, Is.EqualTo(0), string.Join("; ", report.Results.Select(r => r.Reason))); + Assert.That(report.Passed, Is.EqualTo(1)); + } +} From 63da6fed3ce611b07d95c311caa685e3edffb0cc Mon Sep 17 00:00:00 2001 From: John Lambert Date: Wed, 28 Oct 2026 10:44:38 -0400 Subject: [PATCH 02/14] Add the bantu-tam-fusion stress grammar to conformance-stress, built for the impure-slot look-ahead stacked on #576. Co-Authored-By: Claude Opus 5.5 --- conformance-stress/README.md | 1 + .../edge-cases/bantu-tam-fusion/grammar.xml | 321 ++++++++++++++++++ .../edge-cases/bantu-tam-fusion/words.yaml | 252 ++++++++++++++ 3 files changed, 574 insertions(+) create mode 100644 conformance-stress/edge-cases/bantu-tam-fusion/grammar.xml create mode 100644 conformance-stress/edge-cases/bantu-tam-fusion/words.yaml diff --git a/conformance-stress/README.md b/conformance-stress/README.md index 88d5d13d3..2e4b3a1fc 100644 --- a/conformance-stress/README.md +++ b/conformance-stress/README.md @@ -21,6 +21,7 @@ The test fixture is `[Explicit]` and `[Category("Stress")]`, so a plain `dotnet |---|---|---| | `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 | | `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) | 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..98eac8bb0 --- /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..64b4255ee --- /dev/null +++ b/conformance-stress/edge-cases/bantu-tam-fusion/words.yaml @@ -0,0 +1,252 @@ +# kind: stress (timing and optimization parity fixture, not conformance; see conformance-stress/README.md) +language: StressBantuTamFusion +sources: [] +requires: [] +fieldworks_producible: false +fieldworks_producible_notes: "research stress fixture; not authored through FieldWorks" +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 From 97072207caa0f743377e3d11a331d40fb1806a6a Mon Sep 17 00:00:00 2001 From: John Lambert Date: Wed, 28 Oct 2026 11:44:18 -0400 Subject: [PATCH 03/14] Add the truncating-slot-chain stress grammar to conformance-stress, the worst case for the supply-set look-ahead stacked on #579. Co-Authored-By: Claude Opus 5.5 --- conformance-stress/README.md | 1 + .../truncating-slot-chain/grammar.xml | 137 +++ .../truncating-slot-chain/words.yaml | 798 ++++++++++++++++++ 3 files changed, 936 insertions(+) create mode 100644 conformance-stress/edge-cases/truncating-slot-chain/grammar.xml create mode 100644 conformance-stress/edge-cases/truncating-slot-chain/words.yaml diff --git a/conformance-stress/README.md b/conformance-stress/README.md index 2e4b3a1fc..27a6286b2 100644 --- a/conformance-stress/README.md +++ b/conformance-stress/README.md @@ -22,6 +22,7 @@ The test fixture is `[Explicit]` and `[Category("Stress")]`, so a plain `dotnet | `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) | 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..6704e29a0 --- /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..84989dc04 --- /dev/null +++ b/conformance-stress/edge-cases/truncating-slot-chain/words.yaml @@ -0,0 +1,798 @@ +# kind: stress (timing and optimization parity fixture, not conformance; see conformance-stress/README.md) +language: StressTruncatingSlotChain +sources: [] +requires: [] +fieldworks_producible: false +fieldworks_producible_notes: "research stress fixture; not authored through FieldWorks" +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 From fd27a05c66eaebea13a6711424687ab2ab530a24 Mon Sep 17 00:00:00 2001 From: John Lambert Date: Fri, 30 Oct 2026 17:09:42 -0400 Subject: [PATCH 04/14] Represent stress null affixes with FLEx boundaries --- conformance-stress/README.md | 5 +- .../athabaskan-prefix-complex/grammar.xml | 6 +- .../athabaskan-prefix-complex/words.yaml | 144 ++++++++--------- .../env-austronesian-nasal-prefix/grammar.xml | 6 +- .../env-austronesian-nasal-prefix/words.yaml | 11 +- .../edge-cases/env-bantu-concord/grammar.xml | 8 +- .../edge-cases/env-bantu-concord/words.yaml | 40 +++-- .../env-zero-allomorphs/grammar.xml | 10 +- .../edge-cases/env-zero-allomorphs/words.yaml | 26 +-- .../excluded-cooccurrence/grammar.xml | 6 +- .../excluded-cooccurrence/words.yaml | 150 +++++++++--------- 11 files changed, 214 insertions(+), 198 deletions(-) diff --git a/conformance-stress/README.md b/conformance-stress/README.md index 27a6286b2..405e65bdf 100644 --- a/conformance-stress/README.md +++ b/conformance-stress/README.md @@ -4,8 +4,9 @@ These grammars are for timing and optimization work on the analysis pass. They a 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 parses are what `master` produces (three identical runs were -required), so an optimization must return the same parses. The measure of a change is the number of +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: diff --git a/conformance-stress/edge-cases/athabaskan-prefix-complex/grammar.xml b/conformance-stress/edge-cases/athabaskan-prefix-complex/grammar.xml index 5a8663640..80f340195 100644 --- a/conformance-stress/edge-cases/athabaskan-prefix-complex/grammar.xml +++ b/conformance-stress/edge-cases/athabaskan-prefix-complex/grammar.xml @@ -23,6 +23,10 @@ n t + + ^0*0&0∅ + + + Any @@ -326,7 +330,7 @@ - + ^0+ S6e diff --git a/conformance-stress/edge-cases/athabaskan-prefix-complex/words.yaml b/conformance-stress/edge-cases/athabaskan-prefix-complex/words.yaml index fa7a876a3..8a3302a16 100644 --- a/conformance-stress/edge-cases/athabaskan-prefix-complex/words.yaml +++ b/conformance-stress/edge-cases/athabaskan-prefix-complex/words.yaml @@ -22,15 +22,15 @@ words: note: >- 4 segmentations; 3 survive the exclude rules. parses: - - signature: "S3b+S2e+S1b+R8+S6e|taaninik" - rules: [mrS6e, mrS3b, mrS2e, mrS1b] - exercises: ["Morpheme co-occurrence rules"] - 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. @@ -65,9 +65,6 @@ words: note: >- 10 segmentations; 5 survive the exclude rules. parses: - - signature: "S3c+S2d+S1a+R3+S6e|nikaanat" - rules: [mrS6e, mrS3c, mrS2d, mrS1a] - exercises: ["Morpheme co-occurrence rules"] - signature: "S3c+S2d+S1a+R3|nikaanat" rules: [mrS3c, mrS2d, mrS1a] exercises: ["Morpheme co-occurrence rules"] @@ -80,19 +77,16 @@ words: - 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+S6e|naikat" - rules: [mrS6e, mrS4c, mrS1b] - exercises: ["Morpheme co-occurrence rules"] - signature: "S4c+S1b+R5|naikat" rules: [mrS4c, mrS1b] exercises: ["Morpheme co-occurrence rules"] - - signature: "S4c+S2a+R5+S6e|naikat" - rules: [mrS6e, mrS4c, mrS2a] - exercises: ["Morpheme co-occurrence rules"] - signature: "S4c+S2a+R5|naikat" rules: [mrS4c, mrS2a] exercises: ["Morpheme co-occurrence rules"] @@ -105,6 +99,12 @@ words: - 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. @@ -126,21 +126,12 @@ words: note: >- 9 segmentations; 9 survive the exclude rules. parses: - - signature: "S2d+S1b+R10+S6e|kaitik" - rules: [mrS6e, mrS2d, mrS1b] - exercises: ["Morpheme co-occurrence rules"] - signature: "S2d+S1b+R10|kaitik" rules: [mrS2d, mrS1b] exercises: ["Morpheme co-occurrence rules"] - - signature: "S4b+S1b+R10+S6e|kaitik" - rules: [mrS6e, mrS4b, mrS1b] - exercises: ["Morpheme co-occurrence rules"] - signature: "S4b+S1b+R10|kaitik" rules: [mrS4b, mrS1b] exercises: ["Morpheme co-occurrence rules"] - - signature: "S4b+S2a+R10+S6e|kaitik" - rules: [mrS6e, mrS4b, mrS2a] - exercises: ["Morpheme co-occurrence rules"] - signature: "S4b+S2a+R10|kaitik" rules: [mrS4b, mrS2a] exercises: ["Morpheme co-occurrence rules"] @@ -153,6 +144,15 @@ words: - 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. @@ -164,15 +164,9 @@ words: note: >- 10 segmentations; 6 survive the exclude rules. parses: - - signature: "S2c+S1c+R10+S6e|titatik" - rules: [mrS6e, mrS2c, mrS1c] - exercises: ["Morpheme co-occurrence rules"] - signature: "S2c+S1c+R10|titatik" rules: [mrS2c, mrS1c] exercises: ["Morpheme co-occurrence rules"] - - signature: "S4e+S1c+R10+S6e|titatik" - rules: [mrS6e, mrS4e, mrS1c] - exercises: ["Morpheme co-occurrence rules"] - signature: "S4e+S1c+R10|titatik" rules: [mrS4e, mrS1c] exercises: ["Morpheme co-occurrence rules"] @@ -182,13 +176,16 @@ words: - 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+S6e|kiatikitik" - rules: [mrS6e, mrS3e, mrS2c, mrS1d] - exercises: ["Morpheme co-occurrence rules"] - signature: "S3e+S2c+S1d+R10|kiatikitik" rules: [mrS3e, mrS2c, mrS1d] exercises: ["Morpheme co-occurrence rules"] @@ -198,6 +195,9 @@ words: - 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. @@ -209,9 +209,6 @@ words: note: >- 11 segmentations; 6 survive the exclude rules. parses: - - signature: "S4a+S2b+S1c+R10+S6e|iatatik" - rules: [mrS6e, mrS4a, mrS2b, mrS1c] - exercises: ["Morpheme co-occurrence rules"] - signature: "S4a+S2b+S1c+R10|iatatik" rules: [mrS4a, mrS2b, mrS1c] exercises: ["Morpheme co-occurrence rules"] @@ -227,13 +224,13 @@ words: - 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+S6e|nikataant" - rules: [mrS6e, mrS3c, mrS2d, mrS1c] - exercises: ["Morpheme co-occurrence rules"] - signature: "S3c+S2d+S1c+R7|nikataant" rules: [mrS3c, mrS2d, mrS1c] exercises: ["Morpheme co-occurrence rules"] @@ -243,6 +240,9 @@ words: - 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. @@ -264,9 +264,6 @@ words: note: >- 9 segmentations; 5 survive the exclude rules. parses: - - signature: "S4b+S2c+S1a+R2+S6e|katiakin" - rules: [mrS6e, mrS4b, mrS2c, mrS1a] - exercises: ["Morpheme co-occurrence rules"] - signature: "S4b+S2c+S1a+R2|katiakin" rules: [mrS4b, mrS2c, mrS1a] exercises: ["Morpheme co-occurrence rules"] @@ -279,6 +276,9 @@ words: - 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. @@ -290,9 +290,6 @@ words: note: >- 4 segmentations; 4 survive the exclude rules. parses: - - signature: "S4b+S2d+S1d+R8+S6e|kakakinik" - rules: [mrS6e, mrS4b, mrS2d, mrS1d] - exercises: ["Morpheme co-occurrence rules"] - signature: "S4b+S2d+S1d+R8|kakakinik" rules: [mrS4b, mrS2d, mrS1d] exercises: ["Morpheme co-occurrence rules"] @@ -302,6 +299,9 @@ words: - 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. @@ -313,9 +313,6 @@ words: note: >- 8 segmentations; 5 survive the exclude rules. parses: - - signature: "S4b+S2c+S1b+R3+S6e|katiinat" - rules: [mrS6e, mrS4b, mrS2c, mrS1b] - exercises: ["Morpheme co-occurrence rules"] - signature: "S4b+S2c+S1b+R3|katiinat" rules: [mrS4b, mrS2c, mrS1b] exercises: ["Morpheme co-occurrence rules"] @@ -328,6 +325,9 @@ words: - 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. @@ -339,9 +339,6 @@ words: note: >- 18 segmentations; 8 survive the exclude rules. parses: - - signature: "S3a+S2d+S1c+R1+S6e|akatatak" - rules: [mrS6e, mrS3a, mrS2d, mrS1c] - exercises: ["Morpheme co-occurrence rules"] - signature: "S3a+S2d+S1c+R1|akatatak" rules: [mrS3a, mrS2d, mrS1c] exercises: ["Morpheme co-occurrence rules"] @@ -363,13 +360,13 @@ words: - 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+S6e|katitaink" - rules: [mrS6e, mrS4b, mrS2c, mrS1c] - exercises: ["Morpheme co-occurrence rules"] - signature: "S4b+S2c+S1c+R4|katitaink" rules: [mrS4b, mrS2c, mrS1c] exercises: ["Morpheme co-occurrence rules"] @@ -379,13 +376,13 @@ words: - 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+S6e|tikakinat" - rules: [mrS6e, mrS4e, mrS2d, mrS1d] - exercises: ["Morpheme co-occurrence rules"] - signature: "S4e+S2d+S1d+R3|tikakinat" rules: [mrS4e, mrS2d, mrS1d] exercises: ["Morpheme co-occurrence rules"] @@ -395,6 +392,9 @@ words: - 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. @@ -406,9 +406,6 @@ words: note: >- 8 segmentations; 5 survive the exclude rules. parses: - - signature: "S3b+S2b+S1b+R5+S6e|taaikat" - rules: [mrS6e, mrS3b, mrS2b, mrS1b] - exercises: ["Morpheme co-occurrence rules"] - signature: "S3b+S2b+S1b+R5|taaikat" rules: [mrS3b, mrS2b, mrS1b] exercises: ["Morpheme co-occurrence rules"] @@ -421,13 +418,13 @@ words: - 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+S6e|kiatitin" - rules: [mrS6e, mrS3e, mrS2c] - exercises: ["Morpheme co-occurrence rules"] - signature: "S3e+S2c+R6|kiatitin" rules: [mrS3e, mrS2c] exercises: ["Morpheme co-occurrence rules"] @@ -440,13 +437,13 @@ words: - 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+S6e|tainanik" - rules: [mrS6e, mrS3b, mrS2a, mrS1e] - exercises: ["Morpheme co-occurrence rules"] - signature: "S3b+S2a+S1e+R8|tainanik" rules: [mrS3b, mrS2a, mrS1e] exercises: ["Morpheme co-occurrence rules"] @@ -456,6 +453,9 @@ words: - 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. @@ -474,9 +474,6 @@ words: note: >- 9 segmentations; 5 survive the exclude rules. parses: - - signature: "S3b+S2c+S1a+R1+S6e|tatiatak" - rules: [mrS6e, mrS3b, mrS2c, mrS1a] - exercises: ["Morpheme co-occurrence rules"] - signature: "S3b+S2c+S1a+R1|tatiatak" rules: [mrS3b, mrS2c, mrS1a] exercises: ["Morpheme co-occurrence rules"] @@ -489,6 +486,9 @@ words: - 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. @@ -500,9 +500,6 @@ words: note: >- 8 segmentations; 4 survive the exclude rules. parses: - - signature: "S3c+S2d+S1c+R6+S6e|nikatatin" - rules: [mrS6e, mrS3c, mrS2d, mrS1c] - exercises: ["Morpheme co-occurrence rules"] - signature: "S3c+S2d+S1c+R6|nikatatin" rules: [mrS3c, mrS2d, mrS1c] exercises: ["Morpheme co-occurrence rules"] @@ -512,6 +509,9 @@ words: - 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. @@ -540,9 +540,6 @@ words: note: >- 5 segmentations; 4 survive the exclude rules. parses: - - signature: "S4b+S2a+S1c+R9+S6e|kaitakan" - rules: [mrS6e, mrS4b, mrS2a, mrS1c] - exercises: ["Morpheme co-occurrence rules"] - signature: "S4b+S2a+S1c+R9|kaitakan" rules: [mrS4b, mrS2a, mrS1c] exercises: ["Morpheme co-occurrence rules"] @@ -552,3 +549,6 @@ words: - 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/env-austronesian-nasal-prefix/grammar.xml b/conformance-stress/edge-cases/env-austronesian-nasal-prefix/grammar.xml index f1ce9cd4c..ba0b66a0b 100644 --- a/conformance-stress/edge-cases/env-austronesian-nasal-prefix/grammar.xml +++ b/conformance-stress/edge-cases/env-austronesian-nasal-prefix/grammar.xml @@ -23,6 +23,10 @@ n s + + ^0*0&0∅ + + + Any @@ -38,7 +42,7 @@ activememmenmekmemeACT causativepempenpekpeCAUS - locativeikanLOC + locative+^0ikanLOC pabaR00root0 diff --git a/conformance-stress/edge-cases/env-austronesian-nasal-prefix/words.yaml b/conformance-stress/edge-cases/env-austronesian-nasal-prefix/words.yaml index f0bc3da74..af01c19b5 100644 --- a/conformance-stress/edge-cases/env-austronesian-nasal-prefix/words.yaml +++ b/conformance-stress/edge-cases/env-austronesian-nasal-prefix/words.yaml @@ -3,9 +3,8 @@ 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: [] -# Stress fixture for the required-environment prefilter. Expected parses follow the allomorph and disjunction -# rules by hand; the zero allomorphs' environments are read at an engine-defined position, so words with a -# zero-allomorph parse take the engine's verdict with the prefilter switched off. +# 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 @@ -77,9 +76,6 @@ words: 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+LOC|umi" - gloss: parse - rules: [mrLOC] - signature: "R09|umi" gloss: parse rules: [] @@ -188,9 +184,6 @@ words: 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+LOC+CAUS+R17|mempendasi" - gloss: parse - rules: [mrACT, mrCAUS, mrLOC] - signature: "ACT+CAUS+R17|mempendasi" gloss: parse rules: [mrACT, mrCAUS] diff --git a/conformance-stress/edge-cases/env-bantu-concord/grammar.xml b/conformance-stress/edge-cases/env-bantu-concord/grammar.xml index a86c4c28b..46a3358d5 100644 --- a/conformance-stress/edge-cases/env-bantu-concord/grammar.xml +++ b/conformance-stress/edge-cases/env-bantu-concord/grammar.xml @@ -24,6 +24,10 @@ n s + + ^0*0&0∅ + + + Any @@ -39,9 +43,9 @@ Main - concordmnkuaCONC + concordmnku^0+aCONC negationttiNEG - tenseninasiTAM + tense+^0ninasiTAM papaR00root0 diff --git a/conformance-stress/edge-cases/env-bantu-concord/words.yaml b/conformance-stress/edge-cases/env-bantu-concord/words.yaml index 439716b2c..0dfa3203a 100644 --- a/conformance-stress/edge-cases/env-bantu-concord/words.yaml +++ b/conformance-stress/edge-cases/env-bantu-concord/words.yaml @@ -3,9 +3,8 @@ 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: [] -# Stress fixture for the required-environment prefilter. Expected parses follow the allomorph and disjunction -# rules by hand; the zero allomorphs' environments are read at an engine-defined position, so words with a -# zero-allomorph parse take the engine's verdict with the prefilter switched off. +# 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 @@ -84,32 +83,32 @@ words: 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: [] - - signature: "R10+TAM|mama" - gloss: parse - rules: [mrTAM] - 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: [] - - signature: "R11+TAM|nina" - gloss: parse - rules: [mrTAM] - 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: [] - - signature: "R12+TAM|mumi" - gloss: parse - rules: [mrTAM] - 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. @@ -190,9 +189,6 @@ words: - signature: "CONC+NEG+R08|ntigugu" gloss: parse rules: [mrCONC, mrNEG] - - signature: "CONC+TAM+NEG+R08|ntigugu" - gloss: parse - rules: [mrCONC, mrNEG, mrTAM] - 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. @@ -214,12 +210,15 @@ words: 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+R12+TAM|timumina" + - signature: "NEG+CONC+R12+TAM|ti[(^0)(*0)(&0)∅]?+?mumina" gloss: parse - rules: [mrNEG, mrCONC, mrTAM] - - signature: "CONC+NEG+R12+TAM|timumina" + 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, mrNEG, mrCONC] + rules: [mrTAM, mrCONC, mrNEG] - signature: "NEG+R12+TAM|timumina" gloss: parse rules: [mrNEG, mrTAM] @@ -247,9 +246,6 @@ words: - signature: "CONC+NEG+R02|ntipubi" gloss: parse rules: [mrCONC, mrNEG] - - signature: "CONC+TAM+NEG+R02|ntipubi" - gloss: parse - rules: [mrCONC, mrNEG, mrTAM] - 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. diff --git a/conformance-stress/edge-cases/env-zero-allomorphs/grammar.xml b/conformance-stress/edge-cases/env-zero-allomorphs/grammar.xml index d7b0d6f70..9c9842d4c 100644 --- a/conformance-stress/edge-cases/env-zero-allomorphs/grammar.xml +++ b/conformance-stress/edge-cases/env-zero-allomorphs/grammar.xml @@ -27,6 +27,10 @@ m n + + ^0*0&0∅ + + + Any @@ -37,9 +41,9 @@ Main -classPrefixkukaP1 -personPrefixtiP2 -suffixpapiS1 +classPrefix^0+kukaP1 +personPrefix^0+tiP2 +suffix+^0papiS1 batuR00root0 diff --git a/conformance-stress/edge-cases/env-zero-allomorphs/words.yaml b/conformance-stress/edge-cases/env-zero-allomorphs/words.yaml index afcc56fc2..cf2191cbb 100644 --- a/conformance-stress/edge-cases/env-zero-allomorphs/words.yaml +++ b/conformance-stress/edge-cases/env-zero-allomorphs/words.yaml @@ -5,7 +5,7 @@ sources: [] requires: [] # 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; no word here validates them. +# first so synthesis tries them; tabun and gisam exercise the null suffix after a nasal. budget_ms: 60000 words: - word: batu @@ -183,23 +183,23 @@ words: - signature: "R16|kanu" gloss: R16 rules: [] - - signature: "R16+P1|kanu" - gloss: R16 - rules: [mrP1] - - signature: "R16+S1|kanu" - gloss: R16 - rules: [mrS1] - word: tabun note: >- - Bare root tabun; every affix is optional, and no zero allomorph's rare-class context is satisfied. + 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; every affix is optional, and no zero allomorph's rare-class context is satisfied. + 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: [] @@ -250,8 +250,14 @@ words: rules: [mrP2] - word: katabun note: >- - Hand derivation: root R17 'tabun' with prefixes P1 applied inner to outer; 1 rule orders are possible because the unordered suffix may be applied between or after the prefixes. + 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] diff --git a/conformance-stress/edge-cases/excluded-cooccurrence/grammar.xml b/conformance-stress/edge-cases/excluded-cooccurrence/grammar.xml index 355bb69c4..58ce50952 100644 --- a/conformance-stress/edge-cases/excluded-cooccurrence/grammar.xml +++ b/conformance-stress/edge-cases/excluded-cooccurrence/grammar.xml @@ -26,6 +26,10 @@ i u + + ^0*0&0∅ + + + Any @@ -269,7 +273,7 @@ - + ^0+ S6d diff --git a/conformance-stress/edge-cases/excluded-cooccurrence/words.yaml b/conformance-stress/edge-cases/excluded-cooccurrence/words.yaml index 68c1eb99e..dd0c71ead 100644 --- a/conformance-stress/edge-cases/excluded-cooccurrence/words.yaml +++ b/conformance-stress/edge-cases/excluded-cooccurrence/words.yaml @@ -12,12 +12,12 @@ words: note: >- 2 segmentations; 2 survive the exclude rules. parses: - - signature: "S3d+S1d+R3+S6d|tikunup" - rules: [mrS6d, mrS3d, mrS1d] - exercises: ["Morpheme co-occurrence rules"] - 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. @@ -41,32 +41,32 @@ words: note: >- 2 segmentations; 2 survive the exclude rules. parses: - - signature: "S5b+S3b+S2b+S1d+R5+S6d|kanatakupum" - rules: [mrS6d, mrS5b, mrS3b, mrS2b, mrS1d] - exercises: ["Morpheme co-occurrence rules"] - 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+S6d|nuumas" - rules: [mrS6d, mrS5c, mrS3a] - exercises: ["Morpheme co-occurrence rules"] - 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+S6d|tasikasunup" - rules: [mrS6d, mrS5d, mrS4d, mrS3c, mrS2d] - exercises: ["Morpheme co-occurrence rules"] - 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. @@ -85,12 +85,12 @@ words: note: >- 2 segmentations; 2 survive the exclude rules. parses: - - signature: "S4d+S3c+S2b+R12+S6d|sikatapat" - rules: [mrS6d, mrS4d, mrS3c, mrS2b] - exercises: ["Morpheme co-occurrence rules"] - 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. @@ -100,12 +100,12 @@ words: note: >- 2 segmentations; 2 survive the exclude rules. parses: - - signature: "S5a+S3a+S2d+S1c+R6+S6d|iusunisik" - rules: [mrS6d, mrS5a, mrS3a, mrS2d, mrS1c] - exercises: ["Morpheme co-occurrence rules"] - 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. @@ -117,44 +117,44 @@ words: note: >- 4 segmentations; 4 survive the exclude rules. parses: - - signature: "S5c+S3d+S1b+R3+S6d|nutimanup" - rules: [mrS6d, mrS5c, mrS3d, mrS1b] - exercises: ["Morpheme co-occurrence rules"] - signature: "S5c+S3d+S1b+R3|nutimanup" rules: [mrS5c, mrS3d, mrS1b] exercises: ["Morpheme co-occurrence rules"] - - signature: "S5c+S3d+S2c+R3+S6d|nutimanup" - rules: [mrS6d, mrS5c, mrS3d, mrS2c] - 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+S6d|nuamakat" - rules: [mrS6d, mrS5c, mrS4a, mrS1b] - exercises: ["Morpheme co-occurrence rules"] - signature: "S5c+S4a+S1b+R1|nuamakat" rules: [mrS5c, mrS4a, mrS1b] exercises: ["Morpheme co-occurrence rules"] - - signature: "S5c+S4a+S2c+R1+S6d|nuamakat" - rules: [mrS6d, mrS5c, mrS4a, mrS2c] - 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+S6d|taumatas" - rules: [mrS6d, mrS5d, mrS3a, mrS2c] - exercises: ["Morpheme co-occurrence rules"] - 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. @@ -174,22 +174,22 @@ words: note: >- 2 segmentations; 2 survive the exclude rules. parses: - - signature: "S5d+S4b+S3b+S1d+R8+S6d|tapanakunit" - rules: [mrS6d, mrS5d, mrS4b, mrS3b, mrS1d] - exercises: ["Morpheme co-occurrence rules"] - 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+S6d|pasusin" - rules: [mrS6d, mrS4b, mrS2d] - exercises: ["Morpheme co-occurrence rules"] - 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. @@ -201,35 +201,35 @@ words: note: >- 2 segmentations; 2 survive the exclude rules. parses: - - signature: "S5d+S2b+R5+S6d|tatapum" - rules: [mrS6d, mrS5d, mrS2b] - exercises: ["Morpheme co-occurrence rules"] - 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+S6d|unimas" - rules: [mrS6d, mrS3a, mrS1c] - exercises: ["Morpheme co-occurrence rules"] - 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+S6d|akutas" - rules: [mrS6d, mrS4a, mrS1d] - exercises: ["Morpheme co-occurrence rules"] - 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. @@ -251,28 +251,28 @@ words: note: >- 2 segmentations; 2 survive the exclude rules. parses: - - signature: "S4b+S3d+S2d+S1d+R1+S6d|patisukukat" - rules: [mrS6d, mrS4b, mrS3d, mrS2d, mrS1d] - exercises: ["Morpheme co-occurrence rules"] - 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+S6d|inikam" - rules: [mrS6d, mrS2a, mrS1c] - exercises: ["Morpheme co-occurrence rules"] - signature: "S2a+S1c+R7|inikam" rules: [mrS2a, mrS1c] exercises: ["Morpheme co-occurrence rules"] - - signature: "S5a+S1c+R7+S6d|inikam" - rules: [mrS6d, mrS5a, 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. @@ -284,12 +284,12 @@ words: note: >- 2 segmentations; 2 survive the exclude rules. parses: - - signature: "S5c+S4a+S3b+S1c+R2+S6d|nuananimis" - rules: [mrS6d, mrS5c, mrS4a, mrS3b, mrS1c] - exercises: ["Morpheme co-occurrence rules"] - 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. @@ -314,38 +314,38 @@ words: note: >- 2 segmentations; 2 survive the exclude rules. parses: - - signature: "S5c+S4b+S3a+S2d+R8+S6d|nupausunit" - rules: [mrS6d, mrS5c, mrS4b, mrS3a, mrS2d] - exercises: ["Morpheme co-occurrence rules"] - 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+S6d|katanipat" - rules: [mrS6d, mrS3c, mrS2b, mrS1c] - exercises: ["Morpheme co-occurrence rules"] - signature: "S3c+S2b+S1c+R12|katanipat" rules: [mrS3c, mrS2b, mrS1c] exercises: ["Morpheme co-occurrence rules"] - - signature: "S5b+S2b+S1c+R12+S6d|katanipat" - rules: [mrS6d, mrS5b, 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+S6d|mikatup" - rules: [mrS6d, mrS4c, mrS3c] - exercises: ["Morpheme co-occurrence rules"] - 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. @@ -374,12 +374,12 @@ words: note: >- 2 segmentations; 2 survive the exclude rules. parses: - - signature: "S5b+S4d+S3d+R5+S6d|kasitipum" - rules: [mrS6d, mrS5b, mrS4d, mrS3d] - exercises: ["Morpheme co-occurrence rules"] - 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. From 4a19ca0f2eae16ffeb454d52808ccdf3cb13aaf2 Mon Sep 17 00:00:00 2001 From: John Lambert Date: Sat, 31 Oct 2026 22:23:33 -0400 Subject: [PATCH 05/14] Take the stress parity capabilities from SelfCheckEngine instead of a copied literal Co-Authored-By: Claude Sonnet 5.5 --- .../StressFixtureParityTests.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/SIL.Machine.Morphology.HermitCrab.Tests/StressFixtureParityTests.cs b/tests/SIL.Machine.Morphology.HermitCrab.Tests/StressFixtureParityTests.cs index 43a2e9fe4..625f9af7c 100644 --- a/tests/SIL.Machine.Morphology.HermitCrab.Tests/StressFixtureParityTests.cs +++ b/tests/SIL.Machine.Morphology.HermitCrab.Tests/StressFixtureParityTests.cs @@ -32,7 +32,7 @@ public void ParsesMatchTheMasterEngine(string fixtureId) RunReport report = Runner.RunSelfCheck( fixtures, includePathological: true, - engineCapabilities: new HashSet(StringComparer.Ordinal) { "phonology", "morpher-settings" }, + engineCapabilities: new SelfCheckEngine().Capabilities, propose: false, proposeOutput: TextWriter.Null ); From 6298f46af6b7d0b85f3e695f6943fd54c4b59a0f Mon Sep 17 00:00:00 2001 From: John Lambert Date: Sat, 31 Oct 2026 22:23:35 -0400 Subject: [PATCH 06/14] Report the skip reason when a stress parity fixture neither fails nor passes Co-Authored-By: Claude Sonnet 5.5 --- .../StressFixtureParityTests.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tests/SIL.Machine.Morphology.HermitCrab.Tests/StressFixtureParityTests.cs b/tests/SIL.Machine.Morphology.HermitCrab.Tests/StressFixtureParityTests.cs index 625f9af7c..d7c4ab698 100644 --- a/tests/SIL.Machine.Morphology.HermitCrab.Tests/StressFixtureParityTests.cs +++ b/tests/SIL.Machine.Morphology.HermitCrab.Tests/StressFixtureParityTests.cs @@ -36,7 +36,8 @@ public void ParsesMatchTheMasterEngine(string fixtureId) propose: false, proposeOutput: TextWriter.Null ); - Assert.That(report.Failed, Is.EqualTo(0), string.Join("; ", report.Results.Select(r => r.Reason))); - Assert.That(report.Passed, Is.EqualTo(1)); + 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); } } From 62f354112caf9360b1c998835fd621d879237a12 Mon Sep 17 00:00:00 2001 From: John Lambert Date: Sat, 31 Oct 2026 22:23:39 -0400 Subject: [PATCH 07/14] Anchor the stress fixture root on conformance/constructs.txt like the other repository-root helpers Co-Authored-By: Claude Sonnet 5.5 --- .../StressFixtureParityTests.cs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/tests/SIL.Machine.Morphology.HermitCrab.Tests/StressFixtureParityTests.cs b/tests/SIL.Machine.Morphology.HermitCrab.Tests/StressFixtureParityTests.cs index d7c4ab698..6fd5b399a 100644 --- a/tests/SIL.Machine.Morphology.HermitCrab.Tests/StressFixtureParityTests.cs +++ b/tests/SIL.Machine.Morphology.HermitCrab.Tests/StressFixtureParityTests.cs @@ -13,9 +13,8 @@ private static string StressRoot() string? directory = TestContext.CurrentContext.TestDirectory; while (directory is not null) { - string candidate = Path.Combine(directory, "conformance-stress"); - if (Directory.Exists(candidate)) - return candidate; + if (File.Exists(Path.Combine(directory, "conformance", "constructs.txt"))) + return Path.Combine(directory, "conformance-stress"); directory = Directory.GetParent(directory)?.FullName; } From b2780fedaf99839bd4533feadfb116f2efcc9fa3 Mon Sep 17 00:00:00 2001 From: John Lambert Date: Sun, 1 Nov 2026 01:37:02 -0400 Subject: [PATCH 08/14] The stress corpus no longer holds the two MPR-feature-group grammars that no FieldWorks project can produce, leaving 16 fixtures. Co-Authored-By: Claude Sonnet 5.5 --- conformance-stress/README.md | 6 +- .../edge-cases/mpr-bantu-concord/grammar.xml | 208 ------------ .../edge-cases/mpr-bantu-concord/words.yaml | 138 -------- .../mpr-inflection-classes/grammar.xml | 294 ----------------- .../mpr-inflection-classes/words.yaml | 306 ------------------ 5 files changed, 4 insertions(+), 948 deletions(-) delete mode 100644 conformance-stress/edge-cases/mpr-bantu-concord/grammar.xml delete mode 100644 conformance-stress/edge-cases/mpr-bantu-concord/words.yaml delete mode 100644 conformance-stress/edge-cases/mpr-inflection-classes/grammar.xml delete mode 100644 conformance-stress/edge-cases/mpr-inflection-classes/words.yaml diff --git a/conformance-stress/README.md b/conformance-stress/README.md index 405e65bdf..2b130d1f7 100644 --- a/conformance-stress/README.md +++ b/conformance-stress/README.md @@ -33,12 +33,14 @@ The test fixture is `[Explicit]` and `[Category("Stress")]`, so a plain `dotnet | `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) | -| `mpr-bantu-concord` | noun-class concord through MPR features | #570 (MPR replay) | -| `mpr-inflection-classes` | inflection classes through MPR features | #570 (MPR replay) | | `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 need a `MorphologicalPhonologicalRuleFeatureGroup` +and rules whose subrules require different MPR features, which a FieldWorks project cannot express, so they could not +be kept as grammars a real project can produce. + `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 diff --git a/conformance-stress/edge-cases/mpr-bantu-concord/grammar.xml b/conformance-stress/edge-cases/mpr-bantu-concord/grammar.xml deleted file mode 100644 index 94d45745f..000000000 --- a/conformance-stress/edge-cases/mpr-bantu-concord/grammar.xml +++ /dev/null @@ -1,208 +0,0 @@ - - - - - StressMprBantuConcord - v - - Class1 - Class2 - Class3 - Class4 - Class5 - Class6 - NounClass - - - Main - - a - e - i - o - u - l - m - n - r - s - t - k - p - d - - - Any - - - S - - - sm - - - - a - - - - u - - - - i - - - - a - - - - u - - - - i - - - SM - - - om - - - - u - - - - a - - - - i - - - - i - - - - a - - - - u - - - - ka - - - OM - - - fv - - - - a - - - - i - - - - a - - - - i - - - - a - - - - i - - - FV - - - - - verbTemplate - smSlot - omSlot - fvSlot - - - - - tum - V_tum - tum - - - lim - V_lim - lim - - - tuma - V_tuma - tuma - - - lima - V_lima - lima - - - kal - V_kal - kal - - - pak - V_pak - pak - - - kala - V_kala - kala - - - paka - V_paka - paka - - - dum - V_dum - dum - - - mal - V_mal - mal - - - duma - V_duma - duma - - - mala - V_mala - mala - - - - - - diff --git a/conformance-stress/edge-cases/mpr-bantu-concord/words.yaml b/conformance-stress/edge-cases/mpr-bantu-concord/words.yaml deleted file mode 100644 index d75db7c58..000000000 --- a/conformance-stress/edge-cases/mpr-bantu-concord/words.yaml +++ /dev/null @@ -1,138 +0,0 @@ -# kind: stress (timing and optimization parity fixture, not conformance; see conformance-stress/README.md) -# Stress fixture for trail MPR replay, Bantu style: six noun-class features in one MPR group gate three -# agreement slots (subject concord, object concord, final vowel), each with one allomorph per class and -# homophonous shapes across classes. The object concord has one allomorph gated by excludedMPRFeatures. -# Expected parses were derived by hand from the concord tables in grammar.xml and confirmed against the engine. -language: StressMprBantuConcord -inspired_by: ["Bantu noun-class agreement (Swahili, Shona style); synthetic, not modeling a real language"] -sources: - - "research stress fixture; no external source" -requires: [] -fieldworks_producible: false -fieldworks_producible_notes: "research stress fixture; not authored through FieldWorks" -budget_ms: 15000 -words: - - word: atuma - note: "atuma" - parses: - - signature: "SM+V_tum+FV|atuma" - rules: [mrFv, mrSm] - - word: autuma - note: "autuma" - parses: - - signature: "SM+OM+V_tum+FV|autuma" - rules: [mrFv, mrOm, mrSm] - - word: alima - note: "alima" - parses: - - signature: "SM+V_lim+FV|alima" - rules: [mrFv, mrSm] - - word: aulima - note: "aulima" - parses: - - signature: "SM+OM+V_lim+FV|aulima" - rules: [mrFv, mrOm, mrSm] - - word: utumai - note: "utumai" - parses: - - signature: "SM+V_tuma+FV|utumai" - rules: [mrFv, mrSm] - - word: uatumai - note: "uatumai" - parses: - - signature: "SM+OM+V_tuma+FV|uatumai" - rules: [mrFv, mrOm, mrSm] - - word: ulimai - note: "ulimai" - parses: - - signature: "SM+V_lima+FV|ulimai" - rules: [mrFv, mrSm] - - word: ualimai - note: "ualimai" - parses: - - signature: "SM+OM+V_lima+FV|ualimai" - rules: [mrFv, mrOm, mrSm] - - word: ikala - note: "ikala" - parses: - - signature: "SM+V_kal+FV|ikala" - rules: [mrFv, mrSm] - - word: iikala - note: "iikala" - parses: - - signature: "OM+SM+V_kal+FV|iikala" - rules: [mrFv, mrOm, mrSm] - - signature: "SM+OM+V_kal+FV|iikala" - rules: [mrFv, mrOm, mrSm] - - word: ipaka - note: "ipaka" - parses: - - signature: "SM+V_pak+FV|ipaka" - rules: [mrFv, mrSm] - - word: iipaka - note: "iipaka" - parses: - - signature: "OM+SM+V_pak+FV|iipaka" - rules: [mrFv, mrOm, mrSm] - - signature: "SM+OM+V_pak+FV|iipaka" - rules: [mrFv, mrOm, mrSm] - - word: akalai - note: "akalai" - parses: - - signature: "SM+V_kala+FV|akalai" - rules: [mrFv, mrSm] - - word: aikalai - note: "aikalai" - parses: - - signature: "SM+OM+V_kala+FV|aikalai" - rules: [mrFv, mrOm, mrSm] - - word: apakai - note: "apakai" - parses: - - signature: "SM+V_paka+FV|apakai" - rules: [mrFv, mrSm] - - word: aipakai - note: "aipakai" - parses: - - signature: "SM+OM+V_paka+FV|aipakai" - rules: [mrFv, mrOm, mrSm] - - word: uduma - note: "uduma" - parses: - - signature: "SM+V_dum+FV|uduma" - rules: [mrFv, mrSm] - - word: uaduma - note: "uaduma" - parses: - - signature: "SM+OM+V_dum+FV|uaduma" - rules: [mrFv, mrOm, mrSm] - - word: umala - note: "umala" - parses: - - signature: "SM+V_mal+FV|umala" - rules: [mrFv, mrSm] - - word: uamala - note: "uamala" - parses: - - signature: "SM+OM+V_mal+FV|uamala" - rules: [mrFv, mrOm, mrSm] - - word: idumai - note: "idumai" - parses: - - signature: "SM+V_duma+FV|idumai" - rules: [mrFv, mrSm] - - word: iudumai - note: "iudumai" - parses: - - signature: "SM+OM+V_duma+FV|iudumai" - rules: [mrFv, mrOm, mrSm] - - word: imalai - note: "imalai" - parses: - - signature: "SM+V_mala+FV|imalai" - rules: [mrFv, mrSm] - - word: iumalai - note: "iumalai" - parses: - - signature: "SM+OM+V_mala+FV|iumalai" - rules: [mrFv, mrOm, mrSm] diff --git a/conformance-stress/edge-cases/mpr-inflection-classes/grammar.xml b/conformance-stress/edge-cases/mpr-inflection-classes/grammar.xml deleted file mode 100644 index 128904854..000000000 --- a/conformance-stress/edge-cases/mpr-inflection-classes/grammar.xml +++ /dev/null @@ -1,294 +0,0 @@ - - - - - StressMprInflectionClasses - n - - Decl1 - Decl2 - Decl3 - Decl4 - Decl5 - ThemeA - ThemeB - Declension - Theme - - - Main - - a - e - i - o - u - l - m - n - r - s - t - k - p - d - - - Any - - - S - - - der - - - - ti - - - - ta - - - - te - - - - ti - - - - to - - - DER - - - pl - - - - ar - - - - or - - - - ar - - - - or - - - - er - - - PL - - - nom - - - - a - - - - o - - - - s - - - - us - - - - e - - - - ak - - - NOM - - - gen - - - - is - - - - i - - - - is - - - - us - - - - es - - - GEN - - - dat - - - - ai - - - - o - - - - i - - - - ui - - - - is - - - - um - - - DAT - - - - - nounTemplate - derSlot - plSlot - caseSlot - - - - - tel - R_tel - tel - - - mur - R_mur - mur - - - kasp - R_kasp - kasp - - - lup - R_lup - lup - - - tela - R_tela - tela - - - mura - R_mura - mura - - - kas - R_kas - kas - - - lupo - R_lupo - lupo - - - nis - R_nis - nis - - - pat - R_pat - pat - - - ron - R_ron - ron - - - dom - R_dom - dom - - - nisu - R_nisu - nisu - - - pati - R_pati - pati - - - rona - R_rona - rona - - - domi - R_domi - domi - - - sim - R_sim - sim - - - nor - R_nor - nor - - - kad - R_kad - kad - - - lut - R_lut - lut - - - - - - diff --git a/conformance-stress/edge-cases/mpr-inflection-classes/words.yaml b/conformance-stress/edge-cases/mpr-inflection-classes/words.yaml deleted file mode 100644 index df225862b..000000000 --- a/conformance-stress/edge-cases/mpr-inflection-classes/words.yaml +++ /dev/null @@ -1,306 +0,0 @@ -# kind: stress (timing and optimization parity fixture, not conformance; see conformance-stress/README.md) -# Stress fixture for trail MPR replay: five declension classes carried as one MPR group, 20 noun roots -# (four per class, stems overlapping in shape across classes), and case/number suffixes with one allomorph -# per class, each gated by requiredMPRFeatures. Endings are homophonous across classes and cases, so most -# analyses of a surface form pick a suffix allomorph of the wrong class and die in synthesis on the MPR check. -# The DAT rule has one allomorph gated by excludedMPRFeatures. The DER slot outputs features of an Overwrite -# group (Theme), which also feeds the NOM "ak" allomorph. Expected parses were derived by hand from the -# ending tables in grammar.xml (root + optional DER + optional PL + one case ending, class-gated) and -# confirmed against the engine. -language: StressMprInflectionClasses -inspired_by: ["Indo-European declension classes (Latin, Russian style); synthetic, not modeling a real language"] -sources: - - "research harness stress fixture; no external source" -requires: [] -fieldworks_producible: false -fieldworks_producible_notes: "research stress fixture; not authored through FieldWorks" -budget_ms: 15000 -words: - - word: telis - note: "telis" - parses: - - signature: "R_tel+GEN|telis" - rules: [mrGen] - - word: muris - note: "muris" - parses: - - signature: "R_mur+GEN|muris" - rules: [mrGen] - - word: kaspis - note: "kaspis" - parses: - - signature: "R_kasp+GEN|kaspis" - rules: [mrGen] - - word: lupis - note: "lupis" - parses: - - signature: "R_lup+GEN|lupis" - rules: [mrGen] - - word: telai - note: "telai" - parses: - - signature: "R_tel+DAT|telai" - rules: [mrDat] - - signature: "R_tela+GEN|telai" - rules: [mrGen] - - word: murai - note: "murai" - parses: - - signature: "R_mur+DAT|murai" - rules: [mrDat] - - signature: "R_mura+GEN|murai" - rules: [mrGen] - - word: kasi - note: "kasi" - parses: - - signature: "R_kas+GEN|kasi" - rules: [mrGen] - - word: lupoi - note: "lupoi" - parses: - - signature: "R_lupo+GEN|lupoi" - rules: [mrGen] - - word: nisis - note: "nisis" - parses: - - signature: "R_nis+GEN|nisis" - rules: [mrGen] - - word: patis - note: "patis" - parses: - - signature: "R_pat+GEN|patis" - rules: [mrGen] - - word: ronis - note: "ronis" - parses: - - signature: "R_ron+GEN|ronis" - rules: [mrGen] - - word: domis - note: "domis" - parses: - - signature: "R_dom+GEN|domis" - rules: [mrGen] - - word: nisuus - note: "nisuus" - parses: - - signature: "R_nisu+GEN|nisuus" - rules: [mrGen] - - signature: "R_nisu+NOM|nisuus" - rules: [mrNom] - - word: patius - note: "patius" - parses: - - signature: "R_pati+GEN|patius" - rules: [mrGen] - - signature: "R_pati+NOM|patius" - rules: [mrNom] - - word: ronaus - note: "ronaus" - parses: - - signature: "R_rona+GEN|ronaus" - rules: [mrGen] - - signature: "R_rona+NOM|ronaus" - rules: [mrNom] - - word: domius - note: "domius" - parses: - - signature: "R_domi+GEN|domius" - rules: [mrGen] - - signature: "R_domi+NOM|domius" - rules: [mrNom] - - word: simes - note: "simes" - parses: - - signature: "R_sim+GEN|simes" - rules: [mrGen] - - word: nores - note: "nores" - parses: - - signature: "R_nor+GEN|nores" - rules: [mrGen] - - word: kades - note: "kades" - parses: - - signature: "R_kad+GEN|kades" - rules: [mrGen] - - word: lutes - note: "lutes" - parses: - - signature: "R_lut+GEN|lutes" - rules: [mrGen] - - word: telarai - note: "telarai" - parses: - - signature: "R_tel+PL+DAT|telarai" - rules: [mrPl, mrDat] - - word: murarai - note: "murarai" - parses: - - signature: "R_mur+PL+DAT|murarai" - rules: [mrPl, mrDat] - - word: kasparai - note: "kasparai" - parses: - - signature: "R_kasp+PL+DAT|kasparai" - rules: [mrPl, mrDat] - - word: luparai - note: "luparai" - parses: - - signature: "R_lup+PL+DAT|luparai" - rules: [mrPl, mrDat] - - word: telaoro - note: "telaoro" - parses: - - signature: "R_tela+PL+DAT|telaoro" - rules: [mrPl, mrDat] - - signature: "R_tela+PL+NOM|telaoro" - rules: [mrPl, mrNom] - - word: muraoro - note: "muraoro" - parses: - - signature: "R_mura+PL+DAT|muraoro" - rules: [mrPl, mrDat] - - signature: "R_mura+PL+NOM|muraoro" - rules: [mrPl, mrNom] - - word: kasoro - note: "kasoro" - parses: - - signature: "R_kas+PL+DAT|kasoro" - rules: [mrPl, mrDat] - - signature: "R_kas+PL+NOM|kasoro" - rules: [mrPl, mrNom] - - word: lupooro - note: "lupooro" - parses: - - signature: "R_lupo+PL+DAT|lupooro" - rules: [mrPl, mrDat] - - signature: "R_lupo+PL+NOM|lupooro" - rules: [mrPl, mrNom] - - word: nisari - note: "nisari" - parses: - - signature: "R_nis+PL+DAT|nisari" - rules: [mrPl, mrDat] - - word: patari - note: "patari" - parses: - - signature: "R_pat+PL+DAT|patari" - rules: [mrPl, mrDat] - - word: ronari - note: "ronari" - parses: - - signature: "R_ron+PL+DAT|ronari" - rules: [mrPl, mrDat] - - word: domari - note: "domari" - parses: - - signature: "R_dom+PL+DAT|domari" - rules: [mrPl, mrDat] - - word: nisuorui - note: "nisuorui" - parses: - - signature: "R_nisu+PL+DAT|nisuorui" - rules: [mrPl, mrDat] - - word: patiorui - note: "patiorui" - parses: - - signature: "R_pati+PL+DAT|patiorui" - rules: [mrPl, mrDat] - - word: ronaorui - note: "ronaorui" - parses: - - signature: "R_rona+PL+DAT|ronaorui" - rules: [mrPl, mrDat] - - word: domiorui - note: "domiorui" - parses: - - signature: "R_domi+PL+DAT|domiorui" - rules: [mrPl, mrDat] - - word: simeris - note: "simeris" - parses: - - signature: "R_sim+PL+DAT|simeris" - rules: [mrPl, mrDat] - - word: noreris - note: "noreris" - parses: - - signature: "R_nor+PL+DAT|noreris" - rules: [mrPl, mrDat] - - word: kaderis - note: "kaderis" - parses: - - signature: "R_kad+PL+DAT|kaderis" - rules: [mrPl, mrDat] - - word: luteris - note: "luteris" - parses: - - signature: "R_lut+PL+DAT|luteris" - rules: [mrPl, mrDat] - - word: teltia - note: "teltia" - parses: - - signature: "R_tel+DER+NOM|teltia" - rules: [mrDer, mrNom] - - word: murtia - note: "murtia" - parses: - - signature: "R_mur+DER+NOM|murtia" - rules: [mrDer, mrNom] - - word: kasptia - note: "kasptia" - parses: - - signature: "R_kasp+DER+NOM|kasptia" - rules: [mrDer, mrNom] - - word: luptia - note: "luptia" - parses: - - signature: "R_lup+DER+NOM|luptia" - rules: [mrDer, mrNom] - - word: telatao - note: "telatao" - parses: - - signature: "R_tela+DER+DAT|telatao" - rules: [mrDer, mrDat] - - signature: "R_tela+DER+NOM|telatao" - rules: [mrDer, mrNom] - - word: muratao - note: "muratao" - parses: - - signature: "R_mura+DER+DAT|muratao" - rules: [mrDer, mrDat] - - signature: "R_mura+DER+NOM|muratao" - rules: [mrDer, mrNom] - - word: kastao - note: "kastao" - parses: - - signature: "R_kas+DER+DAT|kastao" - rules: [mrDer, mrDat] - - signature: "R_kas+DER+NOM|kastao" - rules: [mrDer, mrNom] - - word: lupotao - note: "lupotao" - parses: - - signature: "R_lupo+DER+DAT|lupotao" - rules: [mrDer, mrDat] - - signature: "R_lupo+DER+NOM|lupotao" - rules: [mrDer, mrNom] - - word: nistes - note: "nistes" - parses: - - signature: "R_nis+DER+NOM|nistes" - rules: [mrDer, mrNom] - - word: pattes - note: "pattes" - parses: - - signature: "R_pat+DER+NOM|pattes" - rules: [mrDer, mrNom] - - word: rontes - note: "rontes" - parses: - - signature: "R_ron+DER+NOM|rontes" - rules: [mrDer, mrNom] - - word: domtes - note: "domtes" - parses: - - signature: "R_dom+DER+NOM|domtes" - rules: [mrDer, mrNom] From 19924859bedc29e391147989ee361db2f24d9342 Mon Sep 17 00:00:00 2001 From: John Lambert Date: Sun, 1 Nov 2026 01:38:48 -0400 Subject: [PATCH 09/14] The four slot-template stress grammars no longer set outputPartOfSpeech on slot rules, which FieldWorks never writes, and their parses are unchanged. Co-Authored-By: Claude Sonnet 5.5 --- .../edge-cases/bantu-tam-fusion/grammar.xml | 484 +++++++++--------- .../bantu-tam-templates-shared/grammar.xml | 314 ++++++------ .../bantu-tam-templates/grammar.xml | 484 +++++++++--------- .../truncating-slot-chain/grammar.xml | 116 ++--- 4 files changed, 699 insertions(+), 699 deletions(-) diff --git a/conformance-stress/edge-cases/bantu-tam-fusion/grammar.xml b/conformance-stress/edge-cases/bantu-tam-fusion/grammar.xml index 98eac8bb0..bd8d45530 100644 --- a/conformance-stress/edge-cases/bantu-tam-fusion/grammar.xml +++ b/conformance-stress/edge-cases/bantu-tam-fusion/grammar.xml @@ -43,248 +43,248 @@ 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 +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 diff --git a/conformance-stress/edge-cases/bantu-tam-templates-shared/grammar.xml b/conformance-stress/edge-cases/bantu-tam-templates-shared/grammar.xml index 8d480e395..78140a3b0 100644 --- a/conformance-stress/edge-cases/bantu-tam-templates-shared/grammar.xml +++ b/conformance-stress/edge-cases/bantu-tam-templates-shared/grammar.xml @@ -43,163 +43,163 @@ 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 +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 diff --git a/conformance-stress/edge-cases/bantu-tam-templates/grammar.xml b/conformance-stress/edge-cases/bantu-tam-templates/grammar.xml index 54b102162..5caafe57d 100644 --- a/conformance-stress/edge-cases/bantu-tam-templates/grammar.xml +++ b/conformance-stress/edge-cases/bantu-tam-templates/grammar.xml @@ -43,248 +43,248 @@ 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 +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 diff --git a/conformance-stress/edge-cases/truncating-slot-chain/grammar.xml b/conformance-stress/edge-cases/truncating-slot-chain/grammar.xml index 6704e29a0..d0619395f 100644 --- a/conformance-stress/edge-cases/truncating-slot-chain/grammar.xml +++ b/conformance-stress/edge-cases/truncating-slot-chain/grammar.xml @@ -43,64 +43,64 @@ 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 +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 From de2ec4b5c1af861483384d195f5e37d5a3f9e6f7 Mon Sep 17 00:00:00 2001 From: John Lambert Date: Sun, 1 Nov 2026 01:38:50 -0400 Subject: [PATCH 10/14] Eight stress fixtures that a FieldWorks project can produce are now marked fieldworks_producible true. Co-Authored-By: Claude Sonnet 5.5 --- conformance-stress/edge-cases/bantu-tam-fusion/words.yaml | 3 +-- .../edge-cases/bantu-tam-templates-shared/words.yaml | 3 +-- conformance-stress/edge-cases/bantu-tam-templates/words.yaml | 3 +-- .../edge-cases/early-lexicon-agglutinative/words.yaml | 3 +-- .../edge-cases/env-austronesian-nasal-prefix/words.yaml | 1 + conformance-stress/edge-cases/env-bantu-concord/words.yaml | 1 + conformance-stress/edge-cases/env-zero-allomorphs/words.yaml | 1 + conformance-stress/edge-cases/truncating-slot-chain/words.yaml | 3 +-- 8 files changed, 8 insertions(+), 10 deletions(-) diff --git a/conformance-stress/edge-cases/bantu-tam-fusion/words.yaml b/conformance-stress/edge-cases/bantu-tam-fusion/words.yaml index 64b4255ee..a09c19ca7 100644 --- a/conformance-stress/edge-cases/bantu-tam-fusion/words.yaml +++ b/conformance-stress/edge-cases/bantu-tam-fusion/words.yaml @@ -2,8 +2,7 @@ language: StressBantuTamFusion sources: [] requires: [] -fieldworks_producible: false -fieldworks_producible_notes: "research stress fixture; not authored through FieldWorks" +fieldworks_producible: true budget_ms: 60000 words: - word: wnonemileila diff --git a/conformance-stress/edge-cases/bantu-tam-templates-shared/words.yaml b/conformance-stress/edge-cases/bantu-tam-templates-shared/words.yaml index 42ac12f26..b184fe269 100644 --- a/conformance-stress/edge-cases/bantu-tam-templates-shared/words.yaml +++ b/conformance-stress/edge-cases/bantu-tam-templates-shared/words.yaml @@ -2,8 +2,7 @@ language: StressBantuTamTemplatesShared sources: [] requires: [] -fieldworks_producible: false -fieldworks_producible_notes: "research stress fixture; not authored through FieldWorks" +fieldworks_producible: true budget_ms: 60000 words: - word: horayeedagola diff --git a/conformance-stress/edge-cases/bantu-tam-templates/words.yaml b/conformance-stress/edge-cases/bantu-tam-templates/words.yaml index 4f54fd557..4d528f3f5 100644 --- a/conformance-stress/edge-cases/bantu-tam-templates/words.yaml +++ b/conformance-stress/edge-cases/bantu-tam-templates/words.yaml @@ -2,8 +2,7 @@ language: StressBantuTamTemplates sources: [] requires: [] -fieldworks_producible: false -fieldworks_producible_notes: "research stress fixture; not authored through FieldWorks" +fieldworks_producible: true budget_ms: 60000 words: - word: horayeedagola diff --git a/conformance-stress/edge-cases/early-lexicon-agglutinative/words.yaml b/conformance-stress/edge-cases/early-lexicon-agglutinative/words.yaml index 948ec404e..c1d1d69d3 100644 --- a/conformance-stress/edge-cases/early-lexicon-agglutinative/words.yaml +++ b/conformance-stress/edge-cases/early-lexicon-agglutinative/words.yaml @@ -2,8 +2,7 @@ language: StressEarlyLexiconAgglutinative sources: [] requires: [phonology] -fieldworks_producible: false -fieldworks_producible_notes: "research stress fixture; not authored through FieldWorks" +fieldworks_producible: true budget_ms: 60000 words: - word: polsi diff --git a/conformance-stress/edge-cases/env-austronesian-nasal-prefix/words.yaml b/conformance-stress/edge-cases/env-austronesian-nasal-prefix/words.yaml index af01c19b5..6afe190af 100644 --- a/conformance-stress/edge-cases/env-austronesian-nasal-prefix/words.yaml +++ b/conformance-stress/edge-cases/env-austronesian-nasal-prefix/words.yaml @@ -3,6 +3,7 @@ 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 diff --git a/conformance-stress/edge-cases/env-bantu-concord/words.yaml b/conformance-stress/edge-cases/env-bantu-concord/words.yaml index 0dfa3203a..eb658f06f 100644 --- a/conformance-stress/edge-cases/env-bantu-concord/words.yaml +++ b/conformance-stress/edge-cases/env-bantu-concord/words.yaml @@ -3,6 +3,7 @@ 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 diff --git a/conformance-stress/edge-cases/env-zero-allomorphs/words.yaml b/conformance-stress/edge-cases/env-zero-allomorphs/words.yaml index cf2191cbb..3eef14a59 100644 --- a/conformance-stress/edge-cases/env-zero-allomorphs/words.yaml +++ b/conformance-stress/edge-cases/env-zero-allomorphs/words.yaml @@ -3,6 +3,7 @@ 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. diff --git a/conformance-stress/edge-cases/truncating-slot-chain/words.yaml b/conformance-stress/edge-cases/truncating-slot-chain/words.yaml index 84989dc04..f301c2df1 100644 --- a/conformance-stress/edge-cases/truncating-slot-chain/words.yaml +++ b/conformance-stress/edge-cases/truncating-slot-chain/words.yaml @@ -2,8 +2,7 @@ language: StressTruncatingSlotChain sources: [] requires: [] -fieldworks_producible: false -fieldworks_producible_notes: "research stress fixture; not authored through FieldWorks" +fieldworks_producible: true budget_ms: 60000 words: - word: tokorklsu From 0b80659c4bc18b6c9785e72c3c6733568f624893 Mon Sep 17 00:00:00 2001 From: John Lambert Date: Sun, 1 Nov 2026 01:39:25 -0400 Subject: [PATCH 11/14] The stress fixture headers now say the expected parses are engine output and no longer name generator scripts or switches that are not in the tree. Co-Authored-By: Claude Sonnet 5.5 --- .../edge-cases/athabaskan-prefix-complex/grammar.xml | 2 +- .../edge-cases/athabaskan-prefix-complex/words.yaml | 6 +++--- .../edge-cases/bantu-extension-chain/grammar.xml | 2 +- .../edge-cases/bantu-extension-chain/words.yaml | 5 ++--- .../edge-cases/bantu-extension-required-slot/words.yaml | 4 ++-- .../edge-cases/derivation-chain-homophone-roots/words.yaml | 4 ++-- .../edge-cases/excluded-cooccurrence/grammar.xml | 2 +- .../edge-cases/excluded-cooccurrence/words.yaml | 6 +++--- .../edge-cases/prefix-class-density/words.yaml | 3 ++- .../edge-cases/required-template-slot/words.yaml | 4 ++-- 10 files changed, 19 insertions(+), 19 deletions(-) diff --git a/conformance-stress/edge-cases/athabaskan-prefix-complex/grammar.xml b/conformance-stress/edge-cases/athabaskan-prefix-complex/grammar.xml index 80f340195..e3f6894b2 100644 --- a/conformance-stress/edge-cases/athabaskan-prefix-complex/grammar.xml +++ b/conformance-stress/edge-cases/athabaskan-prefix-complex/grammar.xml @@ -4,7 +4,7 @@ StressAthabaskanPrefixComplex