Documentation

Linglib.Phonology.Autosegmental.Junction

Local autosegmental configurations #

The named building blocks of autosegmental representations. AR.junction as bs links every melody node of as to every timing slot of bs; its planar specializations — single, bare, float, contour, spread — are the local configurations of autosegmental tonology, and concat-products of them build every representation in the current tone studies (Studies/Jardine2016a, Studies/Jardine2017, Studies/Jardine2019). Building through them (rather than raw structure literals) carries the in-bounds proof at arbitrary alphabets, where the studies' by decide cannot go, and gives every configuration a simp kit.

The keystone is isPlanar_junction_iff: a junction is planar iff one side has at most one node, so among complete many-to-many associations the No-Crossing Constraint ([goldsmith-1976]) admits exactly the one-to-many (spread), many-to-one (contour) and degenerate configurations. (Formaliser's synthesis: the literature treats the NCC as a filter on representations, not as a characterisation of local generators.)

concat is the coproduct, so builder products reach exactly the block-diagonal link relations; connected shared-node configurations (e.g. a spread-fed contour, H→μ₁ with L→μ₁μ₂) are planar but not products. TODO: a gluing operation dual to concat (identify a shared boundary slot) reaching them, with the completeness target every planar AR is a concat/glue expression over the builders; at that point junction becomes primary and the five kits derive from its (the SimpleGraph.completeBipartiteGraph move).

Main definitions #

Main results #

The junction in coordinates #

The complete association as a two-tier AR (Bool-indexed: true the melody tier, false the timing tier), built by ofData; the No-Crossing keystone in the foundational path form.

@[reducible, inline]
abbrev Autosegmental.TwoTier (α β : Type u) :
BoolType u

The two-tier alphabet: melody labels over true, timing labels over false.

Equations
Instances For
    @[instance_reducible]
    instance Autosegmental.instDecidableEqTwoTierTrue {α β : Type u} [DecidableEq α] :
    DecidableEq (TwoTier α β true)
    Equations
    @[instance_reducible]
    instance Autosegmental.instDecidableEqTwoTierFalse {α β : Type u} [DecidableEq β] :
    DecidableEq (TwoTier α β false)
    Equations
    def Autosegmental.AR.junction {α β : Type u} (as : List α) (bs : List β) :
    AR Sigma.fst

    Complete many-to-many association of a melody onto a slot sequence, in coordinates.

    Equations
    • One or more equations did not get rendered due to their size.
    Instances For
      @[simp]
      theorem Autosegmental.AR.tierWord_junction_true {α β : Type u} (as : List α) (bs : List β) :
      tierWord true = as
      @[simp]
      theorem Autosegmental.AR.tierWord_junction_false {α β : Type u} (as : List α) (bs : List β) :
      tierWord false = bs
      @[simp]
      theorem Autosegmental.AR.tierLength_junction_true {α β : Type u} (as : List α) (bs : List β) :
      (junction as bs).tierLength true = as.length
      @[simp]
      theorem Autosegmental.AR.tierLength_junction_false {α β : Type u} (as : List α) (bs : List β) :
      (junction as bs).tierLength false = bs.length
      theorem Autosegmental.AR.isPlanar_junction_iff {α β : Type u} (as : List α) (bs : List β) :
      IsPlanar (junction as bs).obj.edges (junction as bs).obj.arcs as.length 1 bs.length 1

      The No-Crossing Constraint selects the one-sided junctions: a complete association is planar iff one side has at most one node — the one-to-many spread, many-to-one contour, and degenerate cases.

      The planar local configurations #

      @[reducible, inline]
      abbrev Autosegmental.AR.single {α β : Type u} (a : α) (b : β) :
      AR Sigma.fst

      One-to-one association.

      Equations
      Instances For
        @[reducible, inline]
        abbrev Autosegmental.AR.bare {α β : Type u} (b : β) :
        AR Sigma.fst

        A bare (unassociated) timing slot.

        Equations
        Instances For
          @[reducible, inline]
          abbrev Autosegmental.AR.float {α β : Type u} (a : α) :
          AR Sigma.fst

          A floating autosegment ([Leb73]).

          Equations
          Instances For
            @[reducible, inline]
            abbrev Autosegmental.AR.contour {α β : Type u} (as : List α) (b : β) :
            AR Sigma.fst

            Several melody nodes on one slot.

            Equations
            Instances For
              @[reducible, inline]
              abbrev Autosegmental.AR.spread {α β : Type u} (a : α) (bs : List β) :
              AR Sigma.fst

              One melody node over several slots.

              Equations
              Instances For
                theorem Autosegmental.AR.isPlanar_single {α β : Type u} (a : α) (b : β) :
                IsPlanar (single a b).obj.edges (single a b).obj.arcs
                theorem Autosegmental.AR.isPlanar_bare {α β : Type u} (b : β) :
                IsPlanar (bare b).obj.edges (bare b).obj.arcs
                theorem Autosegmental.AR.isPlanar_float {α β : Type u} (a : α) :
                IsPlanar (float a).obj.edges (float a).obj.arcs
                theorem Autosegmental.AR.isPlanar_contour {α β : Type u} (as : List α) (b : β) :
                IsPlanar (contour as b).obj.edges (contour as b).obj.arcs
                theorem Autosegmental.AR.isPlanar_spread {α β : Type u} (a : α) (bs : List β) :
                IsPlanar (spread a bs).obj.edges (spread a bs).obj.arcs
                theorem Autosegmental.AR.factorEmbeds_iff_two_tier {α β : Type u} {F : AR Sigma.fst} {X : AR Sigma.fst} [Finite F.obj.V] [Finite X.obj.V] :
                F.FactorEmbeds X otX.tierLength true, ofX.tierLength false, F.IsFactorAt X fun (b : Bool) => bif b then ot else of

                Two-tier factor embedding is a search over two bounded offsets.

                def Autosegmental.dataEmbeds {α β : Type u} (wsF wsX : (b : Bool) → List (TwoTier α β b)) (LF LX : BoolBoolProp) :

                The data-level factor check: wsF/LF occurs in wsX/LX at some pair of bounded offsets — list windows match and links transport shifted. The decidable face of FactorEmbeds for ofData-presented forms.

                Equations
                • One or more equations did not get rendered due to their size.
                Instances For
                  @[instance_reducible]
                  instance Autosegmental.instDecidableDataEmbedsOfDecidableEq {α β : Type u} {wsF wsX : (b : Bool) → List (TwoTier α β b)} {LF LX : BoolBoolProp} [DecidableEq α] [DecidableEq β] [(i j : Bool) → (p q : ) → Decidable (LF i j p q)] [(i j : Bool) → (p q : ) → Decidable (LX i j p q)] :
                  Decidable (dataEmbeds wsF wsX LF LX)
                  Equations
                  theorem Autosegmental.AR.factorEmbeds_ofData_iff {α β : Type u} {wsF wsX : (b : Bool) → List (TwoTier α β b)} {LF LX : BoolBoolProp} :
                  FactorEmbeds (ofData wsF LF) (ofData wsX LX) dataEmbeds wsF wsX LF LX

                  The spec: on ofData-presented two-tier forms, factor embedding is the data-level check — the bridge that turns banned-subgraph verdicts into kernel computations.

                  Two-tier representations from words #

                  def Autosegmental.TwoTier.words {α β : Type u} (as : List α) (bs : List β) (b : Bool) :
                  List (TwoTier α β b)

                  The tier words of a melody word and a timing word.

                  Equations
                  Instances For
                    @[simp]
                    theorem Autosegmental.TwoTier.words_true {α β : Type u} (as : List α) (bs : List β) :
                    words as bs true = as
                    @[simp]
                    theorem Autosegmental.TwoTier.words_false {α β : Type u} (as : List α) (bs : List β) :
                    words as bs false = bs
                    @[instance_reducible]
                    instance Autosegmental.TwoTier.instDecidableLinksOfDecidableRelNat (L : Prop) [DecidableRel L] (i j : Bool) (p q : ) :
                    Decidable (links L i j p q)
                    Equations
                    def Autosegmental.AR.ofWords {α β : Type u} (as : List α) (bs : List β) (L : Prop) :
                    AR Sigma.fst

                    The representation of a melody as over a timing word bs, associated by L on positions: the general two-tier form, of which junction is the complete case.

                    Equations
                    Instances For
                      instance Autosegmental.instFiniteVSigmaBoolTwoTierObjGraphAndIsTierOrderedArcsTierFstNoInternalAssocEdgesOfWords {α β : Type u} (as : List α) (bs : List β) (L : Prop) :
                      Finite (AR.ofWords as bs L).obj.V
                      @[simp]
                      theorem Autosegmental.AR.tierWord_ofWords_true {α β : Type u} (as : List α) (bs : List β) (L : Prop) :
                      tierWord true = as
                      @[simp]
                      theorem Autosegmental.AR.tierWord_ofWords_false {α β : Type u} (as : List α) (bs : List β) (L : Prop) :
                      tierWord false = bs
                      theorem Autosegmental.AR.factorEmbeds_ofWords_iff {α β : Type u} (as as' : List α) (bs bs' : List β) (L L' : Prop) :
                      (ofWords as bs L).FactorEmbeds (ofWords as' bs' L') dataEmbeds (TwoTier.words as bs) (TwoTier.words as' bs') (TwoTier.links L) (TwoTier.links L')

                      Embedding between representations of words is the data-level check, hence decidable.

                      @[instance_reducible]
                      instance Autosegmental.instDecidableFactorEmbedsBoolTwoTierOfWordsOfDecidableEqOfDecidableRelNat {α β : Type u} [DecidableEq α] [DecidableEq β] (as as' : List α) (bs bs' : List β) (L L' : Prop) [DecidableRel L] [DecidableRel L'] :
                      Decidable ((AR.ofWords as bs L).FactorEmbeds (AR.ofWords as' bs' L'))
                      Equations
                      • One or more equations did not get rendered due to their size.
                      @[simp]
                      theorem Autosegmental.AR.tierLength_ofWords_true {α β : Type u} (as : List α) (bs : List β) (L : Prop) :
                      (ofWords as bs L).tierLength true = as.length
                      @[simp]
                      theorem Autosegmental.AR.tierLength_ofWords_false {α β : Type u} (as : List α) (bs : List β) (L : Prop) :
                      (ofWords as bs L).tierLength false = bs.length

                      Realizations of word primitives #

                      The realization of a string whose primitives are representations of words has the readers of one representation of words: the tier words concatenate, and a line lives inside one symbol's primitive, at that symbol's offsets.

                      def Autosegmental.wordOffset {S : Type u_3} {γ : Type u_4} (f : SList γ) (w : List S) (k : ) :

                      The offset of the k-th symbol's word in the concatenation.

                      Equations
                      Instances For
                        theorem Autosegmental.wordOffset_add_length_le {S : Type u_3} {γ : Type u_4} (f : SList γ) {w : List S} {k : } (hk : k < w.length) :
                        wordOffset f w k + (f w[k]).length (List.map f w).flatten.length
                        theorem Autosegmental.AR.tierWord_realize_true_of_eq_ofWords {α β : Type u} {S : Type u_3} (as : SList α) (bs : SList β) (L : SProp) (g₀ : SAR Sigma.fst) [∀ (s : S), Finite (g₀ s).obj.V] (hg : ∀ (s : S), g₀ s = ofWords (as s) (bs s) (L s)) (w : List S) :
                        tierWord true = (List.map as w).flatten
                        theorem Autosegmental.AR.tierWord_realize_false_of_eq_ofWords {α β : Type u} {S : Type u_3} (as : SList α) (bs : SList β) (L : SProp) (g₀ : SAR Sigma.fst) [∀ (s : S), Finite (g₀ s).obj.V] (hg : ∀ (s : S), g₀ s = ofWords (as s) (bs s) (L s)) (w : List S) :
                        tierWord false = (List.map bs w).flatten
                        theorem Autosegmental.AR.tierOffset_true_of_eq_ofWords {α β : Type u} {S : Type u_3} (as : SList α) (bs : SList β) (L : SProp) (g₀ : SAR Sigma.fst) [∀ (s : S), Finite (g₀ s).obj.V] (hg : ∀ (s : S), g₀ s = ofWords (as s) (bs s) (L s)) (w : List S) (k : ) :
                        tierOffset g₀ true w k = wordOffset as w k
                        theorem Autosegmental.AR.tierOffset_false_of_eq_ofWords {α β : Type u} {S : Type u_3} (as : SList α) (bs : SList β) (L : SProp) (g₀ : SAR Sigma.fst) [∀ (s : S), Finite (g₀ s).obj.V] (hg : ∀ (s : S), g₀ s = ofWords (as s) (bs s) (L s)) (w : List S) (k : ) :
                        tierOffset g₀ false w k = wordOffset bs w k
                        theorem Autosegmental.AR.factorEmbeds_realize_iff_of_eq_ofWords {α β : Type u} {S : Type u_3} (as : SList α) (bs : SList β) (L : SProp) (g₀ : SAR Sigma.fst) [∀ (s : S), Finite (g₀ s).obj.V] (hg : ∀ (s : S), g₀ s = ofWords (as s) (bs s) (L s)) (F : AR Sigma.fst) [Finite F.obj.V] (w : List S) :
                        F.FactorEmbeds (realize g₀ w) F.FactorEmbeds (ofWords (List.map as w).flatten (List.map bs w).flatten (blockLinks as bs L w))

                        The realization of word primitives has the readers of one representation of words.

                        theorem Autosegmental.AR.free_realize_iff_of_eq_ofWords {α β : Type u} {S : Type u_3} (as : SList α) (bs : SList β) (L : SProp) (g₀ : SAR Sigma.fst) [∀ (s : S), Finite (g₀ s).obj.V] (hg : ∀ (s : S), g₀ s = ofWords (as s) (bs s) (L s)) (B : List { F : AR Sigma.fst // Finite F.obj.V }) (w : List S) :
                        Free (realize g₀ w) B (ofWords (List.map as w).flatten (List.map bs w).flatten (blockLinks as bs L w)).Free B
                        def Autosegmental.AR.surfacesWith {α β : Type u} (X : AR Sigma.fst) [Finite X.obj.V] (a : α) (j : ) :

                        A timing slot surfaces with melody label a: some a-labelled melody node links to it.

                        Equations
                        Instances For