Documentation

Linglib.Theories.Morphology.Nanosyntax.Core

Nanosyntax: Core #

@cite{caha-2009}

Nanosyntax (@cite{caha-2009}, @cite{starke-2009}) is a non-lexicalist, post-syntactic, piece-based, realizational theory of morphology — identical to Distributed Morphology on all four of @cite{kalin-bjorkman-etal-2026}'s dimensions, but distinguished by two mechanism-level differences:

  1. Phrasal spellout: lexical items spell out entire syntactic phrases (subtrees), not just individual terminals as in DM's Vocabulary Insertion.

  2. The Superset Principle: a lexical entry matches a syntactic node if it has a sub-constituent identical to the node (@cite{caha-2009} §2.2). Among competing entries, the Elsewhere Condition selects the most specific (smallest) match.

The functional sequence (fseq) #

The key structural assumption is that case features are ordered in a universal functional sequence (fseq):

NOM – ACC – GEN – DAT – INS – COM

Each case is built by successive Merge from atomic features, yielding a strictly right-branching tree:

NOM = [A]
ACC = [B [A]]
GEN = [C [B [A]]]
DAT = [D [C [B [A]]]]

Because the tree is strictly right-branching, each case is fully characterized by its rank (depth): NOM = 0, ACC = 1, GEN = 2, DAT = 3, etc. A lexical entry storing a tree of rank r contains all sub-constituents of rank ≤ r. This is exactly the containment hierarchy formalized in Core.Case.Allomorphy.

Deriving *ABA #

The Superset Principle + fseq structure derives the *ABA constraint (@cite{caha-2009} §2.3). If entry β stores rank 2 (ACC-sized) and entry α stores rank 3 (GEN-sized), then:

