Documentation

Studies.Belth2026

Belth (2026): A Learning-Based Account of Phonological Tiers #

This file formalizes D2L, Belth's learner, and the paper's own runs of it. D2L receives pairs of underlying and surface forms, an alternating class, and a feature, and constructs the search-and-copy rule Rel(A, F) / C __ ∘ proj(·, T) (Phonology.SearchCopy) from adjacent dependencies alone: starting from the whole alphabet as the tier, it builds the left- and right-context rules whose contexts are the segments tier-adjacent to the targets, counts the applications and correct applications of the more accurate one, accepts it under Yang's Tolerance Principle (Yang2016.tolerates) with the Elsewhere default the untouched targets show, and otherwise deletes from the tier the smallest natural class containing the contexts that produced errors (D2L.iterate, D2L.learn). On the paper's toy vocabulary (20) the learner runs exactly as its trace (21), (30), (32) and (33) says: three iterations with the tiers Σ, [+cons] and [+sib], accuracies 1/8, 4/8 and 7/7, and the rule Agree({S}, {ant}) / [+sib] __ ∘ proj(·, [+sib]) with default [s] (Toy.iterations, Toy.learn). The rules D2L converges to on natural language data are run on the paper's examples: Latin liquid dissimilation (54) on (53), with the lunaris row it mispredicts (latin_rows, lunaris_mispredicted); Finnish backness harmony (52), which is the search-and-copy reading of the fragment's Finnish.palatalHarmony, on (51) (finnish_rows); and Turkish vowel harmony (49a) on (46) and (47) through the fragment's two harmonies (turkish_rows).

Implementation notes #

A target with no tier-adjacent segment on the rule's side is an underextension on either side; the paper writes the right word boundary into the right-context set, which changes only that rule's application count, never the choice between the two rules on the paper's data. A context that is itself alternating is never added to the deletion set, since the alternating segments must stay on the tier ((19), step 8); on this reading of (28) the second iteration deletes exactly {n, k, g}. A trigger unspecified for the feature counts as an incorrect application, as the paper counts it. Ties in accuracy go to the left-context rule. Belth's Turkish rule (49a) transmits backness and rounding as one feature set; the fragment factors it into the two harmonies of Göksel and Kerslake, applied in turn. The predictions of section 4 need Finley's and McMullin and Hansson's full stimulus lists, which the paper does not print, so the learned rules (40) and (44) are not run here.

References #

D2L #

structure Belth2026.D2L.Problem (α : Type u_2) [DecidableEq α] :
Type u_2

A learning problem consists of the alphabet, the alternating segments A, the feature F read and written on them, the natural classes a tier may lose, and the vocabulary of underlying and surface forms.

  • alphabet : List α
  • targets : List α
  • value : α → Option Bool
  • write : Bool → α → α
  • value_write (v : Bool) (s : α) : s ∈ self.targets → self.value (self.write v s) = some v
  • write_value (v : Bool) (s : α) : s ∈ self.targets → self.value s = some v → self.write v s = s
  • classes : List (List α)
  • vocabulary : List (List α × List α)
