Documentation

Linglib.Theories.Phonology.Prosodic.Templates

CV-Skeletal Templates and Root–Template Association #

@cite{mccarthy-1981} @cite{lowenstamm-1996} @cite{faust-2026}

The McCarthy 1981 / Strict-CV (Lowenstamm 1996) representation of nonconcatenative morphology: a template is a sequence of CV slots, optionally specified for [+consonantal]; a root is associated to the template by mapping root segments to slots (left-to-right by default).

Single source of truth #

This module provides one Template type, one Association type, and one RootTemplateMatch carrier — used by every templatic-morphology study in the library. The Root α segment type is imported from Core.Lexical, so that the same root data is shared between phonology (this module), morphology (template-satisfaction analyses), and fragments (Hebrew, Amharic, Tarifit).

*Misalignment #

Following @cite{faust-2026}, a derived predicate RootTemplateMatch.isMisaligned fires when a nonfinal root segment lands in the final template slot. The predicate distinguishes associations from the root proper (AssocSource.root) from associations from a sister exponent (AssocSource.intruder, e.g. the feminine [t] in Hebrew taQTiL or Amharic gerund and INF). Intruder associations are exempt from *Misalignment because the intruder is not a root segment in the first place — the central analytical move of @cite{faust-2026} §4.

A slot in a CV-skeletal template (@cite{mccarthy-1981}, @cite{lowenstamm-1996}):

  • C: a bare consonantal timing slot.
  • V: a vowel timing slot.
  • Cspec: a C-slot bearing the [+consonantal] feature, blocking association from glides like /j/ — this is the slot type that triggers the QaTaT–QaTa problem when paired with a [j]-final root (@cite{faust-2026} (4)).
