Documentation

Linglib.Phonology.Hiatus

Vowel hiatus #

This file defines vowel hiatus, the adjacency of two vowels, and its repair at a morpheme juncture by eliding one of the vowels, by merging the two into one, or by inserting a consonant between them.

Many languages do not tolerate hiatus. Where a vowel-final morpheme meets a vowel-initial one, they elide one of the two vowels, turn the first into a glide, merge the two into a third vowel, syllabify them together as a diphthong, or insert a consonant, and Casali surveys the variation. Which vowel elides is not free. The first vowel is the usual target, and elision of the second is well attested only before a function word and at the boundary between a stem and a suffix, which is the question of Casali's earlier article.

Like OCP.IsClean, Hiatus.Free is a thin layer over List.IsChain, but over two segments both being vowels, not their being identical, and over adjacency in the string, not on a tier. So neither constraint is an instance of the other.

Main definitions #

Main results #

Implementation notes #

Which vowel a merger yields turns on the quality of the two, so Juncture.coalesce takes the result as an argument. Glide formation and diphthong formation are not defined, since they turn on the syllabification of the two vowels and no study yet consumes them.

References #

A form is free of hiatus when no two adjacent segments are both vowels.

Equations
Instances For
    def Phonology.Hiatus.count (fm : List Segment) :
    ℕ

    count fm is the number of adjacent vowel pairs in the form, the violation count of the markedness constraint against hiatus.

    Equations
    Instances For
      @[simp]
      theorem Phonology.Hiatus.count_cons_cons (a b : Segment) (fm : List Segment) :
      count (a :: b :: fm) = count (b :: fm) + if a.IsVowel ∧ b.IsVowel then 1 else 0
      theorem Phonology.Hiatus.free_iff_count_eq_zero (fm : List Segment) :
      Free fm ↔ count fm = 0

      The categorical ban and the violation count agree.

      Hiatus at a morpheme juncture #

      A juncture is a vowel-final stem stemBody ++ [v1] followed by a vowel-initial suffix v2 :: suffixBody. The repairs below resolve the adjacency of v1 and v2, and apply only here, since a consonant-final stem or a consonant-initial suffix never presents it.

      • stemBody : List Segment

        The stem without its final vowel.

      • v1 : Segment

        The stem-final vowel.

      • v2 : Segment

        The suffix-initial vowel.

      • suffixBody : List Segment

        The suffix without its initial vowel.

      • v1_isVowel : self.v1.IsVowel

        The stem-final segment is a vowel.

      • v2_isVowel : self.v2.IsVowel

        The suffix-initial segment is a vowel.

      Instances For

        j.stem is the stem.

        Equations
        Instances For

          j.suffix is the suffix.

          Equations
          Instances For

            j.input is the unrepaired concatenation, with v1 and v2 in hiatus.

            Equations
            Instances For

              j.epenthesize c inserts the consonant c between the two vowels.

              Equations
              Instances For

                j.elideV1 elides the stem-final vowel.

                Equations
                Instances For

                  j.elideV2 elides the suffix-initial vowel.

                  Equations
                  Instances For

                    j.coalesce v merges the two vowels into v.

                    Equations
                    Instances For
                      @[simp]
                      theorem Phonology.Hiatus.Juncture.length_stem (j : Juncture) :
                      j.stem.length = j.stemBody.length + 1
                      @[simp]
                      theorem Phonology.Hiatus.Juncture.length_input (j : Juncture) :
                      j.input.length = j.stemBody.length + j.suffixBody.length + 2
                      @[simp]
                      theorem Phonology.Hiatus.Juncture.length_epenthesize (j : Juncture) (c : Segment) :
                      (j.epenthesize c).length = j.stemBody.length + j.suffixBody.length + 3
                      @[simp]
                      theorem Phonology.Hiatus.Juncture.length_elideV1 (j : Juncture) :
                      j.elideV1.length = j.stemBody.length + j.suffixBody.length + 1
                      @[simp]
                      theorem Phonology.Hiatus.Juncture.length_elideV2 (j : Juncture) :
                      j.elideV2.length = j.stemBody.length + j.suffixBody.length + 1
                      @[simp]
                      theorem Phonology.Hiatus.Juncture.length_coalesce (j : Juncture) (v : Segment) :
                      (j.coalesce v).length = j.stemBody.length + j.suffixBody.length + 1

                      Merger into the second vowel is elision of the first.

                      Merger into the first vowel is elision of the second.

                      The unrepaired concatenation is longer than the bare stem.

                      The form with an inserted consonant is longer than the bare stem.

                      @[simp]

                      Elision of the second vowel merges the suffixed form with the bare stem exactly when the suffix has one segment.

                      @[simp]

                      Elision of the first vowel merges the suffixed form with the bare suffix exactly when the stem has one segment.

                      The repairs as deletion and insertion #

                      j.v1Idx is the position of the first vowel in the unrepaired concatenation.

                      Equations
                      Instances For

                        j.v2Idx is the position of the second vowel in the unrepaired concatenation.

                        Equations
                        Instances For

                          Elision of the first vowel deletes its position from the unrepaired concatenation.

                          Elision of the second vowel deletes its position from the unrepaired concatenation.

                          Insertion of a consonant puts it at the position of the second vowel.

                          The repairs remove the hiatus #

                          The unrepaired concatenation has a hiatus.

                          The form with an inserted consonant is free of hiatus exactly when the stem and the suffix are.

                          The form without the first vowel is free of hiatus exactly when the stem body followed by the second vowel is, and the suffix is.

                          The form without the second vowel is free of hiatus exactly when the stem is, and the first vowel followed by the suffix body is.

                          theorem Phonology.Hiatus.Juncture.free_coalesce (j : Juncture) (v : Segment) :
                          Free (j.coalesce v) ↔ Free (j.stemBody ++ [v]) ∧ Free (v :: j.suffixBody)

                          The form with the two vowels merged into v is free of hiatus exactly when the stem body followed by v is, and v followed by the suffix body is.