Documentation

Linglib.Theories.Phonology.OptimalityTheory.Stratal

Stratal Optimality Theory #

@cite{kiparsky-2000}

Stratal OT is a theory of the phonology-morphology interface where phonological computation is cyclic: it applies at multiple levels (strata) of morphological structure, with the output of each stratum feeding the next as input.

Architecture #

The derivation proceeds through ordered strata:

Stem → Word → Phrase

Each stratum has:

  1. A constraint ranking (which may differ from other strata)
  2. A GEN function (producing candidates from the previous output)
  3. An EVAL function (selecting the optimal candidate)

The crucial property is constraint reranking: the same constraint can occupy different positions in different strata's rankings. This captures level-ordering effects — e.g., compensatory lengthening is optimal at the Word level but not at the Phrase level — without ad hoc rules or extrinsic ordering.

Sibling derivational architectures #

Stratal OT keeps a derivational architecture (strata) inside an otherwise constraint-based framework. Linglib's siblings:

Connection to Linglib #

Each individual stratum is evaluated using Core.Constraint.OT.mkTableau and Tableau.optimal. This module adds the stratal architecture: strata ordering, cross-stratal chaining, and reranking specification.

The Telugu weak alternation (@cite{aitha-2026}) is a key application: the interaction of IDENT-STRESS with FT-BIN across Stem, Word, and Phrase strata derives the -am/-āni alternation from a single underlying form.

The three phonological strata of Stratal OT (@cite{kiparsky-2000}).

StratumDomainMorphological boundary
StemRoot + derivational mfxInnermost cycle
WordStem + inflectional sfxProsodic word (PrWd) edge
PhraseWords + clitics + PPhonological phrase edge

Each stratum corresponds to a morphological domain. The Stem–Word boundary typically aligns with the edge of the prosodic word.

