Hungarian Vowel Harmony #
@cite{siptar-torkenczy-2000} @cite{rose-walker-2011}
Hungarian has palatal vowel harmony: the [±back] value of the last harmonic (non-neutral) stem vowel spreads rightward to suffix vowels. This is the most widely studied vowel harmony system in the literature, with over 50 theoretical treatments cited in @cite{siptar-torkenczy-2000}.
Why Hungarian stress-tests HarmonySystem #
Hungarian harmony is structurally similar to Finnish (both spread [back]
rightward with transparent neutral vowels), but introduces three phenomena
that push beyond a simple triggerValue analysis:
Antiharmonic stems (§3.2.2 class IIA-b): all-neutral stems like híd 'bridge' that unexpectedly take back-vowel suffixes.
triggerValuereturnsnonefor these stems since there is no harmonic trigger — the backness must be lexically specified.Vacillating stems (§3.2.3.1): stems like hotel where speakers accept both front and back suffixes. The
spreadSuffixfunction returns a single deterministic result and cannot model optionality.Height-graded transparency (§3.2.3): neutral vowels /i, í/ are always transparent, /é/ is mostly transparent, and /e/ sometimes acts as opaque. The binary
isTransparentpredicate cannot express this gradient.
Vowel inventory (@cite{siptar-torkenczy-2000} §2.2.1, system (7)) #
| Front | Back | ||
|---|---|---|---|
| Unrounded | Rounded | ||
| High | i / í | ü / ű | u / ú |
| Mid | e / é | ö / ő | o / ó |
| Low | a / á |
Harmony classification (@cite{siptar-torkenczy-2000} §3.2, (27)) #
- Front harmonic: ö, ő, ü, ű (front rounded)
- Back harmonic: a, á, o, ó, u, ú (back)
- Neutral: i, í, e, é (front unrounded)
Stem classes (@cite{siptar-torkenczy-2000} §3.2.2) #
- IA (simple harmonic): all harmonic vowels same backness
- IB (complex harmonic / disharmonic): conflicting harmonic vowels, last harmonic governs
- IIA (simple neutral): all vowels neutral — mostly front (IIA-f), but some are antiharmonic (IIA-b)
- IIB (complex neutral): harmonic + neutral, neutral is transparent
Rounding harmony (@cite{siptar-torkenczy-2000} §3.2.4) #
Three-way suffixes (hoz/höz/hez, tok/tök/tek) depend on BOTH backness and rounding of the last stem vowel:
- Back → always o (regardless of stem rounding)
- Front rounded → ö
- Front unrounded (including neutral) → e
Rounding harmony is simpler than backness harmony: no neutral vowels (every vowel is either rounded or not), no antiharmonic stems, no vacillation. It only matters for front stems.
Architectural limitation: Clements/Hume place-node spreading #
@cite{siptar-torkenczy-2000} §6.1 analyses Hungarian VH using
Clements/Hume unary place features (COR, LAB, DOR) with four rules:
Link Place, Link DOR, Spread Place, Spread DOR. This is place-NODE
spreading, not individual binary-feature spreading. Our HarmonySystem
with a single feature : Feature field cannot capture node-level
operations. The two-system decomposition (palatal + labial) used here
is an approximation that works for the data but does not reflect the
theoretical architecture of §6.1.
We define the 7 short vowels using the Hayes feature system. Long vowels have identical features for harmony purposes — length is prosodic, not segmental (@cite{siptar-torkenczy-2000} §3.1).
Representational note: Hungarian /a/ = [ɒ] is phonetically rounded
but phonologically [+back, −round, +low]. Surface rounding is a
phonetic implementation detail (@cite{siptar-torkenczy-2000} p. 54).
/i/: [+syll, +high, −back, −round, −low, +dorsal]. Neutral.
Equations
- One or more equations did not get rendered due to their size.
Instances For
/ü/: [+syll, +high, −back, +round, −low, +dorsal]. Front harmonic.
Equations
- One or more equations did not get rendered due to their size.
Instances For
/u/: [+syll, +high, +back, +round, −low, +dorsal]. Back harmonic.
Equations
- One or more equations did not get rendered due to their size.
Instances For
/e/: [+syll, −high, −back, −round, −low, +dorsal]. Neutral. Phonetically [ɛ] (open-mid).
Equations
- One or more equations did not get rendered due to their size.
Instances For
/ö/: [+syll, −high, −back, +round, −low, +dorsal]. Front harmonic.
Equations
- One or more equations did not get rendered due to their size.
Instances For
/o/: [+syll, −high, +back, +round, −low, +dorsal]. Back harmonic.
Equations
- One or more equations did not get rendered due to their size.
Instances For
/a/: [+syll, −high, +back, −round, +low, +dorsal]. Back harmonic. Surface [ɒ] is phonetically rounded; phonological rounding is absent (@cite{siptar-torkenczy-2000} p. 54).
Equations
- One or more equations did not get rendered due to their size.
Instances For
A vowel is neutral iff it is front and unrounded: /i, í, e, é/. @cite{siptar-torkenczy-2000} §3.2, (27).
Equations
- One or more equations did not get rendered due to their size.
Instances For
A vowel is front-harmonic iff it is front and rounded: /ö, ő, ü, ű/. These always trigger and undergo palatal harmony.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A vowel is back-harmonic iff it is [+back]: /a, á, o, ó, u, ú/. All back vowels are harmonic in Hungarian.
Equations
Instances For
Harmony role classification.
- frontHarmonic : HarmonyRole
- backHarmonic : HarmonyRole
- neutral : HarmonyRole
Instances For
Equations
- Fragments.Hungarian.VowelHarmony.instBEqHarmonyRole.beq x✝ y✝ = (x✝.ctorIdx == y✝.ctorIdx)
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Classify a vowel's harmony role.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Hungarian palatal harmony: [back] spreads from the last harmonic (non-neutral) stem vowel to harmonic suffix vowels. Neutral vowels /i, í, e, é/ are transparent — they neither trigger nor undergo harmony.
Structurally identical to finnishHarmony but with a larger neutral
class (4 vowels vs 2). @cite{siptar-torkenczy-2000} §3.2.1,
@cite{rose-walker-2011}.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Hungarian rounding harmony: [round] from the last stem vowel, used to resolve three-way suffix alternations (hoz/höz/hez).
Unlike backness harmony, rounding harmony has NO transparency — every vowel is either rounded or not. There are no antiharmonic stems and no vacillation w.r.t. rounding (@cite{siptar-torkenczy-2000} §3.2.4).
The rounding value only matters for front stems (back stems always get the back suffix variant regardless of rounding).
Equations
- One or more equations did not get rendered due to their size.
Instances For
Stem class for Hungarian vowel harmony.
The four major classes combine two axes:
- Harmonic (I) vs Neutral (II): is the last vowel harmonic or neutral?
- Simple (A) vs Complex (B): are all harmonic vowels the same backness?
Within each, -f and -b indicate whether the stem selects front or back suffixes. @cite{siptar-torkenczy-2000} §3.2.2.
- IA_f : StemClass
- IA_b : StemClass
- IB_f : StemClass
- IB_b : StemClass
- IIA_f : StemClass
- IIA_b : StemClass
- IIB_f : StemClass
- IIB_b : StemClass
Instances For
Equations
- Fragments.Hungarian.VowelHarmony.instBEqStemClass.beq x✝ y✝ = (x✝.ctorIdx == y✝.ctorIdx)
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Does this stem class select back suffixes?
Equations
Instances For
Suffix alternation types. @cite{siptar-torkenczy-2000} §3.2.1, (28).
Hungarian suffixes alternate in pairs (two-way) or triplets (three-way). Two-way alternation depends on [±back] alone. Three-way alternation depends on [±back] AND [±round] of the last stem vowel.
- twoWay_a_e : SuffixType
- twoWay_á_é : SuffixType
- twoWay_u_ü : SuffixType
- twoWay_ú_ű : SuffixType
- twoWay_ó_ő : SuffixType
- threeWay_o_ö_e : SuffixType
Instances For
Equations
- Fragments.Hungarian.VowelHarmony.instBEqSuffixType.beq x✝ y✝ = (x✝.ctorIdx == y✝.ctorIdx)
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Resolve a two-way a/e suffix given backness.
Equations
Instances For
Resolve a three-way o/ö/e suffix given backness and rounding. @cite{siptar-torkenczy-2000} §3.2.4, (39):
- Back → /o/ (always, regardless of stem rounding)
- Front rounded → /ö/
- Front unrounded (including neutral) → /e/
Equations
- One or more equations did not get rendered due to their size.
Instances For
Class IA: Simple harmonic stems #
These are the easy cases: all harmonic vowels agree in backness.
`triggerValue` finds the last harmonic vowel and returns its [back]
value. This always gives the correct suffix harmony.
tűz 'fire' (IA-f): last vowel /ü/ → front harmony. Suffixes: tűz-nek (dat), tűz-től (abl).
ház 'house' (IA-b): last vowel /a/ → back harmony. Suffixes: ház-nak (dat), ház-tól (abl).
koszorú 'wreath' (IA-b): vowels /o, o, u/ all back → back harmony. Suffixes: koszorú-nak, koszorú-tól.
tükör 'mirror' (IA-f): vowels /ü, ö/ both front harmonic → front. Suffixes: tükör-nek, tükör-től.
hernyó 'caterpillar' (IA-b): vowels /e, o/ — /e/ is neutral, /o/ is the last vowel and is back harmonic → back harmony. Suffixes: hernyó-nak, hernyó-tól. @cite{siptar-torkenczy-2000} p. 67.
Class IB: Complex harmonic (disharmonic) stems #
Conflicting harmonic vowels within the stem. The LAST harmonic
vowel governs suffix selection. `triggerValue` gets this right
because it extracts the last trigger.
sofőr 'driver' (IB-f): vowels /o, ő/ — last harmonic is /ő/ [−back] → front suffixes. Suffixes: sofőr-nek, sofőr-től.
nüansz 'nuance' (IB-b): vowels /ü, a/ — last harmonic is /a/ [+back] → back suffixes. Suffixes: nüansz-nak, nüansz-tól. (Note: /ü/ is front harmonic but /a/ is later → back wins.)
Class IIB-b: Complex neutral, back (transparent) #
These are the textbook transparency cases. A back harmonic vowel
precedes one or more neutral vowels, and harmony passes THROUGH
the neutral vowels to reach the suffix. `triggerValue` handles this
correctly because neutral vowels are not triggers, so the search
skips them and finds the earlier back vowel.
papír 'paper' (IIB-b): vowels /a, i/ — /i/ is neutral (not a trigger),
so triggerValue finds /a/ → back harmony.
Suffixes: papír-nak, papír-tól.
kávé 'coffee': vowels /a, e/ — /e/ is neutral, triggerValue
finds /a/ → back harmony. Suffixes: kávé-nak, kávé-tól.
(The book lists kávé under IA-b (p. 67) since the neutrality
of final /é/ is disputed — some speakers treat it as harmonic.
Our system gives the correct result either way.)
Class IIB-f: Complex neutral, front (transparent from front) #
Front harmonic vowel + neutral → front harmony via last trigger.
üveg 'glass' (IIB-f): vowels /ü, e/ — /e/ is neutral, triggerValue
finds /ü/ → front harmony. Suffixes: üveg-nek, üveg-től.
Class IIA: Simple neutral stems — THE CRITICAL FAILURE #
All-neutral stems contain only /i, í, e, é/. Since none of these are
triggers in `hungarianPalatalHarmony`, `triggerValue` returns `none`.
But Hungarian speakers DO assign a definite backness to these stems:
- IIA-f (*víz* 'water', *szegény* 'poor'): front suffixes ✓
- IIA-b (*híd* 'bridge', *cél* 'aim', *derék* 'waist'): back suffixes ✗
The antiharmonic stems (IIA-b) are **lexically specified** — their
backness cannot be predicted from the phonological form. This is the
fundamental limitation of any purely phonological harmony system.
víz 'water' (IIA-f): only /i/ → triggerValue returns none.
The correct answer is front (víz-nek, víz-től), but the system
cannot determine this.
híd 'bridge' (IIA-b, antiharmonic): only /i/ → triggerValue
returns none. The correct answer is BACK (híd-nak, híd-tól),
but the system returns the same none as for víz.
This is the canonical limitation: antiharmonic stems require lexical specification beyond phonological features.
The critical failure: víz and híd are phonologically identical
(both have only /i/) but require different suffix harmony.
triggerValue cannot distinguish them.
cél 'aim' (IIA-b): only /e/ → triggerValue returns none.
Correct answer: back (cél-nak). Another antiharmonic stem.
Vacillation — OPTIONALITY FAILURE #
Some stems allow BOTH front and back suffixes. This is common with
mixed stems where back-harmonic vowels are followed by neutral vowels,
especially /e/ (@cite{siptar-torkenczy-2000} §3.2.3.1, Table 11).
`spreadSuffix` is deterministic — it returns a single list. A
vacillating stem like *hotel* would need to return a SET of possible
outputs.
The height effect: transparency correlates with vowel height.
/i, í/ — always transparent → neutral.
/é/ — mostly transparent → mostly neutral, sometimes vacillating.
/e/ — variably transparent → neutral, vacillating, or disharmonic.
The binary `isTransparent` predicate cannot capture this gradient.
hotel has vowels /o, e/. Our system finds /o/ as last trigger → back. In reality speakers vacillate: hotel-nak ~ hotel-nek. The system predicts only back, which is one of the two options.
Demonstrate suffix harmonization using harmonizeOne with an
underspecified archiphonemic suffix vowel.
A generic high vowel archiphoneme (placeholder for suffix /U/).
Equations
- One or more equations did not get rendered due to their size.
Instances For
ház: harmonize an underspecified suffix vowel to [+back].
tűz → suffix vowel becomes [−back].
Three-way suffix resolution verified against (39): tűz-höz, szemölcs-höz, sofőr-höz (front rounded → höz) víz-hez, kötény-hez, kódex-hez (front unrounded → hez) ház-hoz, hernyó-hoz, nüansz-hoz (back → hoz)
tűz-höz: front (back=false) + rounded (round=true) → /ö/.
víz-hez: front (back=false) + unrounded (round=false) → /e/.
ház-hoz: back (back=true) → /o/ regardless of rounding.
Back stems always get /o/ in three-way suffixes, regardless of whether the stem vowel is rounded or not. @cite{siptar-torkenczy-2000} §3.2.4.
kötény-hez: vowels /ö, e/. Palatal: last trigger /ö/ → front. Labial: last vowel /e/ → unrounded. Three-way → /e/ (hez).
szemölcs-höz: vowels /e, ö/. Palatal: last trigger /ö/ → front. Labial: last vowel /ö/ → rounded. Three-way → /ö/ (höz).
The two harmony dimensions compose to derive three-way suffixes:
1. triggerValue hungarianPalatalHarmony stem → back : Option Bool
2. triggerValue hungarianLabialHarmony stem → round : Option Bool
3. resolveThreeWay back round → suffix vowel
This decomposition mirrors the book's observation that rounding harmony
is a "minor subsidiary pattern" layered on top of backness harmony
(@cite{siptar-torkenczy-2000} §3.2.4).
Compose both harmony dimensions for a back stem.
Compose both harmony dimensions for a front rounded stem.
Compose both harmony dimensions for a front unrounded (neutral) stem.
Palatal harmony returns none (no trigger), but labial harmony
returns some false — rounding works even when backness doesn't.
Hungarian and Finnish palatal harmony share the same HarmonySystem
structure: both spread [back] rightward with transparent neutral vowels.
Key structural differences:
- Neutral class: Finnish /i, e/ (2) vs Hungarian /i, í, e, é/ (4)
- Hungarian has antiharmonic stems (IIA-b); Finnish does not
- Hungarian has a second harmony dimension (rounding, §3.2.4)
Hungarian and Turkish share the two-dimensional structure (palatal +
labial), but differ in targets: Turkish labial harmony targets only
[+high] suffix vowels, while Hungarian labial harmony (rounding
for three-way suffixes) targets all relevant suffix positions.
Both Hungarian and Turkish have two-dimensional harmony: palatal ([back]) + labial ([round]).
The height-graded transparency problem (§3.2.3) can be partially addressed
using the isBlocker field. By treating /e/ as a blocker rather than
transparent, we capture the intuition that /e/ sometimes blocks back
harmony from reaching the suffix.
This alternative system makes different predictions for mixed stems:
- *hotel* /o, e/: `/e/` blocks → `triggerValue` returns `none` (no trigger
in the suffix-adjacent domain). This predicts front harmony by default,
matching the front option of the vacillation.
- *papír* /a, i/: `/i/` is still transparent → `triggerValue` returns
`some true` (back harmony), unchanged.
This does NOT model vacillation itself (which requires optionality), but
it shows that the `isBlocker` field can shift predictions in the right
direction for stems where /e/ is opaque.
Alternative palatal harmony with /e/ as a blocker (opaque). Only /i, í/ are transparent; /e, é/ block spreading. @cite{siptar-torkenczy-2000} §3.2.3: /e/ is the least transparent neutral vowel (most likely to block).
Equations
- One or more equations did not get rendered due to their size.
Instances For
With /e/ as blocker: hotel /o, e/ → /e/ blocks, domain = [], no trigger.
Contrast: hotel_predicted_back in the transparent model gives some true.
With /e/ as blocker: papír /a, i/ → /i/ is still transparent (high),
so triggerValue finds /a/ → back harmony. Unchanged from transparent model.
The blocker model shrinks the harmony domain for hotel: domain after the last blocker (/e/) is empty.
The transparent model gives the full domain (no blockers).
spreadSuffix preserves suffix length even with blockers.