Aksënova, Rawski, Graf & Heinz 2024: the computational power of harmonic forms #
Vowel-harmony phonotactics are tier-based strictly 2-local: project the harmonizing segments on a tier and ban the disagreeing bigrams. Lokaa ATR harmony needs the tier because no strictly local window bounds the transparent material; Kirghiz, Buryat, and Yakut double harmonies each fit on a single tier, with blocking (Buryat's high vowels) and configuration-dependent blocking (Yakut's low vowels) both mere bigram bans; Kikongo's vowel and nasal harmonies need two tiers, which are disjoint. Of the four relations two tier alphabets can stand in, only same, embedded, and disjoint are attested.
This file states each printed grammar (Tables 34.2–34.7) as a TierStrictlyLocalGrammar.ofForbiddenPairs
over the paper's tier alphabet, reads the paper's forms into that alphabet, and checks the
forms and their starred counterparts against it (lokaa_rows, kirghiz_rows, buryat_rows,
yakut_rows, kikongo_rows). The Pattern
theorems say which grammars segment-level participation reproduces: Kirghiz and Buryat are
conjunctions of two patterns (kirghiz_two_patterns, buryat_expressible), Buryat's blocking
is asymmetric (buryat_not_symmetric), and Yakut's is left open. tierRelation computes the
§34.3.4 typology (kikongo_disjoint_tiers).
References #
- [aksenova-rawski-graf-heinz-2024]
The tier of a printed form: its symbols read into the tier alphabet, everything else — consonants, transparent vowels, length and tone marks — dropped.
Equations
- AksenovaEtAl2024.tierOf ofChar s = List.filterMap ofChar s.toList
Instances For
Lokaa (Table 34.2): ATR agreement on the tier of non-high vowels #
Equations
- AksenovaEtAl2024.instDecidableEqLokaaV 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.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- AksenovaEtAl2024.instReprLokaaV = { reprPrec := AksenovaEtAl2024.instReprLokaaV.repr }
Equations
- AksenovaEtAl2024.LokaaV.e.tense = true
- AksenovaEtAl2024.LokaaV.o.tense = true
- AksenovaEtAl2024.LokaaV.schwa.tense = true
- AksenovaEtAl2024.LokaaV.eh.tense = false
- AksenovaEtAl2024.LokaaV.oh.tense = false
- AksenovaEtAl2024.LokaaV.a.tense = false
Instances For
Akinlabi's transcription: tone is a precomposed accent on e, o, a and a combining mark after ɛ, ɔ, ə; high vowels are off the tier.
Equations
- AksenovaEtAl2024.LokaaV.ofChar 'ɛ' = some AksenovaEtAl2024.LokaaV.eh
- AksenovaEtAl2024.LokaaV.ofChar 'ɔ' = some AksenovaEtAl2024.LokaaV.oh
- AksenovaEtAl2024.LokaaV.ofChar 'ə' = some AksenovaEtAl2024.LokaaV.schwa
- AksenovaEtAl2024.LokaaV.ofChar 'e' = some AksenovaEtAl2024.LokaaV.e
- AksenovaEtAl2024.LokaaV.ofChar 'è' = some AksenovaEtAl2024.LokaaV.e
- AksenovaEtAl2024.LokaaV.ofChar 'é' = some AksenovaEtAl2024.LokaaV.e
- AksenovaEtAl2024.LokaaV.ofChar 'o' = some AksenovaEtAl2024.LokaaV.o
- AksenovaEtAl2024.LokaaV.ofChar 'ò' = some AksenovaEtAl2024.LokaaV.o
- AksenovaEtAl2024.LokaaV.ofChar 'ó' = some AksenovaEtAl2024.LokaaV.o
- AksenovaEtAl2024.LokaaV.ofChar 'a' = some AksenovaEtAl2024.LokaaV.a
- AksenovaEtAl2024.LokaaV.ofChar 'à' = some AksenovaEtAl2024.LokaaV.a
- AksenovaEtAl2024.LokaaV.ofChar 'á' = some AksenovaEtAl2024.LokaaV.a
- AksenovaEtAl2024.LokaaV.ofChar x✝ = none
Instances For
H_ATR: tier-adjacent vowels disagreeing in tenseness.
Equations
- AksenovaEtAl2024.lokaaBanned x y = (x.tense ≠ y.tense)
Instances For
Equations
- AksenovaEtAl2024.instDecidableRelLokaaVLokaaBanned x y = id inferInstance
Equations
Instances For
The (3) forms are accepted and their starred counterparts rejected.
Kirghiz ((5), Table 34.3): fronting and rounding on one tier #
Equations
- AksenovaEtAl2024.instDecidableEqKirghizV 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.
Equations
- AksenovaEtAl2024.instReprKirghizV = { reprPrec := AksenovaEtAl2024.instReprKirghizV.repr }
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- AksenovaEtAl2024.KirghizV.e.front = true
- AksenovaEtAl2024.KirghizV.i.front = true
- AksenovaEtAl2024.KirghizV.oe.front = true
- AksenovaEtAl2024.KirghizV.ue.front = true
- AksenovaEtAl2024.KirghizV.a.front = false
- AksenovaEtAl2024.KirghizV.ih.front = false
- AksenovaEtAl2024.KirghizV.o.front = false
- AksenovaEtAl2024.KirghizV.u.front = false
Instances For
Equations
- AksenovaEtAl2024.KirghizV.o.round = true
- AksenovaEtAl2024.KirghizV.oe.round = true
- AksenovaEtAl2024.KirghizV.u.round = true
- AksenovaEtAl2024.KirghizV.ue.round = true
- AksenovaEtAl2024.KirghizV.a.round = false
- AksenovaEtAl2024.KirghizV.ih.round = false
- AksenovaEtAl2024.KirghizV.e.round = false
- AksenovaEtAl2024.KirghizV.i.round = false
Instances For
Equations
- AksenovaEtAl2024.KirghizV.ofChar 'a' = some AksenovaEtAl2024.KirghizV.a
- AksenovaEtAl2024.KirghizV.ofChar 'ɨ' = some AksenovaEtAl2024.KirghizV.ih
- AksenovaEtAl2024.KirghizV.ofChar 'e' = some AksenovaEtAl2024.KirghizV.e
- AksenovaEtAl2024.KirghizV.ofChar 'i' = some AksenovaEtAl2024.KirghizV.i
- AksenovaEtAl2024.KirghizV.ofChar 'o' = some AksenovaEtAl2024.KirghizV.o
- AksenovaEtAl2024.KirghizV.ofChar 'ö' = some AksenovaEtAl2024.KirghizV.oe
- AksenovaEtAl2024.KirghizV.ofChar 'u' = some AksenovaEtAl2024.KirghizV.u
- AksenovaEtAl2024.KirghizV.ofChar 'ü' = some AksenovaEtAl2024.KirghizV.ue
- AksenovaEtAl2024.KirghizV.ofChar x✝ = none
Instances For
H_front ∪ H_round: the bigram disagrees in fronting or in rounding.
Equations
- AksenovaEtAl2024.kirghizBanned x y = (x.front ≠ y.front ∨ x.round ≠ y.round)
Instances For
Equations
- AksenovaEtAl2024.instDecidableRelKirghizVKirghizBanned x y = id inferInstance
Equations
Instances For
Kirghiz frontness harmony: every vowel participates.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Kirghiz rounding harmony, on the same tier.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The printed grammar is the conjunction of the two patterns' compatibilities.
Buryat ((9), Table 34.4): high vowels block rounding #
Equations
- AksenovaEtAl2024.instDecidableEqBuryatV 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.
Equations
- AksenovaEtAl2024.instReprBuryatV = { reprPrec := AksenovaEtAl2024.instReprBuryatV.repr }
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- AksenovaEtAl2024.BuryatV.e.tense = true
- AksenovaEtAl2024.BuryatV.o.tense = true
- AksenovaEtAl2024.BuryatV.u.tense = true
- AksenovaEtAl2024.BuryatV.a.tense = false
- AksenovaEtAl2024.BuryatV.oh.tense = false
- AksenovaEtAl2024.BuryatV.uh.tense = false
Instances For
Equations
- AksenovaEtAl2024.BuryatV.uh.high = true
- AksenovaEtAl2024.BuryatV.u.high = true
- AksenovaEtAl2024.BuryatV.a.high = false
- AksenovaEtAl2024.BuryatV.e.high = false
- AksenovaEtAl2024.BuryatV.oh.high = false
- AksenovaEtAl2024.BuryatV.o.high = false
Instances For
Equations
- AksenovaEtAl2024.BuryatV.oh.round = true
- AksenovaEtAl2024.BuryatV.o.round = true
- AksenovaEtAl2024.BuryatV.uh.round = true
- AksenovaEtAl2024.BuryatV.u.round = true
- AksenovaEtAl2024.BuryatV.a.round = false
- AksenovaEtAl2024.BuryatV.e.round = false
Instances For
Equations
- AksenovaEtAl2024.BuryatV.ofChar 'a' = some AksenovaEtAl2024.BuryatV.a
- AksenovaEtAl2024.BuryatV.ofChar 'e' = some AksenovaEtAl2024.BuryatV.e
- AksenovaEtAl2024.BuryatV.ofChar 'ɔ' = some AksenovaEtAl2024.BuryatV.oh
- AksenovaEtAl2024.BuryatV.ofChar 'o' = some AksenovaEtAl2024.BuryatV.o
- AksenovaEtAl2024.BuryatV.ofChar 'ʊ' = some AksenovaEtAl2024.BuryatV.uh
- AksenovaEtAl2024.BuryatV.ofChar 'u' = some AksenovaEtAl2024.BuryatV.u
- AksenovaEtAl2024.BuryatV.ofChar x✝ = none
Instances For
H_ATR ∪ H_r1 ∪ H_r2: the bigram disagrees in ATR; or its non-high vowels disagree in
rounding; or a rounded non-high vowel follows a high vowel.
Equations
Instances For
Equations
- AksenovaEtAl2024.instDecidableRelBuryatVBuryatBanned x y = id inferInstance
Equations
Instances For
The (9) forms are accepted — ɔr-ʊːl-aːd because the high causative blocks rounding —
and their starred counterparts rejected.
Blocking is directional: *ʊɔ is banned but ɔʊ licensed.
No symmetric adjacency relation renders Buryat's grammar.
Buryat ATR harmony: every tier vowel participates.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Buryat rounding harmony: high vowels are opaque, imposing unroundedness on what follows.
Equations
- One or more equations did not get rendered due to their size.
Instances For
With opaque blockers the printed grammar is the conjunction of the two patterns.
Yakut ((14), Table 34.5): harmonizing blockers #
Equations
- AksenovaEtAl2024.instDecidableEqYakutV 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.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- AksenovaEtAl2024.instReprYakutV = { reprPrec := AksenovaEtAl2024.instReprYakutV.repr }
Equations
- AksenovaEtAl2024.YakutV.e.front = true
- AksenovaEtAl2024.YakutV.i.front = true
- AksenovaEtAl2024.YakutV.oe.front = true
- AksenovaEtAl2024.YakutV.ue.front = true
- AksenovaEtAl2024.YakutV.a.front = false
- AksenovaEtAl2024.YakutV.ih.front = false
- AksenovaEtAl2024.YakutV.o.front = false
- AksenovaEtAl2024.YakutV.u.front = false
Instances For
Equations
- AksenovaEtAl2024.YakutV.o.round = true
- AksenovaEtAl2024.YakutV.oe.round = true
- AksenovaEtAl2024.YakutV.u.round = true
- AksenovaEtAl2024.YakutV.ue.round = true
- AksenovaEtAl2024.YakutV.a.round = false
- AksenovaEtAl2024.YakutV.ih.round = false
- AksenovaEtAl2024.YakutV.e.round = false
- AksenovaEtAl2024.YakutV.i.round = false
Instances For
Equations
- AksenovaEtAl2024.YakutV.ih.high = true
- AksenovaEtAl2024.YakutV.i.high = true
- AksenovaEtAl2024.YakutV.u.high = true
- AksenovaEtAl2024.YakutV.ue.high = true
- AksenovaEtAl2024.YakutV.a.high = false
- AksenovaEtAl2024.YakutV.e.high = false
- AksenovaEtAl2024.YakutV.o.high = false
- AksenovaEtAl2024.YakutV.oe.high = false
Instances For
Equations
- AksenovaEtAl2024.YakutV.ofChar 'a' = some AksenovaEtAl2024.YakutV.a
- AksenovaEtAl2024.YakutV.ofChar 'ɨ' = some AksenovaEtAl2024.YakutV.ih
- AksenovaEtAl2024.YakutV.ofChar 'e' = some AksenovaEtAl2024.YakutV.e
- AksenovaEtAl2024.YakutV.ofChar 'i' = some AksenovaEtAl2024.YakutV.i
- AksenovaEtAl2024.YakutV.ofChar 'o' = some AksenovaEtAl2024.YakutV.o
- AksenovaEtAl2024.YakutV.ofChar 'ö' = some AksenovaEtAl2024.YakutV.oe
- AksenovaEtAl2024.YakutV.ofChar 'u' = some AksenovaEtAl2024.YakutV.u
- AksenovaEtAl2024.YakutV.ofChar 'ü' = some AksenovaEtAl2024.YakutV.ue
- AksenovaEtAl2024.YakutV.ofChar x✝ = none
Instances For
H_front ∪ H_r1 ∪ H_r2 ∪ H_r3: the bigram disagrees in fronting; or its high vowels
disagree in rounding; or a rounded non-high vowel follows a high vowel; or a non-high vowel
is followed by a vowel disagreeing in rounding. (The printed H_r2 lists *üö twice and
omits *üo, which H_front bans anyway.)
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- AksenovaEtAl2024.instDecidableRelYakutVYakutBanned x y = id inferInstance
Equations
Instances For
Low vowels harmonize but block: rounding passes from o to u, not from u to o.
Kikongo ((16), (18), Tables 34.6–34.7): two disjoint tiers #
The Kikongo tier symbols: the vowels T_v = {e, o, i, u} and T_n = {n, m, d, l}.
- e : KikongoSeg
- o : KikongoSeg
- i : KikongoSeg
- u : KikongoSeg
- n : KikongoSeg
- m : KikongoSeg
- d : KikongoSeg
- l : KikongoSeg
Instances For
Equations
- AksenovaEtAl2024.instDecidableEqKikongoSeg 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.
Equations
- AksenovaEtAl2024.instReprKikongoSeg = { reprPrec := AksenovaEtAl2024.instReprKikongoSeg.repr }
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- AksenovaEtAl2024.KikongoSeg.e.isVowel = true
- AksenovaEtAl2024.KikongoSeg.o.isVowel = true
- AksenovaEtAl2024.KikongoSeg.i.isVowel = true
- AksenovaEtAl2024.KikongoSeg.u.isVowel = true
- x✝.isVowel = false
Instances For
Equations
- AksenovaEtAl2024.KikongoSeg.i.high = true
- AksenovaEtAl2024.KikongoSeg.u.high = true
- x✝.high = false
Instances For
Equations
- AksenovaEtAl2024.KikongoSeg.n.isNasal = true
- AksenovaEtAl2024.KikongoSeg.m.isNasal = true
- x✝.isNasal = false
Instances For
Equations
- AksenovaEtAl2024.KikongoSeg.ofChar 'e' = some AksenovaEtAl2024.KikongoSeg.e
- AksenovaEtAl2024.KikongoSeg.ofChar 'o' = some AksenovaEtAl2024.KikongoSeg.o
- AksenovaEtAl2024.KikongoSeg.ofChar 'i' = some AksenovaEtAl2024.KikongoSeg.i
- AksenovaEtAl2024.KikongoSeg.ofChar 'u' = some AksenovaEtAl2024.KikongoSeg.u
- AksenovaEtAl2024.KikongoSeg.ofChar 'n' = some AksenovaEtAl2024.KikongoSeg.n
- AksenovaEtAl2024.KikongoSeg.ofChar 'm' = some AksenovaEtAl2024.KikongoSeg.m
- AksenovaEtAl2024.KikongoSeg.ofChar 'd' = some AksenovaEtAl2024.KikongoSeg.d
- AksenovaEtAl2024.KikongoSeg.ofChar 'l' = some AksenovaEtAl2024.KikongoSeg.l
- AksenovaEtAl2024.KikongoSeg.ofChar x✝ = none
Instances For
A printed form read into the tier symbols. A nasal before a stop is the prenasalized
onset of that stop, not a tier nasal: read with m projected, Table 34.7 would ban the
paper's own -somp-el-, -tomb-ol-, and -lemb-ol- (*ml).
Equations
- AksenovaEtAl2024.KikongoSeg.parse ('m' :: 'p' :: rest) = AksenovaEtAl2024.KikongoSeg.parse rest
- AksenovaEtAl2024.KikongoSeg.parse ('m' :: 'b' :: rest) = AksenovaEtAl2024.KikongoSeg.parse rest
- AksenovaEtAl2024.KikongoSeg.parse ('n' :: 'g' :: rest) = AksenovaEtAl2024.KikongoSeg.parse rest
- AksenovaEtAl2024.KikongoSeg.parse (c :: rest) = (AksenovaEtAl2024.KikongoSeg.ofChar c).toList ++ AksenovaEtAl2024.KikongoSeg.parse rest
- AksenovaEtAl2024.KikongoSeg.parse [] = []
Instances For
The vowel tier T_v and the nasal tier T_n.
Equations
- AksenovaEtAl2024.kikongoVowelTier s = (s.isVowel = true)
Instances For
Equations
- AksenovaEtAl2024.kikongoNasalTier s = (s.isVowel = false)
Instances For
H_v: tier-adjacent vowels disagreeing in height.
Equations
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Every (16) and (18) form passes both grammars on its own tier.
The tier-relation typology (§34.3.4, Table 34.8) #
Two tier alphabets are the same, embedded, disjoint, or partially overlapping; the last is unattested, a tendency the chapter reports would exclude 95% of the possible tier organizations of a ten-element alphabet.
The four logical relations between two tier alphabets (Figure 34.2).
- same : TierRelation
- embedded : TierRelation
- disjoint : TierRelation
- overlapping : TierRelation
Instances For
Equations
- AksenovaEtAl2024.instDecidableEqTierRelation x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
Equations
- One or more equations did not get rendered due to their size.
Instances For
The relation between two tiers over a finite alphabet.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Kirghiz and Buryat double harmonies are single-tier — Table 34.8's S rows.
Kikongo's vowel and nasal tiers are disjoint — Table 34.8's D row.