Instances For
    @[implicit_reducible]
    Equations
    Equations
    • One or more equations did not get rendered due to their size.
    Instances For

      Strata are linearly ordered: stem < word < phrase. This ordering reflects the direction of morphological derivation (innermost to outermost) and determines the feeding relation.

      Equations
      Instances For
        def Phonology.Stratal.evalStratum {C : Type u_1} [DecidableEq C] (_stratum : Stratum) (candidates : List C) (ranking : List (Core.Constraint.OT.NamedConstraint C)) (h : candidates [] := by decide) :
        Finset C

        Evaluate a single stratum: select optimal candidates from a candidate set under a constraint ranking.

        Thin wrapper around mkTableau + optimal that labels the evaluation with its stratum.

        Equations
        Instances For
          def Phonology.Stratal.chainEval {C₁ : Type u_1} {C₂ : Type u_2} [DecidableEq C₂] (_stratum : Stratum) (s₁Output : C₁) (bridge : C₁List C₂) (ranking : List (Core.Constraint.OT.NamedConstraint C₂)) (hBridge : bridge s₁Output []) :
          Finset C₂

          Chain two strata: take the optimal output of stratum s₁, transform it into candidates for stratum s₂ via a bridge function, and evaluate under s₂'s ranking.

          The bridge function is language-specific: it adds morphological material from the next layer (e.g., inflectional suffixes at the Word level, postpositions at the Phrase level) and generates candidate representations.

          Equations
          Instances For
            structure Phonology.Stratal.StratalDerivation (S : Type u_1) (W : Type u_2) (P : Type u_3) :
            Type (max (max u_1 u_2) u_3)

            The full derivational history across all three strata. Records the input and output at each level.

            Type parameters:

            • S: candidate type at the Stem level
            • W: candidate type at the Word level
            • P: candidate type at the Phrase level

            Candidate types differ across strata because GEN produces different representations at each level (e.g., metrical parses at Stem level, segmental modifications at Word level).

            • underlyingForm : S

              Underlying representation (input to the Stem stratum).

            • stemOutput : S

              Optimal output of the Stem stratum.

            • wordOutput : W

              Optimal output of the Word stratum.

            • phraseOutput : P

              Optimal output of the Phrase stratum (= surface form).

            Instances For
              def Phonology.Stratal.StratalDerivation.surface {S : Type u_1} {W : Type u_2} {P : Type u_3} (d : StratalDerivation S W P) :
              P

              The surface form is the output of the final (Phrase) stratum.

              Equations
              Instances For

                A constraint identity: name and family, independent of ranking position. The same ConstraintId can appear at different positions in different strata's rankings — this is the core mechanism of Stratal OT.

                Contrast with NamedConstraint, which bundles the identity with an evaluation function (tied to a specific candidate type).

                Instances For
                  def Phonology.Stratal.instDecidableEqConstraintId.decEq (x✝ x✝¹ : ConstraintId) :
                  Decidable (x✝ = x✝¹)
                  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

                      Extract the identity from a named constraint.

                      Equations
                      Instances For
                        def Phonology.Stratal.findRank {C : Type u_1} (name : String) (ranking : List (Core.Constraint.OT.NamedConstraint C)) :
                        Option

                        Find the rank (position) of a constraint by name within a ranking. Position 0 = highest-ranked. Returns none if the constraint is not active at this stratum.

                        Equations
                        Instances For
                          def Phonology.Stratal.findRank.go {C : Type u_1} (name : String) :
                          List (Core.Constraint.OT.NamedConstraint C)Option
                          Equations
                          Instances For
                            def Phonology.Stratal.isPromoted {C : Type u_1} (name : String) (r₁ r₂ : List (Core.Constraint.OT.NamedConstraint C)) :

                            Is constraint name ranked higher (closer to position 0) in ranking r₁ than in r₂? Captures promotion across strata.

                            Example: ONSET is promoted from Word to Phrase level in Telugu (@cite{aitha-2026} §5.3), switching from below IDENT-STRESS to above it.

                            Equations
                            Instances For
                              @[implicit_reducible]
                              instance Phonology.Stratal.instDecidableIsPromoted {C : Type u_1} (name : String) (r₁ r₂ : List (Core.Constraint.OT.NamedConstraint C)) :
                              Decidable (isPromoted name r₁ r₂)
                              Equations
                              • One or more equations did not get rendered due to their size.
                              def Phonology.Stratal.isDemoted {C : Type u_1} (name : String) (r₁ r₂ : List (Core.Constraint.OT.NamedConstraint C)) :

                              Is constraint name ranked lower in r₁ than in r₂? Captures demotion across strata.

                              Example: *DIST-0 is demoted from Word to Phrase level in Telugu (@cite{aitha-2026} §5.3), allowing consonant retention at phrase boundaries.

                              Equations
                              Instances For
                                @[implicit_reducible]
                                instance Phonology.Stratal.instDecidableIsDemoted {C : Type u_1} (name : String) (r₁ r₂ : List (Core.Constraint.OT.NamedConstraint C)) :
                                Decidable (isDemoted name r₁ r₂)
                                Equations
                                def Phonology.Stratal.isPromotedAcross {C₁ : Type u_1} {C₂ : Type u_2} (name : String) (r₁ : List (Core.Constraint.OT.NamedConstraint C₁)) (r₂ : List (Core.Constraint.OT.NamedConstraint C₂)) :

                                Cross-stratum promotion: name is ranked higher (closer to 0) in r₁ : List (NamedConstraint C₁) than in r₂ : List (NamedConstraint C₂). Generalises isPromoted to permit different candidate types between strata, which is the typical case in Stratal OT — e.g. Word-stratum candidates carry segmental modifications while Phrase-stratum candidates carry boundary-prosody modifications. The constraint inventory is shared by name, not by candidate type.

                                Example: ONSET is promoted from Word to Phrase level in Telugu (@cite{aitha-2026} §5.3), even though the Word and Phrase strata score different candidate types.

                                Equations
                                Instances For
                                  @[implicit_reducible]
                                  instance Phonology.Stratal.instDecidableIsPromotedAcross {C₁ : Type u_1} {C₂ : Type u_2} (name : String) (r₁ : List (Core.Constraint.OT.NamedConstraint C₁)) (r₂ : List (Core.Constraint.OT.NamedConstraint C₂)) :
                                  Decidable (isPromotedAcross name r₁ r₂)
                                  Equations
                                  • One or more equations did not get rendered due to their size.
                                  def Phonology.Stratal.isDemotedAcross {C₁ : Type u_1} {C₂ : Type u_2} (name : String) (r₁ : List (Core.Constraint.OT.NamedConstraint C₁)) (r₂ : List (Core.Constraint.OT.NamedConstraint C₂)) :

                                  Cross-stratum demotion. Dual of isPromotedAcross.

                                  Example: *DIST-0 is demoted from Word to Phrase level in Telugu (@cite{aitha-2026} §5.3), permitting consonant retention at phrase boundaries that would otherwise trigger compensatory lengthening.

                                  Equations
                                  Instances For
                                    @[implicit_reducible]
                                    instance Phonology.Stratal.instDecidableIsDemotedAcross {C₁ : Type u_1} {C₂ : Type u_2} (name : String) (r₁ : List (Core.Constraint.OT.NamedConstraint C₁)) (r₂ : List (Core.Constraint.OT.NamedConstraint C₂)) :
                                    Decidable (isDemotedAcross name r₁ r₂)
                                    Equations
                                    @[reducible, inline]

                                    A Hasse pair (a, b) means constraint a strictly dominates constraint b (a ≫ b). Lists of such pairs specify a partial order on constraints.

                                    For classical OT, the transitive closure must be a total order. For comparative tableaux (@cite{prince-2002}), partial specifications suffice.

                                    Example: the Stem-level ranking in Telugu (@cite{aitha-2026} §5.1) is specified as:

                                    [("FT-BIN(μ)", "PARSE-SYL"), ("PARSE-SYL", "ALL-FT-LEFT")]
                                    
                                    Equations
                                    Instances For

                                      Does constraint a immediately dominate b in the specification?

                                      Equations
                                      Instances For
                                        @[implicit_reducible]
                                        instance Phonology.Stratal.instDecidableImmediatelyDominates (spec : RankingSpec) (a b : String) :
                                        Decidable (immediatelyDominates spec a b)
                                        Equations
                                        def Phonology.Stratal.dominates (spec : RankingSpec) :
                                        StringStringProp

                                        Does constraint a dominate b? Reflexive-transitive closure of immediatelyDominates, decidable on any concrete spec via the Core.Relation.ReflTransGen substrate using the spec's vertex universe as the finite carrier. Captures dominance chains of any length (the previous depth-3 hardcoded version was incomplete for longer chains).

                                        Equations
                                        Instances For

                                          Output feeding: the output of stratum s is well-formed input for stratum s+1. This is the fundamental architectural claim of Stratal OT — phonological computation is cyclic, and each cycle can change the representation in ways that feed or bleed processes at the next cycle.

                                          Key empirical consequence (@cite{aitha-2026}): compensatory lengthening is optimal at the Word level (MAX ≫ ALIGN-RIGHT) but not at the Phrase level (constraint reranking), producing different outputs for the same segmental configuration at different strata.

                                          Equations
                                          Instances For
                                            @[implicit_reducible]
                                            Equations
                                            • One or more equations did not get rendered due to their size.