Documentation

Linglib.Theories.Phonology.Autosegmental.Floating

Floating Tones — Autosegmental Forms with Multi-Tone TBUs #

@cite{goldsmith-1976} @cite{wolf-2007} @cite{mcpherson-lamont-2026}

Goldsmith-style autosegmental representation: tones live on a tier above the segmental backbone, connected by association lines (links). Multiple tones can associate to one TBU (forming contours); a tone with no associations is floating.

This refactor (over the prior overwrite-semantics encoding) is required by the @cite{mcpherson-lamont-2026} fig. 3 derivation: *CROWD penalises TBUs with too many associated tones, and *FALL penalises HM/HL/ML contours — both of which presuppose multi-tone-per-TBU representation.

Encoding #

The form carries an immutable underlying state and a mutable surface state. GEN operations modify only the surface state.

Underlying (immutable):

Surface (mutable):

A tone is floating iff it is not deleted AND no surface link references it.

Operations (paper, eq. 6 subset) #

The paper's GEN also includes (6d) insert+associate a new tone and (6e) shift a tone (the latter credited to Gietz et al. 2023 in the paper); both omitted here as they don't appear in the fig. 3 derivation.

A surface link (k, i) is tautomorphic iff ulTones[k].morpheme = segs[i].morpheme. The constraint *TAUTDOCK (paper, eq. 15, after @cite{wolf-2007}) penalises tautomorphic links inserted by GEN (i.e., in surfaceLinks but not in ulLinks).

@[reducible, inline]

Index into ulTones.

Equations
Instances For
    @[reducible, inline]

    Index into segs.

    Equations
    Instances For

      Identifier for a morpheme. Concrete IDs are fragment-specific. Opaque (def, not abbrev) so that arithmetic on Nat doesn't silently leak through — only the operations declared below (DecidableEq, Repr, OfNat literals) are exposed to consumers.

      Equations
      Instances For

        A tonal-tier element: tone value plus morpheme membership.

        Instances For
          def Phonology.Autosegmental.instDecidableEqToneSpec.decEq (x✝ x✝¹ : ToneSpec) :
          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 segmental backbone element: segment plus morpheme membership. Generic over the segment type S.

              Instances For
                def Phonology.Autosegmental.instReprSegSpec.repr {S✝ : Type} [Repr S✝] :
                SegSpec S✝Std.Format
                Equations
                • One or more equations did not get rendered due to their size.
                Instances For
                  @[implicit_reducible]
                  instance Phonology.Autosegmental.instReprSegSpec {S✝ : Type} [Repr S✝] :
                  Repr (SegSpec S✝)
                  Equations
                  @[implicit_reducible]
                  instance Phonology.Autosegmental.instDecidableEqSegSpec {S : Type} [DecidableEq S] :
                  DecidableEq (SegSpec S)
                  Equations
                  • One or more equations did not get rendered due to their size.

                  An autosegmental tonal form. See module docstring for the underlying-vs-surface convention.

                  • segs : List (SegSpec S)

                    Segmental backbone (tier order).

                  • ulTones : List ToneSpec

                    UNDERLYING tonal tier (tier order; immutable).

                  • deletedTones : Finset ToneIdx

                    SURFACE deletion set (current state).

                  Instances For
                    @[implicit_reducible]

                    Repr drops Finset fields (mathlib's Finset.Repr is unsafe). Shows only segs and ulTones for debugging.

                    Equations
                    • One or more equations did not get rendered due to their size.
                    @[implicit_reducible]
                    instance Phonology.Autosegmental.instDecidableEqFloatingForm {S : Type} [DecidableEq S] :
                    DecidableEq (FloatingForm S)
                    Equations
                    • One or more equations did not get rendered due to their size.
                    def Phonology.Autosegmental.FloatingForm.mkInput {S : Type} (segs : List (SegSpec S)) (ulTones : List ToneSpec) (ulLinks : Finset Link) :

                    Construct an input form: surface state mirrors underlying state, nothing deleted, all underlying links intact.

                    Equations
                    Instances For

                      The tone at index k is alive (not deleted). The structural primitive; IsDeleted is its negation.

                      Equations
                      Instances For
                        @[reducible, inline]

                        The tone at index k is deleted. Sugar for ¬ IsAlive.

                        Equations
                        Instances For

                          The tone at index k is linked to some TBU on the surface.

                          Equations
                          Instances For
                            @[implicit_reducible]
                            Equations

                            The tone at index k is floating (alive but unlinked).

                            Equations
                            Instances For

                              A surface link (k, i) is tautomorphic iff its tone and TBU share a morpheme. Out-of-range indices on either side make this false. Used by *TAUTDOCK (paper, eq. 15) and the tautomorphic vs heteromorphic distinction discussed in the module docstring.

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

                                (6c) Delete the underlying tone at index k. Cascades to remove any surface link referencing it.

                                Equations
                                Instances For

                                  A candidate link (k, i) would cross an existing surface link (k', i') iff tier order disagrees with segmental order: (k < k' ∧ i > i') ∨ (k > k' ∧ i < i'). Crossing-association candidates violate the No-Crossing Constraint of @cite{goldsmith-1976} autosegmental phonology and are excluded from GEN.

                                  Equations
                                  Instances For
                                    @[implicit_reducible]
                                    Equations
                                    def Phonology.Autosegmental.FloatingForm.gen {S : Type} [DecidableEq S] (f : FloatingForm S) :
                                    Finset (FloatingForm S)

                                    One-step GEN. Enumerates: (a) the faithful candidate, (b) deleting each alive tone, (c) for each FLOATING tone, inserting a link to each TBU that doesn't cross an existing link. Subset of paper eq. 6: omits (d) insert-and-associate and (e) shift, which fig. 3 doesn't use. The no-crossing filter (@cite{goldsmith-1976}) enforces autosegmental well-formedness — without it, a floating H could dock across an intervening linked tone, which the paper's GEN implicitly forbids.

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

                                      Indicator vector for floating-tone presence at each underlying-tone position, in tier order. Entry k is 1 iff ulTones[k] is currently floating, else 0. Used by directional *FLOAT (paper, eq. 16).

                                      Equations
                                      Instances For

                                        Surface tones linked to TBU i, returned in tier order (smallest tone index first). Used by *FALL and *CROWD. We iterate over List.range f.ulTones.length so the result is naturally sorted and reduces well via kernel decide (avoiding Finset.sort, which doesn't unfold structurally).

                                        Equations
                                        Instances For

                                          Sequence of tone values linked to TBU i, in tier order.

                                          Equations
                                          Instances For

                                            Indices of alive (non-deleted) underlying tones, in tier order. Iterates List.range f.ulTones.length so the result is naturally sorted and reduces well via kernel decide.

                                            Equations
                                            Instances For

                                              Segment indices belonging to morpheme m, in segmental order. Out-of-range indices are excluded by construction.

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