Instances For
    structure Belth2026.D2L.Summary (α : Type u_2) :
    Type u_2

    The applications n and correct applications c of a rule over the vocabulary, the contexts of its incorrect applications, and the surface segments of the targets it leaves untouched.

    • n : ℕ
    • c : ℕ
    • errors : List α
    • untouched : List α
    Instances For
      @[instance_reducible]
      instance Belth2026.D2L.instDecidableEqSummary {α✝ : Type u_2} [DecidableEq α✝] :
      DecidableEq (Summary α✝)
      Equations
      def Belth2026.D2L.instDecidableEqSummary.decEq {α✝ : Type u_2} [DecidableEq α✝] (x✝ x✝¹ : Summary α✝) :
      Decidable (x✝ = x✝¹)
      Equations
      • One or more equations did not get rendered due to their size.
      Instances For
        def Belth2026.D2L.instReprSummary.repr {α✝ : Type u_2} [Repr α✝] :
        Summary α✝ → ℕ → Std.Format
        Equations
        • One or more equations did not get rendered due to their size.
        Instances For
          @[instance_reducible]
          instance Belth2026.D2L.instReprSummary {α✝ : Type u_2} [Repr α✝] :
          Repr (Summary α✝)
          Equations
          structure Belth2026.D2L.Iteration (α : Type u_2) :
          Type u_2

          One iteration of D2L records the tier, the two context classes and summaries, the side chosen, the default the chosen rule infers, and the deletion set.

          • tier : List α
          • contextsL : List α
          • contextsR : List α
          • left : Summary α
          • right : Summary α
          • chosen : Edge
          • default : Option (Option Bool)
          • deletion : List α
          Instances For
            @[instance_reducible]
            instance Belth2026.D2L.instDecidableEqIteration {α✝ : Type u_2} [DecidableEq α✝] :
            DecidableEq (Iteration α✝)
            Equations
            def Belth2026.D2L.instDecidableEqIteration.decEq {α✝ : Type u_2} [DecidableEq α✝] (x✝ x✝¹ : Iteration α✝) :
            Decidable (x✝ = x✝¹)
            Equations
            • One or more equations did not get rendered due to their size.
            Instances For
              def Belth2026.D2L.instReprIteration.repr {α✝ : Type u_2} [Repr α✝] :
              Iteration α✝ → ℕ → Std.Format
              Equations
              • One or more equations did not get rendered due to their size.
              Instances For
                @[instance_reducible]
                instance Belth2026.D2L.instReprIteration {α✝ : Type u_2} [Repr α✝] :
                Repr (Iteration α✝)
                Equations

                The summary of the side an iteration chose.

                Equations
                Instances For
                  def Belth2026.D2L.Iteration.contexts {α : Type u_1} (it : Iteration α) :
                  List α

                  The contexts of the side an iteration chose.

                  Equations
                  Instances For
                    def Belth2026.D2L.better {α : Type u_1} (l r : Summary α) :
                    Bool

                    Whether the left summary is at least as accurate as the right one.

                    Equations
                    Instances For
                      def Belth2026.D2L.trace {α : Type u_1} (g : Phonology.SearchCopy α) :
                      List α → List α → Option α → Option α → List (Option α × α × α)

                      For each target on the tier of a form, read in the direction of g, the underlying segment tier-adjacent to it if g applied, the segment g output, and the surface segment. The rule applies when the output segment preceding the target on the tier is a trigger.

                      Equations
                      • One or more equations did not get rendered due to their size.
                      • Belth2026.D2L.trace g x✝³ x✝² x✝¹ x✝ = []
                      Instances For
                        def Belth2026.D2L.applications {α : Type u_1} (g : Phonology.SearchCopy α) (p : List α × List α) :
                        List (Option α × α × α)

                        The trace of g over a pair of forms, in the direction of g.

                        Equations
                        Instances For
                          def Belth2026.D2L.Problem.precedingContexts {α : Type u_1} [DecidableEq α] (P : Problem α) (T : List α) :
                          List α → Option α → List α

                          The segments tier-adjacent before the targets of a form on the tier T.

                          Equations
                          Instances For
                            def Belth2026.D2L.Problem.contexts {α : Type u_1} [DecidableEq α] (P : Problem α) (T : List α) (d : Edge) :
                            List α

                            The context class C of the rule on side d over the tier T, every segment tier-adjacent to a target on that side in some underlying form.

                            Equations
                            • One or more equations did not get rendered due to their size.
                            Instances For
                              def Belth2026.D2L.Problem.candidate {α : Type u_1} [DecidableEq α] (P : Problem α) (T C : List α) (rel : Phonology.SearchCopy.Relation) (d : Edge) (default : Option Bool := none) :

                              The candidate rule over the tier T with the contexts C.

                              Equations
                              • One or more equations did not get rendered due to their size.
                              Instances For
                                def Belth2026.D2L.Problem.summary {α : Type u_1} [DecidableEq α] (P : Problem α) (g : Phonology.SearchCopy α) :

                                The summary of g over the vocabulary.

                                Equations
                                • One or more equations did not get rendered due to their size.
                                Instances For
                                  def Belth2026.D2L.Problem.inferDefault {α : Type u_1} [DecidableEq α] (P : Problem α) (untouched : List α) :
                                  Option (Option Bool)

                                  The Elsewhere default the untouched targets determine; none when their surface forms disagree, which rejects the rule.

                                  Equations
                                  • P.inferDefault untouched = match (List.map P.value untouched).dedup with | [] => some none | [v] => some v | x => none
                                  Instances For
                                    def Belth2026.D2L.Problem.step {α : Type u_1} [DecidableEq α] (P : Problem α) (rel : Phonology.SearchCopy.Relation) (T D : List α) :

                                    The iteration over the tier T with the deletion set D.

                                    Equations
                                    • One or more equations did not get rendered due to their size.
                                    Instances For
                                      def Belth2026.D2L.Problem.deletionClass {α : Type u_1} [DecidableEq α] (P : Problem α) (D : List α) :
                                      Option (List α)

                                      The smallest natural class containing D and no target.

                                      Equations
                                      • One or more equations did not get rendered due to their size.
                                      Instances For
                                        def Belth2026.D2L.Problem.nextTier {α : Type u_1} [DecidableEq α] (P : Problem α) (T D : List α) :
                                        List α

                                        The tier after deleting the class of D, or D itself when no class contains it.

                                        Equations
                                        • P.nextTier T D = match P.deletionClass D with | some N => List.filter (fun (x : α) => decide (x ∉ N)) T | none => List.filter (fun (x : α) => decide (x ∉ D)) T
                                        Instances For
                                          def Belth2026.D2L.Problem.iterate {α : Type u_1} [DecidableEq α] (P : Problem α) (rel : Phonology.SearchCopy.Relation) :
                                          ℕ → List α → List α → List (Iteration α)

                                          The iterations of D2L from the tier T with the deletion set D, until the tier is empty or stops shrinking.

                                          Equations
                                          • One or more equations did not get rendered due to their size.
                                          • P.iterate rel 0 x✝¹ x✝ = []
                                          Instances For
                                            def Belth2026.D2L.Problem.rule {α : Type u_1} [DecidableEq α] (P : Problem α) (rel : Phonology.SearchCopy.Relation) (it : Iteration α) :

                                            The rule an iteration proposes, the chosen side's candidate with its inferred default.

                                            Equations
                                            Instances For
                                              def Belth2026.D2L.Problem.learn {α : Type u_1} [DecidableEq α] (P : Problem α) (rel : Phonology.SearchCopy.Relation) (sat : ℕ → ℕ → Prop) [DecidableRel sat] :

                                              D2L returns the rule of the first iteration the criterion sat accepts on its applications and exceptions.

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

                                                The toy vocabulary (20) #

                                                The segments of the toy vocabulary, with sh for ʃ and S the sibilant unspecified for anteriority.

                                                Instances For
                                                  @[instance_reducible]
                                                  Equations
                                                  def Belth2026.Toy.instReprSeg.repr :
                                                  Seg → ℕ → Std.Format
                                                  Equations
                                                  Instances For
                                                    @[instance_reducible]
                                                    Equations

                                                    Consonantality.

                                                    Equations
                                                    Instances For

                                                      Sibilance.

                                                      Equations
                                                      Instances For
                                                        def Belth2026.Toy.Seg.ant :
                                                        Seg → Option Bool

                                                        Anteriority, unspecified on S and on the vowels.

                                                        Equations
                                                        Instances For
                                                          Equations
                                                          • One or more equations did not get rendered due to their size.
                                                          Instances For
                                                            def Belth2026.Toy.classes :
                                                            List (List Seg)

                                                            The natural classes describable by one feature.

                                                            Equations
                                                            • One or more equations did not get rendered due to their size.
                                                            Instances For
                                                              def Belth2026.Toy.vocabulary :
                                                              List (List Seg × List Seg)

                                                              The pairs of (20a).

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

                                                                The problem of (20), with A = {S} and F = {ant}.

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

                                                                  The consonant tier of the second iteration.

                                                                  Equations
                                                                  Instances For

                                                                    The sibilant tier of the third iteration.

                                                                    Equations
                                                                    Instances For
                                                                      theorem Belth2026.Toy.iterations :
                                                                      problem.iterate Phonology.SearchCopy.Relation.agree problem.alphabet.length problem.alphabet [] = [{ tier := alphabet, contextsL := [Seg.u, Seg.a, Seg.o, Seg.i, Seg.t], contextsR := [Seg.i], left := { n := 8, c := 1, errors := [Seg.u, Seg.a, Seg.o, Seg.i], untouched := [] }, right := { n := 2, c := 0, errors := [Seg.i], untouched := rightUntouched }, chosen := Edge.left, default := some none, deletion := [Seg.u, Seg.a, Seg.o, Seg.i] }, { tier := consTier, contextsL := [Seg.sh, Seg.n, Seg.k, Seg.g, Seg.S, Seg.t], contextsR := [Seg.S], left := { n := 8, c := 4, errors := [Seg.n, Seg.k, Seg.g], untouched := [] }, right := { n := 2, c := 0, errors := [], untouched := rightUntouched }, chosen := Edge.left, default := some none, deletion := [Seg.u, Seg.a, Seg.o, Seg.i, Seg.n, Seg.k, Seg.g] }, { tier := sibTier, contextsL := [Seg.sh, Seg.s, Seg.S], contextsR := [Seg.S], left := { n := 7, c := 7, errors := [], untouched := [Seg.s] }, right := { n := 2, c := 0, errors := [], untouched := rightUntouched }, chosen := Edge.left, default := some (some true), deletion := [Seg.u, Seg.a, Seg.o, Seg.i, Seg.n, Seg.k, Seg.g] }]

                                                                      The paper's trace (21), (30), (32) and (33) is three iterations over the tiers Σ, [+cons] and [+sib], the left rule chosen each time with 1, 4 and 7 correct applications out of 8, 8 and 7, the second iteration deleting n, k and g, and the third leaving only ut-S untouched, whose [s] is the default.

                                                                      Rule (33a) with its default, Agree({S}, {ant}) / [+sib] __ ∘ proj(·, [+sib]) and [s] elsewhere.

                                                                      Equations
                                                                      • One or more equations did not get rendered due to their size.
                                                                      Instances For
                                                                        theorem Belth2026.Toy.learn (sat : ℕ → ℕ → Prop) [DecidableRel sat] (h1 : ¬sat 8 7) (h2 : ¬sat 8 4) (h3 : sat 7 0) :

                                                                        D2L accepts the third iteration and no earlier one under any criterion that rejects seven exceptions in eight and four in eight and accepts none in seven.

                                                                        theorem Belth2026.Toy.iterations_disagree :
                                                                        problem.iterate Phonology.SearchCopy.Relation.disagree problem.alphabet.length problem.alphabet [] = [{ tier := alphabet, contextsL := [Seg.u, Seg.a, Seg.o, Seg.i, Seg.t], contextsR := [Seg.i], left := { n := 8, c := 0, errors := [Seg.u, Seg.a, Seg.o, Seg.i, Seg.t], untouched := [] }, right := { n := 2, c := 0, errors := [Seg.i], untouched := rightUntouched }, chosen := Edge.left, default := some none, deletion := [Seg.u, Seg.a, Seg.o, Seg.t, Seg.i] }, { tier := sibTier, contextsL := [Seg.sh, Seg.s, Seg.S], contextsR := [Seg.S], left := { n := 7, c := 2, errors := [Seg.sh, Seg.s], untouched := [Seg.s] }, right := { n := 2, c := 0, errors := [], untouched := rightUntouched }, chosen := Edge.left, default := some (some true), deletion := [Seg.u, Seg.a, Seg.o, Seg.t, Seg.i, Seg.sh, Seg.s] }, { tier := [Seg.S], contextsL := [Seg.S], contextsR := [Seg.S], left := { n := 2, c := 0, errors := [], untouched := rightUntouched }, right := { n := 2, c := 0, errors := [], untouched := rightUntouched }, chosen := Edge.left, default := none, deletion := [Seg.u, Seg.a, Seg.o, Seg.t, Seg.i, Seg.sh, Seg.s] }]

                                                                        The parallel search for a dissimilatory rule ends with the tiers Σ, [+sib] and {S}.

                                                                        theorem Belth2026.Toy.learn_disagree (sat : ℕ → ℕ → Prop) [DecidableRel sat] (h1 : ¬sat 8 8) (h2 : ¬sat 7 5) :

                                                                        The dissimilatory search finds no rule under any criterion that rejects eight exceptions in eight and five in seven.

                                                                        Tolerance at the toy's iterations #

                                                                        Seven exceptions among eight applications are not tolerated, since 7 > 8 / ln 8.

                                                                        Four exceptions among eight applications are not tolerated, since 4 > 8 / ln 8.

                                                                        With Yang's Tolerance Principle as the criterion, D2L learns rule (33a) from (20).

                                                                        Latin liquid dissimilation (54) #

                                                                        The segments of the paper's Latin transcriptions; L is the affix liquid unspecified for laterality, v the semivowel.

                                                                        Instances For
                                                                          @[instance_reducible]
                                                                          Equations
                                                                          @[instance_reducible]
                                                                          Equations
                                                                          def Belth2026.instReprLatSeg.repr :
                                                                          LatSeg → ℕ → Std.Format
                                                                          Equations
                                                                          Instances For

                                                                            The [+cons] tier, every segment but the vowels, L included.

                                                                            Equations
                                                                            Instances For
                                                                              @[instance_reducible]
                                                                              Equations
                                                                              • One or more equations did not get rendered due to their size.
                                                                              def Belth2026.LatSeg.isLat :
                                                                              LatSeg → Option Bool

                                                                              Laterality, on which l alone is [+lat] and L is unspecified.

                                                                              Equations
                                                                              Instances For

                                                                                The rule D2L learns under the [+cons] tier is rule (54), Disagree([?lat], {lat}) / [+cons] __ ∘ proj(·, [+cons]), the liquid L taking the opposite laterality of the tier-adjacent consonant.

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

                                                                                  The rule is subsequential, as every search-and-copy rule is.

                                                                                  def Belth2026.latinSegments (s : String) :
                                                                                  List LatSeg

                                                                                  The segments of a transcription, the morpheme boundary dropped.

                                                                                  Equations
                                                                                  Instances For
                                                                                    def Belth2026.stem (s : String) :
                                                                                    List Char

                                                                                    The stem of a transcription, before the morpheme boundary.

                                                                                    Equations
                                                                                    • Belth2026.stem s = List.takeWhile (fun (x : Char) => decide (x ≠ '-')) s.toList
                                                                                    Instances For

                                                                                      The underlying form of a row, its stem with the affix -aLis.

                                                                                      Equations
                                                                                      Instances For

                                                                                        The surface form of a row.

                                                                                        Equations
                                                                                        Instances For

                                                                                          The Latin rows, (53).

                                                                                          Equations
                                                                                          Instances For
                                                                                            theorem Belth2026.latin_rows (e : Datum) :
                                                                                            e ∈ latinRows → e.id ≠ "belth2026_53b2" → latinDissimRule.apply (latinUR e) = latinSR e

                                                                                            Rule (54) derives every form of (53) but lunaris, with dissimilation from a tier-adjacent stem l (53b) and its blocking by an intervening r (53c) or non-coronal consonant (53d).

                                                                                            In lunaris the tier-adjacent consonant is the nasal n, so the rule predicts [l], and the form is one of the exceptions the Tolerance Principle absorbs.

                                                                                            Finnish backness harmony (52) #

                                                                                            def Belth2026.forms (e : Datum) :
                                                                                            List String

                                                                                            The forms of a row listing several, its glossed tokens.

                                                                                            Equations
                                                                                            Instances For

                                                                                              ofChar c is the segment that the letter c of the paper's IPA transcription writes, which is the Fragment's spelling but for the vowels ɑ, æ and ø.

                                                                                              Equations
                                                                                              Instances For

                                                                                                The segments of a transcription, the morpheme boundary dropped.

                                                                                                Equations
                                                                                                Instances For
                                                                                                  def Belth2026.Finnish.ur (form : String) :

                                                                                                  The underlying form of a stem with the essive -nA.

                                                                                                  Equations
                                                                                                  Instances For

                                                                                                    Rule (52) is the search-and-copy reading of the fragment's harmony, whose tier excludes consonants and the neutral vowels and whose Elsewhere default is [−back]; it derives the four forms of (51).

                                                                                                    Turkish vowel harmony (49) #

                                                                                                    ofChar c is the segment that the letter c of the paper's IPA transcription writes, which is the Fragment's spelling but for the vowels ɑ, ɯ, y and ø and the glide j.

                                                                                                    Equations
                                                                                                    Instances For

                                                                                                      The segments of a form, the morpheme boundaries dropped.

                                                                                                      Equations
                                                                                                      Instances For
                                                                                                        def Belth2026.Turkish.ur (form : String) :

                                                                                                        The underlying form of a stem with its affixes, whose vowels are archiphonemes.

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

                                                                                                          Rule (49a), backness and rounding from the tier-preceding vowel, is the fragment's two harmonies applied in turn; its surface forms derive the forms of (46) and (47).