The nouns that say -ni #
[Ait26] separates two stem alternations in Telugu nouns. The strong
alternation (il-lu in-ṭi 'house') is contextual allomorphy of the
nominalizer n conditioned by [ACC], the feature every nonnominative case
contains under [Cah09]'s containment hierarchy ([McF18]). The
weak alternation (samudr-am samudr-āni 'ocean') only looks like case
allomorphy: it violates *ABA, is triggered by agreement suffixes in
nominative contexts, and reads the weight of the next syllable inside the
prosodic word. It is instead the phonology of a single underlying
-am-ni, derived in Stratal OT ([Kip00]) from prespecified stress
on the singular suffix -ni.
Main definitions #
strongItems,strongN: the Vocabulary Items of (4) over root lists and [ACC], and the n exponent they insert.Following,weakN: what follows n and the long/short generalization of §3.2 — long iff the next syllable is light and inside the prosodic word.numItems: the singular suffix -ni as an exponent of Num conditioned by the preceding -am ((40)).stemRanking,wordNomRanking,wordDatRanking,phraseRanking: the tableaux of (49), (62), (59), and (66).
Main results #
strong_rows,weak_rows: the items and the generalization reproduce every paradigm cell of the data pool.weak_not_case_function: no assignment of exponents to cases fits the weak rows — the nominative carries both forms ((8), (16)).weak_violates_aba,strong_contiguous: the paradigm shapes against containment.wordNom_optimal,wordDat_optimal: Word-level phonology deletes word-final stressed -ni and repairs /mn/ by compensatory lengthening.distZero_demoted,alignR_demoted: the Word-to-Phrase rerankings of (68).
Implementation notes #
The Stem-level sandhi of the -em and -ām subclasses ((52), (55)) and the quantifier-postposing tableaux ((63), (67)) are not formalized. Tableau violation marks follow the paper's prose where the tableau images are not in the text layer.
Case #
The Telugu cases of the paradigms, with the postpositions as P.
- nom : TeluguCase
- acc : TeluguCase
- gen : TeluguCase
- dat : TeluguCase
- p : TeluguCase
Instances For
Equations
- Aitha2026.instDecidableEqTeluguCase x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
- Aitha2026.instReprTeluguCase = { reprPrec := Aitha2026.instReprTeluguCase.repr }
Equations
- Aitha2026.instReprTeluguCase.repr Aitha2026.TeluguCase.nom prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Aitha2026.TeluguCase.nom")).group prec✝
- Aitha2026.instReprTeluguCase.repr Aitha2026.TeluguCase.acc prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Aitha2026.TeluguCase.acc")).group prec✝
- Aitha2026.instReprTeluguCase.repr Aitha2026.TeluguCase.gen prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Aitha2026.TeluguCase.gen")).group prec✝
- Aitha2026.instReprTeluguCase.repr Aitha2026.TeluguCase.dat prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Aitha2026.TeluguCase.dat")).group prec✝
- Aitha2026.instReprTeluguCase.repr Aitha2026.TeluguCase.p prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Aitha2026.TeluguCase.p")).group prec✝
Instances For
Equations
- Aitha2026.instFintypeTeluguCase = { elems := { val := ↑Aitha2026.TeluguCase.enumList, nodup := Aitha2026.TeluguCase.enumList_nodup }, complete := Aitha2026.instFintypeTeluguCase._proof_1 }
A nonnominative case contains [ACC] ((3), [Cah09]): the natural class of the oblique.
Equations
- c.IsNonnom = c.toCore.IsNonnominative
Instances For
Equations
- Aitha2026.TeluguCase.ofString "nom" = some Aitha2026.TeluguCase.nom
- Aitha2026.TeluguCase.ofString "acc" = some Aitha2026.TeluguCase.acc
- Aitha2026.TeluguCase.ofString "gen" = some Aitha2026.TeluguCase.gen
- Aitha2026.TeluguCase.ofString "dat" = some Aitha2026.TeluguCase.dat
- Aitha2026.TeluguCase.ofString "p" = some Aitha2026.TeluguCase.p
- Aitha2026.TeluguCase.ofString x✝ = none
Instances For
The strong alternation (§2) #
Equations
- Aitha2026.instDecidableEqRoot x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
- Aitha2026.instReprRoot = { reprPrec := Aitha2026.instReprRoot.repr }
Equations
- Aitha2026.instReprRoot.repr Aitha2026.Root.house prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Aitha2026.Root.house")).group prec✝
- Aitha2026.instReprRoot.repr Aitha2026.Root.bow prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Aitha2026.Root.bow")).group prec✝
- Aitha2026.instReprRoot.repr Aitha2026.Root.eye prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Aitha2026.Root.eye")).group prec✝
- Aitha2026.instReprRoot.repr Aitha2026.Root.tooth prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Aitha2026.Root.tooth")).group prec✝
- Aitha2026.instReprRoot.repr Aitha2026.Root.nest prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Aitha2026.Root.nest")).group prec✝
- Aitha2026.instReprRoot.repr Aitha2026.Root.stream prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Aitha2026.Root.stream")).group prec✝
- Aitha2026.instReprRoot.repr Aitha2026.Root.mouth prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Aitha2026.Root.mouth")).group prec✝
- Aitha2026.instReprRoot.repr Aitha2026.Root.plough prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Aitha2026.Root.plough")).group prec✝
- Aitha2026.instReprRoot.repr Aitha2026.Root.ghee prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Aitha2026.Root.ghee")).group prec✝
- Aitha2026.instReprRoot.repr Aitha2026.Root.well prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Aitha2026.Root.well")).group prec✝
- Aitha2026.instReprRoot.repr Aitha2026.Root.town prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Aitha2026.Root.town")).group prec✝
- Aitha2026.instReprRoot.repr Aitha2026.Root.husband prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Aitha2026.Root.husband")).group prec✝
Instances For
Equations
- Aitha2026.instFintypeRoot = { elems := { val := ↑Aitha2026.Root.enumList, nodup := Aitha2026.Root.enumList_nodup }, complete := Aitha2026.instFintypeRoot._proof_1 }
Equations
- Aitha2026.Root.ofString "house" = some Aitha2026.Root.house
- Aitha2026.Root.ofString "bow" = some Aitha2026.Root.bow
- Aitha2026.Root.ofString "eye" = some Aitha2026.Root.eye
- Aitha2026.Root.ofString "tooth" = some Aitha2026.Root.tooth
- Aitha2026.Root.ofString "nest" = some Aitha2026.Root.nest
- Aitha2026.Root.ofString "stream" = some Aitha2026.Root.stream
- Aitha2026.Root.ofString "mouth" = some Aitha2026.Root.mouth
- Aitha2026.Root.ofString "plough" = some Aitha2026.Root.plough
- Aitha2026.Root.ofString "ghee" = some Aitha2026.Root.ghee
- Aitha2026.Root.ofString "well" = some Aitha2026.Root.well
- Aitha2026.Root.ofString "town" = some Aitha2026.Root.town
- Aitha2026.Root.ofString "husband" = some Aitha2026.Root.husband
- Aitha2026.Root.ofString x✝ = none
Instances For
Equations
- Aitha2026.instDecidableEqFeature.decEq (Aitha2026.Feature.root a) (Aitha2026.Feature.root b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- Aitha2026.instDecidableEqFeature.decEq (Aitha2026.Feature.root r) Aitha2026.Feature.acc = isFalse ⋯
- Aitha2026.instDecidableEqFeature.decEq Aitha2026.Feature.acc (Aitha2026.Feature.root r) = isFalse ⋯
- Aitha2026.instDecidableEqFeature.decEq Aitha2026.Feature.acc Aitha2026.Feature.acc = isTrue ⋯
Instances For
Equations
- One or more equations did not get rendered due to their size.
- Aitha2026.instReprFeature.repr Aitha2026.Feature.acc prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Aitha2026.Feature.acc")).group prec✝
Instances For
Equations
- Aitha2026.instReprFeature = { reprPrec := Aitha2026.instReprFeature.repr }
The n head's bundle for root r in case c.
Equations
- Aitha2026.site r c = Aitha2026.Feature.root r :: if c.IsNonnom then [Aitha2026.Feature.acc] else []
Instances For
The items of one exponent: e next to each listed root, in the context
of [ACC] when acc.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The Vocabulary Items of (4) for the roots of (2): the nominative exponents next to their roots, and the oblique exponents next to the same roots and [ACC] — one -ṭi entry spanning the -ru, -lu, -nu, -ḍu, and -li classes, -ti for the -yi class, -i for the -u class.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The exponent of n for root r in case c.
Equations
Instances For
The nominative–nonnominative cut: every nonnominative case takes the accusative's exponent, by the Elsewhere Condition over [ACC].
The weak alternation (§3) #
What follows the n exponent: its membership in the noun's prosodic word and the weight of its initial syllable (§3.2).
- internal : Bool
- weight : Prosody.Syllable.Weight
Instances For
Equations
- Aitha2026.instDecidableEqFollowing.decEq { internal := a, weight := a_1 } { internal := b, weight := b_1 } = if h : a = b then h ▸ if h : a_1 = b_1 then h ▸ isTrue ⋯ else isFalse ⋯ else isFalse ⋯
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Aitha2026.instReprFollowing = { reprPrec := Aitha2026.instReprFollowing.repr }
The long form is triggered iff the next syllable is light and inside the prosodic word; postpositions with light initial syllables ((18)) and the heavy-initial postposed quantifier ((17)) do not trigger it.
Equations
- Aitha2026.TriggersLong f = ∃ m ∈ f, m.internal = true ∧ m.weight = Prosody.Syllable.Weight.light
Instances For
Equations
- Aitha2026.instDecidableTriggersLong f = id inferInstance
The weak n exponent: -āni before a word-internal light syllable, -am otherwise.
Equations
- Aitha2026.weakN f = if Aitha2026.TriggersLong f then "āni" else "am"
Instances For
The data pool #
A paradigm cell of the pool: the root class, the case if any, what follows n, and the n exponent.
- noun : String
- strongRoot : Option Root
- plural : Bool
- case : Option TeluguCase
- following : Option Following
- n : String
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Aitha2026.instReprCell = { reprPrec := Aitha2026.instReprCell.repr }
Equations
- One or more equations did not get rendered due to their size.
Instances For
The cell an example records, from its paperFeatures.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The cells of the pool.
Equations
- Aitha2026.cells = List.filterMap Aitha2026.Cell.ofExample Aitha2026.Examples.all
Instances For
The strong cells, with their roots.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The singular weak cells.
Equations
- Aitha2026.weakCells = List.filter (fun (c : Aitha2026.Cell) => decide (c.strongRoot = none ∧ ¬c.plural = true)) Aitha2026.cells
Instances For
The strong paradigm: (4) inserts the attested exponent in every strong cell of (1), (2), and fn. 6 — the agreement suffix, bearing no [ACC], leaves the nominative form.
The nominative short form of (8).
Equations
- Aitha2026.oceanNom = { noun := "samudram", strongRoot := none, plural := false, case := some Aitha2026.TeluguCase.nom, following := none, n := "am" }
Instances For
The long form under the 1SG agreement suffix, in a nominative predicate nominal ((13)).
Equations
- One or more equations did not get rendered due to their size.
Instances For
Not case allomorphy: no assignment of an n exponent to each case fits the weak cells, since the nominative carries both -am and -āni ((8) with (13)–(16)).
Paradigm shapes against containment (§3.1) #
The suffix shapes of the case paradigms (1) and (8): null nominative and genitive, light -ni/-ki, and the heavy postposition -lō.
Equations
- Aitha2026.caseSuffix Aitha2026.TeluguCase.nom = none
- Aitha2026.caseSuffix Aitha2026.TeluguCase.acc = some { internal := true, weight := Prosody.Syllable.Weight.light }
- Aitha2026.caseSuffix Aitha2026.TeluguCase.gen = none
- Aitha2026.caseSuffix Aitha2026.TeluguCase.dat = some { internal := true, weight := Prosody.Syllable.Weight.light }
- Aitha2026.caseSuffix Aitha2026.TeluguCase.p = some { internal := false, weight := Prosody.Syllable.Weight.heavy }
Instances For
The weak paradigm as an allomorphy pattern, short 0 and long 1.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The strong paradigm of illu as an allomorphy pattern, nominative 0 and oblique 1.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The weak ABAB paradigm violates *ABA: the nominative form resurfaces in the genitive, which contains [ACC] ([Cah09]).
The strong ABB paradigm is contiguous on the containment hierarchy.
The singular suffix (§4.2) #
Equations
- Aitha2026.instDecidableEqNumContext x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
- Aitha2026.instReprNumContext = { reprPrec := Aitha2026.instReprNumContext.repr }
Equations
- One or more equations did not get rendered due to their size.
Instances For
The Vocabulary Items of Num in the singular ((40)): -ni after -am, null elsewhere — conditioned inward, as root-out insertion allows.
Equations
Instances For
The singular exponent of Num after an n exponent.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Weak nouns take -ni, strong nouns the null singular: the underlying weak singular is samudr-am-ni-K ((41)).
Stem-level phonology (§5.1) #
The metrical parses of samudr-am in (49): final heavy syllable unparsed, three degenerate feet, or two bimoraic trochees.
- unparsedFinal : StemCandidate
- degenerate : StemCandidate
- trochees : StemCandidate
Instances For
Equations
- Aitha2026.instDecidableEqStemCandidate x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Aitha2026.instReprStemCandidate = { reprPrec := Aitha2026.instReprStemCandidate.repr }
Equations
- One or more equations did not get rendered due to their size.
- Aitha2026.StemCandidate.unparsedFinal.toFooting = [Sum.inl { syllables := [Prosody.Syllable.Weight.light, Prosody.Syllable.Weight.light], head := 0 }, Sum.inr Prosody.Syllable.Weight.heavy]
Instances For
ALL-FT-LEFT ((48)): per foot, the syllables between the left edge of the domain and the foot.
Equations
Instances For
Equations
- Aitha2026.allFtLeftOf.go [] a✝ = 0
- Aitha2026.allFtLeftOf.go (Sum.inl f :: rest) a✝ = a✝ + Aitha2026.allFtLeftOf.go rest (a✝ + f.syllables.length)
- Aitha2026.allFtLeftOf.go (Sum.inr val :: rest) a✝ = Aitha2026.allFtLeftOf.go rest (a✝ + 1)
Instances For
FT-BIN(μ) ((46)).
Equations
- Aitha2026.ftBin c = (List.filter (fun (f : Prosody.Foot ℕ) => decide (Prosody.Foot.moraCount id f ≠ 2)) c.toFooting.feet).length
Instances For
Equations
Instances For
FT-BIN ≫ PARSE-SYL ≫ ALL-FT-LEFT.
Instances For
(49): the Stem parses as two moraic trochees, (ˈsa.mu)(ˌdram).
Word-level phonology (§5.2) #
Equations
- Aitha2026.instDecidableEqCon x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
- Aitha2026.instReprCon.repr Aitha2026.Con.distZero prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Aitha2026.Con.distZero")).group prec✝
- Aitha2026.instReprCon.repr Aitha2026.Con.alignR prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Aitha2026.Con.alignR")).group prec✝
- Aitha2026.instReprCon.repr Aitha2026.Con.identStress prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Aitha2026.Con.identStress")).group prec✝
- Aitha2026.instReprCon.repr Aitha2026.Con.ftBin prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Aitha2026.Con.ftBin")).group prec✝
- Aitha2026.instReprCon.repr Aitha2026.Con.maxMora prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Aitha2026.Con.maxMora")).group prec✝
- Aitha2026.instReprCon.repr Aitha2026.Con.max prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Aitha2026.Con.max")).group prec✝
- Aitha2026.instReprCon.repr Aitha2026.Con.identLength prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Aitha2026.Con.identLength")).group prec✝
- Aitha2026.instReprCon.repr Aitha2026.Con.complexCoda prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Aitha2026.Con.complexCoda")).group prec✝
Instances For
Equations
- Aitha2026.instReprCon = { reprPrec := Aitha2026.instReprCon.repr }
The Word-level candidates for nominative samudr-am-ní ((62)): destress -ni; foot it alone; delete /i/ into a coda cluster; delete /i/ and /m/; or delete /ni/.
- destress : WordCandNom
- degenerateFoot : WordCandNom
- deleteI : WordCandNom
- deleteIM : WordCandNom
- deleteNi : WordCandNom
Instances For
Equations
- Aitha2026.instDecidableEqWordCandNom x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
- Aitha2026.instReprWordCandNom = { reprPrec := Aitha2026.instReprWordCandNom.repr }
Equations
- One or more equations did not get rendered due to their size.
Instances For
(62): IDENT-STRESS, FT-BIN, *COMPLEXCODA, ALIGN-R ≫ MAX-μ, MAX.
Equations
- One or more equations did not get rendered due to their size.
Instances For
(62): word-final stressed -ni, unable to head a binary foot, is deleted — the short form samudram.
The Word-level candidates for dative samudr-am-ní-ki ((59)): keep /mn/; delete /n/ or /m/ with the mora; delete /m/ or /n/ with compensatory lengthening.
- faithful : WordCandDat
- deleteN : WordCandDat
- deleteM : WordCandDat
- deleteMLengthen : WordCandDat
- deleteNLengthen : WordCandDat
Instances For
Equations
- Aitha2026.instDecidableEqWordCandDat x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Aitha2026.instReprWordCandDat = { reprPrec := Aitha2026.instReprWordCandDat.repr }
(59): *DIST-0, MAX-μ ≫ ALIGN-R ≫ MAX, IDENT-LENGTH.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
(59): the /mn/ contact is repaired by deleting /m/ and lengthening /a/ — the long form samudrāniki.
The n exponent each Word-level output leaves.
Equations
Instances For
Equations
Instances For
The two Word-level winners are the two forms of the generalization
weakN: the same underlying -am-ni surfaces short before nothing and long
before a word-internal light syllable.
Phrase-level phonology (§5.3) #
The Phrase-level candidates for samudram nunci 'from the ocean' ((66)): delete /m/ with or without lengthening, delete the postposition's /n/, or keep the /mn/ contact.
- deleteMLengthen : PhraseCand
- deleteM : PhraseCand
- deleteN : PhraseCand
- faithful : PhraseCand
Instances For
Equations
- Aitha2026.instDecidableEqPhraseCand x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Aitha2026.instReprPhraseCand = { reprPrec := Aitha2026.instReprPhraseCand.repr }
(66), (68): at the Phrase level MAX outranks *DIST-0 and ALIGN-R, and segmental faithfulness outranks prosodic faithfulness.
Equations
- One or more equations did not get rendered due to their size.
Instances For
(66): across the postposition boundary the /mn/ contact is kept.
*DIST-0 is demoted below MAX from Word to Phrase ((68)).
ALIGN-R is demoted below MAX from Word to Phrase ((68)).