Documentation

Linglib.Theories.Phonology.Harmony.OT

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.Logic.OT and Theories.Phonology.Constraints.

Constraints #

Given a HarmonySystem sys:

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
  • One or more equations did not get rendered due to their size.
Instances For

    IDENT-[F] violations: count positions where the harmony feature changed between input and output.

    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.

      Instances For
        Equations
        • One or more equations did not get rendered due to their size.
        Instances For
          Equations
          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.

                theorem Theories.Phonology.Harmony.spreadSuffix_zero_spread (sys : HarmonySystem) (val : Bool) (suffix : List Segment) (h : ∀ (s : Segment), s suffixsys.isBlocker s = false) :
                spreadViolations sys val (spreadSuffix sys val suffix) = 0

                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.

                IDENT on empty suffixes is zero.

                theorem Theories.Phonology.Harmony.spreadSuffix_ot_motivation (sys : HarmonySystem) (stem suffix : List Segment) (val : Bool) (h_no_blockers : ∀ (s : Segment), s suffixsys.isBlocker s = false) (hv : triggerValue sys stem = some val) :
                (mkSpread sys).eval { stem := stem, suffixIn := suffix, suffixOut := spreadSuffix sys val suffix } = 0

                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.