Documentation

Linglib.Theories.Phonology.Featural.Features

Phonological Features #

Complete segmental feature inventory following @cite{hayes-2009} Introductory Phonology, Ch 4. The 26 binary features are organized into manner (root), laryngeal, and place (labial, coronal, dorsal) categories.

Prosodic features [stress] and [long] are excluded — Hayes treats stress as a syllable-level property (Ch 14), not a segmental feature.

This module provides the feature inventory consumed by OT, autosegmental, and syllable analyses.

@cite{hayes-2009}

Distinctive phonological features (binary-valued).

Complete segmental inventory from @cite{hayes-2009}:

  • Manner (root): syllabic, consonantal, sonorant, approximant, continuant, delayedRelease, nasal, lateral, strident, tap, trill
  • Laryngeal: voice, spreadGlottis, constrGlottis
  • Place (Labial): labial, round, labiodental
  • Place (Coronal): coronal, anterior, distributed
  • Place (Dorsal): dorsal, high, low, front, back, tense

Note: The grouping above follows Hayes's flat classification. The hierarchical feature geometry (FeatureGeometry.lean) re-maps some of these features to different nodes: [nasal] → soft palate, [continuant] → supralaryngeal, [lateral]/[strident] → coronal. The flat isMajorClass predicate has no single geometric counterpart — see subsumption theorems in FeatureGeometry.lean §6.

The sonority hierarchy (Hayes Table 4.1) is decomposed as: [±sonorant] > [±approximant] > [±consonantal] > [±syllabic], yielding 5 natural classes (obstruent, nasal, liquid, glide, vowel).

Instances For
    @[implicit_reducible]
    Equations
    def Phonology.instReprFeature.repr :
    FeatureNatStd.Format
    Equations
    Instances For
      @[implicit_reducible]
      Equations
      @[reducible, inline]

      A feature value: some true = [+F], some false = [−F], none = unspecified.

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

        Is this a labial place feature?

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

          A segment represented as a (partial) specification of features. Unspecified features return none.

          Instances For

            Is feature f specified (either [+F] or [−F])?

            Equations
            Instances For
              def Phonology.Segment.HasValue (s : Segment) (f : Feature) (v : Bool) :

              Does feature f have value v?

              Equations
              Instances For
                @[implicit_reducible]
                instance Phonology.instDecidableHasValue (s : Segment) (f : Feature) (v : Bool) :
                Decidable (s.HasValue f v)
                Equations

                All 26 features in declaration order.

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

                  Every Feature constructor appears in allFeatures.

                  @[implicit_reducible]

                  Segment equality by checking all 26 features. Two segments are BEq-equal iff they agree on every feature value.

                  Equations
                  @[implicit_reducible]

                  Decidable equality on segments via exhaustive feature comparison. Enables decide on segment-level goals and OT tableaux over List Segment candidates.

                  Equations
                  def Phonology.Segment.ofSpecs (specs : List (Feature × Bool)) :

                  Build a segment from a list of (feature, value) pairs. Unmentioned features are unspecified (none), giving natural-class semantics: ofSpecs [(continuant, false)] matches all [-cont] segments.

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

                    Bool: does segment s match natural-class pattern p? True when every feature specified in p agrees with s; unspecified features in p match anything.

                    Equations
                    Instances For

                      Prop wrapper around matchesPattern (mirrors Segment.HasValue from § 3). Lets consumers write mathlib-style universally-quantified theorems with Decidable inference via the Bool computation.

                      Equations
                      Instances For

                        Merge feature changes from change into s: features specified in change override s's values; unspecified features in change are preserved. Implements the SPE structural change A → B when B is a partial feature bundle.

                        Equations
                        Instances For
                          theorem Phonology.Segment.ext {s t : Segment} (h : ∀ (f : Feature), s.spec f = t.spec f) :
                          s = t

                          Two segments are equal iff their spec functions agree on every feature.

                          theorem Phonology.Segment.ext_iff {s t : Segment} :
                          s = t ∀ (f : Feature), s.spec f = t.spec f
                          @[simp]

                          Every segment matches itself as a pattern.

                          @[simp]

                          Applying the empty change list is the identity.

                          @[simp]
                          theorem Phonology.Segment.applyChanges_idem (s change : Segment) :
                          (s.applyChanges change).applyChanges change = s.applyChanges change

                          Applying the same change twice equals applying it once.