Result: β–β–α. There is no way to get α–β–α, because any entry that beats α for the intermediate case Y also beats α for all cases below Y (it matches them too, and it's smaller).

See Core.Case.Allomorphy for the *ABA constraint formalized independently via AllomorphyPattern.

A Nanosyntax lexical entry: a stored fseq rank paired with a phonological exponent. The rank represents how deep the entry's stored tree goes on the functional sequence.

An entry of rank r stores the tree [Fᵣ [... [F₁ [F₀]]]], which contains all sub-constituents of rank 0..r.

Contrast with DM's FeatureVI which stores a feature set (not necessarily contiguous on the fseq).

  • rank :

    The rank (depth) of the stored tree on the fseq. Corresponds to Core.Case.Order.containmentRank.

  • exponent : String

    The phonological exponent.

Instances For
    def Morphology.Nanosyntax.instDecidableEqLexEntry.decEq (x✝ x✝¹ : LexEntry) :
    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
        Equations
        Instances For
          def Morphology.Nanosyntax.LexEntry.matches (entry : LexEntry) (targetRank : ) :
          Bool

          Does a lexical entry match a target under the Superset Principle? The entry matches if its stored tree contains the target as a sub-constituent — equivalently, if the entry's rank is at least as large as the target's rank.

          @cite{caha-2009} §2.2: "A phonological exponent is inserted into a node if its lexical entry has a (sub-)constituent that is identical to the node."

          Equations
          • entry.matches targetRank = decide (entry.rank targetRank)
          Instances For
            def Morphology.Nanosyntax.spellout (entries : List LexEntry) (targetRank : ) :
            Option String

            Phrasal spellout via the Superset Principle: among all entries that match the target (rank ≥ target rank), select the one with the smallest rank (= most specific, closest match).

            This is the Nanosyntax counterpart of DM's vocabularyInsert. The competition logic is reversed:

            • DM Subset Principle: VI features ⊆ target, largest VI wins
            • Nanosyntax Superset Principle: entry rank ≥ target, smallest entry wins

            Both converge on "the entry that wastes the least."

            Equations
            • One or more equations did not get rendered due to their size.
            Instances For
              def Morphology.Nanosyntax.syncretic (entries : List LexEntry) (rank1 rank2 : ) :
              Bool

              Two cases are syncretic under a given lexicon if spellout assigns them the same exponent.

              Equations
              • One or more equations did not get rendered due to their size.
              Instances For
                def Morphology.Nanosyntax.abaViolation (entries : List LexEntry) (x y z : ) :
                Bool

                Three ranks X < Y < Z exhibit an ABA pattern if X and Z receive the same exponent but Y receives a different one. The fseq-based Superset Principle predicts this cannot happen.

                Equations
                • One or more equations did not get rendered due to their size.
                Instances For
                  theorem Morphology.Nanosyntax.smaller_entry_dominates_below (α β : LexEntry) (rY rX : ) (hX_le_Y : rX rY) (hβ_matches_Y : β.matches rY = true) (hα_matches_Y : α.matches rY = true) (hβ_beats_α : β.rank < α.rank) :
                  β.matches rX = true α.matches rX = true β.rank < α.rank

                  If entry β (rank rβ) beats entry α (rank rα) for case Y (rank rY), then β also beats α for all cases X with rank rX ≤ rY. This is because:

                  1. β matches Y → β.rank ≥ rY ≥ rX → β matches X
                  2. β beats α for Y → β.rank < α.rank (both match, β is smaller)
                  3. Both match X, β is still smaller → β beats α for X too

                  Consequence: if β wins over α anywhere on the fseq, β wins for all cases below that point. There is no way for α to resurface below β — hence no ABA.

                  Case ranks on the fseq, matching containmentRank. NOM = 0, ACC = 1, GEN = 2, DAT = 3.

                  Equations
                  Instances For

                    ABB pattern: entry A at rank 0 (NOM-sized), entry B at rank 3 (DAT-sized = covers everything).

                    • NOM: A (rank 0) vs B (rank 3), both match, A wins → "A"
                    • ACC: only B matches → "B"
                    • GEN: only B matches → "B"
                    • DAT: only B matches → "B"
                    Equations
                    Instances For

                      ABB has no ABA violation.

                      AAB pattern: entry A at rank 2 (GEN-sized), entry B at rank 3 (DAT-sized).

                      • NOM: A (rank 2) vs B (rank 3), both match, A wins → "A"
                      • ACC: A vs B, A wins → "A"
                      • GEN: A vs B, A wins → "A"
                      • DAT: only B matches → "B"
                      Equations
                      Instances For

                        AABB pattern: entry A at rank 1 (ACC-sized), entry B at rank 3.

                        • NOM: A (rank 1) vs B (rank 3), A wins → "A"
                        • ACC: A vs B, A wins → "A"
                        • GEN: only B matches → "B"
                        • DAT: only B matches → "B"
                        Equations
                        Instances For

                          Total syncretism: a single entry at rank 3 matches everything. One form for all cases.

                          Equations
                          Instances For

                            *ABA is impossible. With entries at ranks 0 and 2 (trying to skip rank 1), the rank-2 entry matches rank 1 too — and beats the rank-0 entry for rank 0 as well! Result: B–B–B, not A–B–A.

                            Equations
                            Instances For

                              Even with three entries, *ABA is impossible. Adding a third entry at rank 2 with exponent "A" doesn't help — entries at the same rank compete, and only one can win. The fseq structure ensures contiguity.

                              Equations
                              Instances For

                                Map a Core.Case to a Nanosyntax target rank via the existing containment hierarchy. Returns none for cases not on the standard fseq (e.g., ERG/ABS).

                                Equations
                                Instances For
                                  def Morphology.Nanosyntax.spelloutCase (entries : List LexEntry) (c : Core.Case) :
                                  Option String

                                  Spellout a case directly: look up the case's rank, then apply phrasal spellout.

                                  Equations
                                  Instances For
                                    theorem Morphology.Nanosyntax.gap_propagates_upward (lex : List LexEntry) (r r' : ) (h : spellout lex r = none) (hr : r r') :
                                    spellout lex r' = none

                                    Paradigm gap monotonicity: if spellout fails at rank r, it fails at all higher ranks. This follows from the Superset Principle — an entry matching rank r' ≥ r would also match rank r.

                                    Morphological type of an exponent derived from nanosyntactic spellout. Suffixes arise from spellout-driven movement (roll-up, unary foot); prefixes arise from subderivation (binary foot).

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