Documentation

Linglib.Morphology.Word.Tree

Word-internal structure #

A Word.Tree M is an operation-typed tree over the word-formation signature: each constructor is one of [booij-2012]'s morphological operations, with its own arity and material. Every subtree is a partial word; the tree records derivational history and word-internal constituency, which applying the operations as functions would forget.

Main declarations #

The reduplication index #

The type of a reduplication step.

  • total : RedupType

    Copies the entire base (Javanese omahaomaha-omaha "various houses").

  • partialCopy : RedupType

    Copies a prosodic template (Javanese tamutətamu "to visit").

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

      The tree #

      inductive Morphology.Word.Tree (M : Type u_1) :
      Type u_1

      A tree of word-formation operations over material in M.

      • root {M : Type u_1} : MTree M

        A leaf, carrying a single element.

      • prefixed {M : Type u_1} : MTree MTree M

        Attach an affix before the base.

      • suffixed {M : Type u_1} : Tree MMTree M

        Attach an affix after the base.

      • infixed {M : Type u_1} : Tree MMTree M

        Insert an affix within the base (Khmu s⟨m⟩ka:t "roughen").

      • circumfixed {M : Type u_1} : MTree MMTree M

        Wrap the base with a prefix and a suffix (German Ge-sing-e "singing").

      • compound {M : Type u_1} : Tree MTree MTree M

        Join two stems (bottle + factory).

      • reduplicated {M : Type u_1} : RedupTypeTree MTree M

        Total or partial reduplication.

      • converted {M : Type u_1} : Tree MTree M

        Convert without added material (noun chain → verb to chain).

      Instances For
        def Morphology.Word.instReprTree.repr {M✝ : Type u_1} [Repr M✝] :
        Tree M✝Std.Format
        Equations
        • One or more equations did not get rendered due to their size.
        Instances For
          @[instance_reducible]
          instance Morphology.Word.instReprTree {M✝ : Type u_1} [Repr M✝] :
          Repr (Tree M✝)
          Equations

          Linearization #

          def Morphology.Word.Tree.toList {M : Type u_1} :
          Tree MList M

          The material of the tree, in surface order on the concatenative fragment; an infix follows its base and reduplicative copies contribute nothing.

          Equations
          Instances For
            theorem Morphology.Word.Tree.toList_ne_nil {M : Type u_1} (t : Tree M) :
            t.toList []

            IsConcatenative t asserts that t is built by concatenation alone — no infixation, circumfixation, or reduplication — so toList is the word's segmentation.

            Equations
            Instances For

              Attachment by side #

              def Morphology.Word.Tree.attach {M : Type u_1} (side : Morph.Side) (afx : M) (t : Tree M) :

              Attach an affix on a side of its host.

              Equations
              Instances For
                @[simp]
                theorem Morphology.Word.Tree.attach_before {M : Type u_1} (afx : M) (t : Tree M) :
                @[simp]
                theorem Morphology.Word.Tree.attach_after {M : Type u_1} (afx : M) (t : Tree M) :
                def Morphology.Word.Tree.attachAll {M : Type u_1} (root : M) (affixes : List (Morph.Side × M)) :

                Attach affixes to a root in order, innermost first.

                Equations
                • One or more equations did not get rendered due to their size.
                Instances For
                  theorem Morphology.Word.Tree.toList_foldl_attach {M : Type u_1} (t : Tree M) (affixes : List (Morph.Side × M)) :
                  (List.foldl (fun (t : Tree M) (p : Morph.Side × M) => attach p.1 p.2 t) t affixes).toList = (List.map (fun (x : Morph.Side × M) => x.2) (List.filter (fun (x : Morph.Side × M) => decide (x.1 = Morph.Side.before)) affixes)).reverse ++ t.toList ++ List.map (fun (x : Morph.Side × M) => x.2) (List.filter (fun (x : Morph.Side × M) => decide (x.1 = Morph.Side.after)) affixes)
                  theorem Morphology.Word.Tree.toList_attachAll {M : Type u_1} (root : M) (affixes : List (Morph.Side × M)) :
                  (attachAll root affixes).toList = (List.map (fun (x : Morph.Side × M) => x.2) (List.filter (fun (x : Morph.Side × M) => decide (x.1 = Morph.Side.before)) affixes)).reverse ++ root :: List.map (fun (x : Morph.Side × M) => x.2) (List.filter (fun (x : Morph.Side × M) => decide (x.1 = Morph.Side.after)) affixes)

                  The surface of attachment: the affixes of each side read outward from the root in the order they were attached — prefixes outermost first, suffixes innermost first.

                  theorem Morphology.Word.Tree.isConcatenative_foldl_attach {M : Type u_1} {t : Tree M} (ht : t.IsConcatenative) (affixes : List (Morph.Side × M)) :
                  (List.foldl (fun (t : Tree M) (p : Morph.Side × M) => attach p.1 p.2 t) t affixes).IsConcatenative
                  theorem Morphology.Word.Tree.isConcatenative_attachAll {M : Type u_1} (root : M) (affixes : List (Morph.Side × M)) :
                  (attachAll root affixes).IsConcatenative

                  Attachment by side is concatenative, so toList is the segmentation.

                  Laws #

                  @[simp]
                  theorem Morphology.Word.Tree.map_id {M : Type u_1} (t : Tree M) :
                  map id t = t
                  theorem Morphology.Word.Tree.map_map {M : Type u_1} {N : Type u_2} {O : Type u_3} (f : MN) (g : NO) (t : Tree M) :
                  map g (map f t) = map (g f) t
                  theorem Morphology.Word.Tree.toList_map {M : Type u_1} {N : Type u_2} (f : MN) (t : Tree M) :
                  (map f t).toList = List.map f t.toList

                  Linearization is natural in the material.

                  Structural measures #

                  def Morphology.Word.Tree.depth {M : Type u_1} :
                  Tree M

                  The number of operations above the deepest root.

                  Equations
                  Instances For
                    theorem Morphology.Word.Tree.depth_root {M : Type u_1} (m : M) :
                    (root m).depth = 0

                    A bare root has depth zero.

                    Relational accessors #

                    def Morphology.Word.Tree.base {M : Type u_1} :
                    Tree MOption (Tree M)

                    The daughter the outermost operation applied to; none for a bare root and for compounds.

                    Equations
                    Instances For
                      def Morphology.Word.Tree.stem {M : Type u_1} (infl : MBool) :
                      Tree MTree M

                      The tree with outer affixation by infl-material stripped.

                      Equations
                      Instances For
                        theorem Morphology.Word.Tree.stem_root {M : Type u_1} {infl : MBool} (m : M) :
                        stem infl (root m) = root m
                        theorem Morphology.Word.Tree.stem_suffixed_of_infl {M : Type u_1} {infl : MBool} {afx : M} (b : Tree M) (h : infl afx = true) :
                        stem infl (b.suffixed afx) = stem infl b
                        theorem Morphology.Word.Tree.stem_suffixed_of_not_infl {M : Type u_1} {infl : MBool} {afx : M} (b : Tree M) (h : ¬infl afx = true) :
                        stem infl (b.suffixed afx) = b.suffixed afx

                        Kind coherence #