Documentation

Linglib.Theories.Phonology.Prosodic.Moraic.Defs

Moraic Phonology #

Moraic representations following @cite{hayes-1989}: the mora (μ) as the fundamental unit of prosodic structure. Segments associate to morae, morae associate to syllables. This replaces the segmental prosodic tier (X theory, CV theory) with a prosodic tier whose elements directly encode weight.

Key design decisions from @cite{hayes-1989}:

The moraic tier σ → μ → segment replaces the List Segment representation in Syllable.Defs, which is essentially a segmental (X-theory) view.

@cite{hayes-1989}

A segment's underlying moraic specification.

Following @cite{hayes-1989}:

  • 0 morae: glides, onset consonants
  • 1 mora: short vowels, short consonants (when moraic by WBP)
  • 2 morae: long vowels, geminates, long syllabic consonants
Instances For
    @[implicit_reducible]
    Equations
    Equations
    • One or more equations did not get rendered due to their size.
    Instances For

      A segment on the moraic tier, carrying its mora count.

      This captures the association between the segmental and prosodic tiers: the segment seg is linked to morae morae dominated by a syllable node.

      Instances For

        A syllable in moraic theory.

        Following @cite{hayes-1989}: the syllable node σ directly dominates morae, which in turn dominate segments. Onset consonants adjoin directly to σ without intervening morae (they are weight-irrelevant).

        The split between onset (non-moraic) and moraic (mora-bearing) segments is the structural core of moraic theory — it is this split that derives the onset deletion asymmetry.

        • onset : List Segment

          Onset consonants: directly adjoined to σ, no mora.

        • moraic : List MoraicSeg

          Mora-bearing segments: nucleus vowels and (optionally) coda consonants. Ordered left to right; nucleus segments precede coda segments.

        Instances For

          A moraic form: a word parsed into moraic syllables.

          Instances For

            Language-specific parameters for moraic structure assignment.

            Following @cite{hayes-1989}, Rule (10): moraic structure is partly language-specific. The key parameter is Weight by Position: whether coda consonants receive a mora. Languages like Latin have WBP (CVC = heavy); languages like Lardil lack it (CVC = light).

            • wbp : Bool

              Does this language assign morae to coda consonants?

            Instances For

              Assign moraic structure to a Syllable according to MoraicParams.

              Following @cite{hayes-1989}, §2: the moraic structure assignment rules are:

              1. Nucleus segments receive one mora each
              2. Coda consonants receive a mora iff WBP is active
              3. Onset consonants are non-moraic

              This is the key function that derives moraic syllables from the existing segmental Syllable representation + language-specific params, rather than stipulating mora counts by hand.

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

                Convert an entire SyllabifiedForm to a MoraicForm.

                Equations
                Instances For

                  Total mora count of a moraic syllable.

                  Equations
                  Instances For

                    Total mora count of a moraic form.

                    Equations
                    Instances For

                      Convert moraic syllable to SyllWeight by extracting the mora count.

                      This is lossless: σ.toSyllWeight.morae = σ.moraCount by definition. No classification into light/heavy/superheavy bins — the exact mora count passes through.

                      Equations
                      Instances For

                        Convert a moraic form to a PrWd (prosodic word) weight profile.

                        This connects moraic representations to the prosodic word layer, enabling minimal word constraints, metrical parsing, and stress assignment to operate on moraically-derived weight profiles.

                        Equations
                        Instances For
                          theorem Phonology.Moraic.foldl_morae_map (mc : MoraCount) (xs : List Segment) (init : ) :
                          List.foldl (fun (x1 : ) (x2 : MoraicSeg) => x1 + x2.morae.toNat) init (List.map (fun (s : Segment) => { seg := s, morae := mc }) xs) = init + xs.length * mc.toNat

                          Helper: folding mora counts over a list of segments all mapped to the same MoraCount equals init + length * moraCount.

                          General bridge: syllableToMoraic with WBP produces the same mora count as Syllable.moraCount codaMoraic=true. Fully general over all syllables.

                          General bridge: syllableToMoraic without WBP produces the same mora count as Syllable.moraCount codaMoraic=false.

                          General bridge: moraic weight classification agrees with segmental weight classification for WBP languages. This connects MoraicSyllable.toSyllWeight to Syllable.weight — two independently defined weight functions that must agree for the moraic theory to be consistent with the segmental view.

                          General bridge for non-WBP languages.

                          theorem Phonology.Moraic.syllableToMoraic_cv_light (params : MoraicParams) (o n : Segment) :
                          (syllableToMoraic params { onset := [o], nucleus := [n], coda := [] }).toSyllWeight = Syllable.SyllWeight.light

                          syllableToMoraic preserves CV = light regardless of WBP.

                          theorem Phonology.Moraic.cv_moraic_light (v : Segment) :
                          { onset := [], moraic := [{ seg := v, morae := MoraCount.one }] }.toSyllWeight = Syllable.SyllWeight.light

                          A CV syllable (one monomoraic vowel, no coda) is light.

                          theorem Phonology.Moraic.cvv_moraic_heavy (v : Segment) :
                          { onset := [], moraic := [{ seg := v, morae := MoraCount.two }] }.toSyllWeight = Syllable.SyllWeight.heavy

                          A CVV syllable (one bimoraic vowel) is heavy.

                          theorem Phonology.Moraic.cvc_wbp_heavy (v c₁ c₂ : Segment) :
                          { onset := [c₁], moraic := [{ seg := v, morae := MoraCount.one }, { seg := c₂, morae := MoraCount.one }] }.toSyllWeight = Syllable.SyllWeight.heavy

                          A CVC syllable with WBP (coda has one mora) is heavy.

                          theorem Phonology.Moraic.cvc_no_wbp_light (v c₁ c₂ : Segment) :
                          { onset := [c₁], moraic := [{ seg := v, morae := MoraCount.one }, { seg := c₂, morae := MoraCount.zero }] }.toSyllWeight = Syllable.SyllWeight.light

                          A CVC syllable without WBP (coda has zero morae) is light.

                          theorem Phonology.Moraic.cvvc_superheavy (v c₁ c₂ : Segment) :
                          { onset := [c₁], moraic := [{ seg := v, morae := MoraCount.two }, { seg := c₂, morae := MoraCount.one }] }.toSyllWeight = Syllable.SyllWeight.superheavy

                          A CVVC syllable (long vowel + moraic coda) is superheavy.

                          theorem Phonology.Moraic.geminate_makes_heavy (v seg : Segment) :
                          { onset := [], moraic := [{ seg := v, morae := MoraCount.one }, { seg := seg, morae := MoraCount.one }] }.toSyllWeight = Syllable.SyllWeight.heavy

                          Geminate: one segment linked to two morae, straddling a syllable boundary. The first half contributes its mora(e) to the coda of σ₁.

                          The moraic minimal word: satisfiesMinWord checks ≥ 2 morae by default. This connects moraic representations to PrWd's bimoraic minimum.

                          Round-trip fidelity: toSyllWeight.morae recovers the exact mora count. No bounds needed — SyllWeight is now a Nat wrapper, not a lossy enum.