Documentation

Linglib.Syntax.Minimalist.Linearization.Externalization

Externalization on the SyntacticObject carrier #

This file defines the selection-induced linearization of syntactic objects ([MCB25] §1.12.1, §1.13): the surface token order obtained by placing the projecting daughter's yield on a language's harmonic head side. Lemma 1.13.5 identifies head functions on a binary tree with its planar embeddings, and Lemma 1.13.7 identifies head functions with bare-phrase-structure projection ([Cho95a]); composed with [Adg03]'s identification of the projecting item as the selecting item (a synthesis step of this formalization, not a claim of the book), c-selection computes the planar order.

Main declarations #

Main results #

Implementation notes #

Head functions are partial ([MCB25] §1.13.2): at exocentric nodes no daughter projects and no order is determined — the book rejects inducing one from a total order on labels as "not a realistic linguistic assumption" — so the state is 0 there, the absorbing element of the book's renormalization reading of partial head functions. The selection state and the yield are the book's two descriptions of one head function: eq. (1.13.3) reads h(T) as "a single leaf (the head)" or as the ordered leaf sequence, "switch[ing] between these two descriptions without changing the notation". LinearizationState fuses them into one partial value, making Dom(yield) = Dom(h) true by construction. Naming: the head-function maps (headHom and the leaf data it lifts) carry the book's name for h; the value type does not — the book restricts "the term head to terminal elements" (quoting [Cho95a] §4), and the strict head is recovered via sel. SyntacticObject.linearize is the harmonic candidate for the externalization section σ_L, defined on Dom(h) only — the book's σ_L must extend it noncanonically off Dom(h). Conceptually the yield component is WithZero (FreeMonoid LIToken): a silent trace is the unit, exocentricity the absorbing zero, and head-final placement is multiplication in the opposite monoid.

Only the two harmonic sections are realized: uniform head-side placement is right for head–complement structure but does not model specifier placement (that needs the headSide : Cat → ConventionDir refinement noted at ConventionDir).

Place the head daughter's yield on the convention side: .initial → head-yield first, .final → head-yield last.

Equations
Instances For

    The linearization state #

    The value of the head function in its two descriptions: the projecting head with its residual stack, enriched with the yield; 0 off Dom(h). The side parameter is phantom in the carrier — the multiplication reads it.

    Instances For
      def Minimalist.instDecidableEqLinearizationState.decEq {side✝ : ConventionDir} (x✝ x✝¹ : LinearizationState side✝) :
      Decidable (x✝ = x✝¹)
      Equations
      Instances For
        def Minimalist.LinearizationState.of {side : ConventionDir} (tok : LIToken) (stack : List Cat) (yld : List LIToken) :

        A defined state: projecting head tok, residual stack stack, yield yld.

        Equations
        Instances For
          @[implicit_reducible]

          Merge-local externalization: the selCombine decision places the projecting daughter's yield on the convention side; 0 is absorbing.

          Equations
          • One or more equations did not get rendered due to their size.
          theorem Minimalist.LinearizationState.some_mul_some {side : ConventionDir} (s₁ s₂ : LIToken × List Cat) (y₁ y₂ : List LIToken) :
          { toOption := some (s₁, y₁) } * { toOption := some (s₂, y₂) } = { toOption := Option.map (fun (p : Bool × LIToken × List Cat) => (p.2, placeYield side (bif p.1 then y₁ else y₂) (bif p.1 then y₂ else y₁))) (selCombine { toOption := some s₁ } { toOption := some s₂ }) }

          * on defined states: the canonical accessor.

          The projection to the selection state: forgetting the order description.

          Equations
          • One or more equations did not get rendered due to their size.
          Instances For
            @[simp]
            theorem Minimalist.LinearizationState.sel_of {side : ConventionDir} (tok : LIToken) (stack : List Cat) (yld : List LIToken) :
            sel (of tok stack yld) = SelectionState.of tok stack

            The yield component: the ordered leaf sequence, none off Dom(h).

            Equations
            Instances For
              @[simp]
              theorem Minimalist.LinearizationState.yield_of {side : ConventionDir} (tok : LIToken) (stack : List Cat) (yld : List LIToken) :
              (of tok stack yld).yield = some yld

              Externalization on SyntacticObject #

              The head function's value on a syntactic object: the liftFun of pronounced lexical leaves and the silent, saturated trace.

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

                The head function as a morphism of magmas ([MCB25] §1.13's algebraic frame): Merge multiplies constituents, h multiplies states.

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

                  Fusion: the selection component of the head function's value is the selection check — two morphisms agreeing on the leaves (hom_ext).

                  The surface token order under head-side convention side ([MCB25] §1.12.1): the yield readout of the linearization state. Not a morphism — placing a yield needs the head.

                  Equations
                  Instances For
                    def Minimalist.SyntacticObject.phonYield (side : ConventionDir) (s : SyntacticObject) :
                    Option (List String)

                    The pronounced surface forms: the yield with unpronounced tokens dropped.

                    Equations
                    Instances For
                      @[simp]
                      theorem Minimalist.SyntacticObject.linearize_lexLeaf (side : ConventionDir) (tok : LIToken) :
                      linearize side (lexLeaf tok) = some [tok]