Documentation

Linglib.Phonology.Tone.Register

Register: the terracing realization of [raised] #

The syntagmatic reading of [raised] ([snider-1999], [lionnet-2025]): each [-raised] node lowers the register for everything that follows and each [+raised] node raises it, so a node sequence is realized as the running sum of its shifts from a baseline — terracing, as in the register-only systems of Drubea and Numèè and in the catathesis of Japanese and English intonation ([BP86]).

Main definitions #

Main results #

def Tone.TRN.pitchEffect (t : TRN) :

The register shift a node contributes: [-raised] lowers, [+raised] raises, an unspecified [raised] is inert.

Equations
Instances For
    def Tone.realizePitch (level : ) (ts : List TRN) :
    List

    Terracing: the pitch levels of a node sequence from a baseline, each shift cumulative — the running sums of the shifts.

    Equations
    Instances For
      @[simp]
      theorem Tone.realizePitch_nil (level : ) :
      realizePitch level [] = []
      @[simp]
      theorem Tone.realizePitch_cons (level : ) (t : TRN) (rest : List TRN) :
      realizePitch level (t :: rest) = (level + t.pitchEffect) :: realizePitch (level + t.pitchEffect) rest
      @[simp]
      theorem Tone.length_realizePitch (level : ) (ts : List TRN) :
      (realizePitch level ts).length = ts.length
      theorem Tone.realizePitch_append (level : ) (ts us : List TRN) :
      realizePitch level (ts ++ us) = realizePitch level ts ++ realizePitch (level + (List.map TRN.pitchEffect ts).sum) us

      A sequence realizes piecewise: the second part continues from the register the first part leaves.

      def Tone.pitchDeltas (ts : List TRN) :
      List

      The register shifts from the start: no privileged pitch, only the differences.

      Equations
      Instances For
        theorem Tone.realizePitch_eq_pitchDeltas_shift (level : ) (ts : List TRN) :
        realizePitch level ts = List.map (fun (x : ) => x + level) (pitchDeltas ts)

        A baseline only shifts the deltas.

        theorem Tone.realizePitch_mono {ts₁ ts₂ : List TRN} (hts : List.Forall₂ (Function.onFun (fun (x1 x2 : ) => x1 x2) TRN.pitchEffect) ts₁ ts₂) {n m : } (hnm : n m) :
        List.Forall₂ (fun (x1 x2 : ) => x1 x2) (realizePitch n ts₁) (realizePitch m ts₂)

        Monotonicity: pointwise lower shifts and a lower baseline give pointwise lower pitch. Structural basis of catathesis blocking ([BP86]): a register reset at a phrase boundary leaves everything after it higher than continued compression would.

        theorem Tone.realizePitch_baseline_mono (ts : List TRN) {n m : } (h : n m) :
        List.Forall₂ (fun (x1 x2 : ) => x1 x2) (realizePitch n ts) (realizePitch m ts)

        A higher baseline gives pointwise higher pitch for a fixed sequence.