Harmony–OT Bridge #
@cite{prince-smolensky-1993} @cite{rose-walker-2011}
Derives OT constraints from a HarmonySystem, connecting the direct
computation in Harmony.Defs to the OT evaluation framework in
Core.Constraint.OT and Phonology.Constraints.
Constraints #
Given a HarmonySystem sys:
- SPREAD: markedness — penalizes target segments in the suffix whose harmony feature doesn't match the trigger value. Drives harmony.
- IDENT-[F]: faithfulness — penalizes input→output changes on the
harmony feature. Defined as
Corr.identViolon the(input, output)edge of a binary parallel-pair correspondence between feature-projected tiers, i.e., IDENT-IO of @cite{mccarthy-prince-1995} specialized to the harmony feature.
Key result #
spreadSuffix_zero_spread: the output of spreadSuffix incurs zero
SPREAD violations (when no blockers intervene). This connects the
algorithmic spreading in Defs.lean to its OT motivation: spreadSuffix
produces the candidate that satisfies SPREAD, at the cost of IDENT
violations. Under SPREAD ≫ IDENT, the harmonized output is optimal.
SPREAD violations: count target segments whose harmony feature value
doesn't match triggerVal.
Equations
- Phonology.Harmony.spreadViolations sys triggerVal suffix = (List.filter (fun (s : Phonology.Segment) => sys.isTarget s && !s.spec sys.feature == some triggerVal) suffix).length
Instances For
IDENT-[F] violations: count positions where the harmony feature changed between input and output.
Derived from Corr.identViol on the (false, true) edge of a
binary parallel-pair correspondence between the feature-projected
tiers input.map (·.spec sys.feature) and
output.map (·.spec sys.feature). This structurally identifies
IDENT-[F] as IDENT-IO of @cite{mccarthy-prince-1995} restricted to
the harmony feature.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A vowel harmony candidate for OT evaluation.
The stem is fixed across candidates; only the suffix varies. For rightward harmony, GEN produces candidates that differ only in the feature values of suffix vowels. The stem determines the trigger value; the suffix is the domain of evaluation.
- stem : List Segment
The stem (unchanged across candidates).
- suffixIn : List Segment
The underlying (input) suffix.
- suffixOut : List Segment
The surface (output) suffix.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
SPREAD as a NamedConstraint: penalizes unharmonized targets in the
output suffix. Returns 0 when the stem has no trigger.
Equations
- One or more equations did not get rendered due to their size.
Instances For
IDENT-[F] as a NamedConstraint: penalizes feature changes from
underlying to surface suffix.
Equations
- One or more equations did not get rendered due to their size.
Instances For
After harmonization, a target's harmony feature is set to val.
spreadSuffix produces zero SPREAD violations (when no blockers
intervene).
By induction: harmonizeOne fixes each target's feature value
(§4), so no target in the output disagrees with the trigger.
The faithful candidate (no changes) has zero IDENT violations.
Derived from Corr.identity_ident_zero.
IDENT on empty suffixes is zero.
The output of spreadSuffix achieves zero SPREAD violations (the
mkSpread constraint) for the harmonized candidate.
Combined with faithful_zero_ident, this captures the OT trade-off:
- Faithful candidate: SPREAD > 0, IDENT = 0
- Harmonized candidate: SPREAD = 0, IDENT ≥ 0
Under the ranking SPREAD ≫ IDENT, the harmonized output wins.