Instances For
    @[implicit_reducible]
    Equations
    Equations
    • One or more equations did not get rendered due to their size.
    Instances For

      Is this slot a C-slot (bare or [+c]-specified)?

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

        Is this slot a V-slot?

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

          Does this slot require a [+consonantal] segment?

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

            A CV-skeletal template: an ordered sequence of slots.

            Instances For
              Equations
              • One or more equations did not get rendered due to their size.
              Instances For
                def Phonology.Templates.instDecidableEqTemplate.decEq (x✝ x✝¹ : Template) :
                Decidable (x✝ = x✝¹)
                Equations
                Instances For

                  The number of slots in the template.

                  Equations
                  Instances For

                    The number of C-slots (consonant timing positions).

                    Equations
                    Instances For

                      Slot i is the final slot of the template.

                      Equations
                      Instances For

                        The slot at position i, if in range.

                        Equations
                        Instances For

                          The morphological source of an association.

                          Faust 2026's analysis turns on this distinction: a .root association is subject to *Misalignment, an .intruder association is not. Intruders are sister exponents (e.g. the feminine [t] in Hebrew taQTiL nouns, @cite{faust-2026} (10)) that satisfy the template without being root segments themselves.

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

                              A single root-to-slot association line (@cite{mccarthy-1981}).

                              rootIndex is interpreted relative to the root for .root associations, or as an opaque tag for .intruder associations (intruder identity is handled at the fragment level — this module is segment-agnostic).

                              Defaults to .root so that "ordinary" associations stay terse.

                              Instances For
                                def Phonology.Templates.instDecidableEqAssociation.decEq (x✝ x✝¹ : Association) :
                                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

                                    A root paired with a template and a list of associations.

                                    Different candidate realizations of the same root × template pair are different RootTemplateMatch values that share root and template but differ in associations. The Faust 2026 analysis compares such candidates via the derived isMisaligned predicate.

                                    Instances For
                                      def Phonology.Templates.instReprRootTemplateMatch.repr {α✝ : Type} [Repr α✝] :
                                      RootTemplateMatch α✝Std.Format
                                      Equations
                                      • One or more equations did not get rendered due to their size.
                                      Instances For
                                        def Phonology.Templates.instDecidableEqRootTemplateMatch.decEq {α✝ : Type} [DecidableEq α✝] (x✝ x✝¹ : RootTemplateMatch α✝) :
                                        Decidable (x✝ = x✝¹)
                                        Equations
                                        • One or more equations did not get rendered due to their size.
                                        Instances For

                                          An association is a root-to-final link iff it comes from the root proper and lands at the template-final slot.

                                          Equations
                                          Instances For

                                            Misalignment (@cite{faust-2026} (2)): the match has a nonfinal root segment associated to the template-final slot. Intruder associations do not count — see AssocSource.

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

                                              Every C-slot of the template is filled by some association (root or intruder).

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

                                                The template is satisfied iff all C-slots are filled and the result is not misaligned. The two requirements are independent — the central point of @cite{faust-2026} is that for [j]-final biradicals in Hebrew, one cannot satisfy the first without violating the second.

                                                Equations
                                                Instances For

                                                  Every association points to an in-range root segment and slot.

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

                                                    The list of C-slot indices that are NOT filled by any association. Used by hollow-root analyses (@cite{faust-2026} (13)): when the medial radical is non-consonantal, the medial C-slot is unfilled, and the position of the unfilled slot determines whether [t]-intrusion is licensed (final-empty: licit; medial-empty: blocked by the No-Crossing Constraint).

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

                                                      The No-Crossing Constraint (@cite{goldsmith-1976}): an intruder association at slot i crosses an existing association at slot j > i. Right-edge intruders (e.g. the feminine /t/ suffix in Hebrew taQTiL and Amharic gerunds) associate inward from the right, so any root segment to the right of the intruder forces line-crossing.

                                                      This is the predicate that explains @cite{faust-2026} (13b–c): [t]-intrusion does not fill the medial C[+c] of [mäsam]/[mähid] because the final C-slot is already filled by the final root radical, so an intruder at the medial position would have to cross the final root association line.

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

                                                        Does this match contain any intruder associations? Templates without intruders are licit in any morphosyntactic context (verbal or nominal); templates with intruders require external licensing — see intrusionLicensed.

                                                        Equations
                                                        Instances For

                                                          A RootTemplateMatch is intrusion-licensed under an external licensing predicate iff either (a) the predicate is true (the morphosyntactic context licenses an intruding sister bound root, à la @cite{lowenstamm-2014}), or (b) the match contains no intruder associations.

                                                          The licensing predicate is supplied by the morphological theory above — for @cite{faust-2026}'s analysis, it evaluates to true iff the template is realized at an n[+gen] head in @cite{kramer-2020}'s sense (verbal templates, whose gender lives on a higher Agr head, evaluate to false and so admit no intrusion). The predicate is Bool-valued rather than a MorphologicalLocus enum so that Templates.lean need not depend on Morphology.DM.

                                                          Equations
                                                          Instances For
                                                            theorem Phonology.Templates.isMisaligned_empty {α : Type} (r : Core.Morphology.Root α) (t : Template) :
                                                            { root := r, template := t, associations := [] }.isMisaligned = false

                                                            A match with no associations is trivially not misaligned.

                                                            theorem Phonology.Templates.isMisaligned_intruder_only {α : Type} (r : Core.Morphology.Root α) (t : Template) (assocs : List Association) (h : (assocs.all fun (a : Association) => a.source == AssocSource.intruder) = true) :
                                                            { root := r, template := t, associations := assocs }.isMisaligned = false

                                                            *Misalignment cannot fire from intruder associations alone.

                                                            Structural characterization of isMisaligned: there exists a root association at a nonfinal root position landing at a template-final slot. Lets later proofs reason about misalignment via a witness rather than unfolding List.any.

                                                            Structural characterization of violatesNCC: there exist an intruder association and a root association with the intruder strictly to the left of the root association.

                                                            theorem Phonology.Templates.satisfies_iff {α : Type} (m : RootTemplateMatch α) :
                                                            m.satisfies = true m.allCSlotsFilled = true m.isMisaligned = false

                                                            satisfies decomposes into its two conjuncts: all C-slots filled AND not misaligned. The reading the squib's central argument depends on.

                                                            theorem Phonology.Templates.intrusionLicensed_iff {α : Type} (m : RootTemplateMatch α) (licensed : Bool) :
                                                            m.intrusionLicensed licensed = true licensed = true m.hasIntruder = false

                                                            Structural characterization of intrusionLicensed: a match passes licensing iff either the external predicate licenses intrusion OR the match is intruder-free. The disjunction is the formal content of the verbal/nominal asymmetry — verbal templates require intruder-free derivations; nominal templates with n[+gen] admit either.

                                                            theorem Phonology.Templates.intrusionLicensed_of_no_intruder {α : Type} (m : RootTemplateMatch α) (h : m.hasIntruder = false) (licensed : Bool) :
                                                            m.intrusionLicensed licensed = true

                                                            Intruder-free matches are licensed in any morphosyntactic context.

                                                            theorem Phonology.Templates.intrusionLicensed_with_intruder {α : Type} (m : RootTemplateMatch α) (h : m.hasIntruder = true) (licensed : Bool) :
                                                            m.intrusionLicensed licensed = licensed

                                                            An intruder-bearing match is licensed iff the external predicate is true — the contrapositive that delivers the verbal/nominal split.

                                                            The *Misalignment constraint of @cite{faust-2026} (2): a markedness constraint that fires on RootTemplateMatch candidates whose isMisaligned predicate holds. Built via the generic mkAlign constructor from Phonology.Constraints.

                                                            Equations
                                                            Instances For

                                                              *Misalignment is classified as markedness, not faithfulness.

                                                              The FILL constraint (@cite{prince-smolensky-1993}): a markedness constraint penalizing unfilled C-slots in the template. Used by @cite{faust-2026}'s implicit ranking *Misalign >> FILL: spreading a nonfinal root segment to a final [+c] slot satisfies FILL but violates *Misalign, and the grammar prefers the FILL-violating candidate.

                                                              Equations
                                                              Instances For

                                                                NoCross (@cite{goldsmith-1976}): a markedness constraint penalizing candidates whose intruder associations cross root associations.

                                                                Equations
                                                                Instances For