Documentation

Linglib.Theories.Syntax.Case.Licensing

Hybrid Licensing #

@cite{kalin-2018} @cite{coon-keine-2021} @cite{marantz-1991} @cite{baker-2015}

A theory of nominal licensing that decouples which nominals need licensing from where the licensers live. Following @cite{kalin-2018}'s analysis of differential object marking (DOM) in the Neo-Aramaic language Senaya, every clause carries

  1. an obligatory primary licenser (always merged), plus
  2. zero or more secondary licensers that merge only when their inactivity would cause some nominal to remain unlicensed — essentially a global last-resort economy condition on functional structure.

Independently, languages parameterize which nominals need licensing in the first place. Some make every nominal need licensing (no DOM); others restrict the licensing requirement to nominals carrying certain structural/featural components (e.g., [+specific], [+definite], [+animate]) — yielding DOM as the visible signature of secondary licensers being activated.

Feature-Theoretic Implementation #

@cite{kalin-2018} cashes "needs licensing" as carrying an uninterpretable, unvalued [Case] feature in the @cite{pesetsky-torrego-2007} framework: licensing is feature valuation via Agree with an active licenser. Nominals without the unvalued feature are not active for licensing — they are interpretable in situ. The needsLicensing flag on LicensedNP is the Boolean abstraction of this feature; the caseFeature accessor returns the NP's licensing-relevant case state (valued by lexical case, valued by a licenser, or unvalued).

Why "Hybrid" #

The architecture is hybrid in two senses:

Two Parameters #

A language's licensing system is determined by:

DOM patterns fall out from the interaction. A nominal is unmarked if the primary licenser suffices; marked if convergence required activating a secondary licenser. Non-DOM languages either (a) license every nominal via the primary head (no secondary licenser ever activates) or (b) make every nominal need licensing so that secondary licensers always activate uniformly.

Relation to Other Case Theories #

Bridge to the Case Filter #

§ 7 connects this module's LicensingOutcome to the Chomskyan Case Filter formalized in Theories/Syntax/Minimalism/CaseFilter.lean: an outcome that values Case (any of .byPrimary, .bySecondary, or .byLexical) satisfies the Case Filter, while .unlicensed does not. Kalin's framework thus derives the Case Filter as the convergence condition on hybrid licensing rather than stipulating it.

A licenser merges either obligatorily (primary) or as a last-resort response to convergence requirements (secondary). Following @cite{kalin-2018}: every clause has exactly one primary licenser (e.g., T) and any number of secondary licensers (e.g., dedicated AGRO heads, prepositional case-assigners hosting DOM markers).

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

      A nominal licenser, identified by its host head and merge kind. The head field is opaque — concrete languages instantiate it with e.g. "T", "AGRO", "P-DOM". The case actually realized on the licensed NP is assignedCase.

      Instances For
        def Syntax.Case.Licensing.instDecidableEqLicenser.decEq (x✝ x✝¹ : Licenser) :
        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

            Is this licenser primary (obligatorily merged in every clause)?

            Equations
            Instances For

              A nominal as seen by the licensing system. Extends NPInDomain (the configural type from Dependent.lean) with the licensing-requirement flag.

              needsLicensing = true is the Boolean abstraction of carrying an uninterpretable, unvalued [Case] feature in the @cite{pesetsky-torrego-2007} sense: the NP cannot be interpreted without being valued by an active licenser. needsLicensing = false means the NP lacks this feature (the [-specific] / [-definite] / [-animate] cell of a DOM language) and is interpretable in situ.

              lexicalCase (inherited from NPInDomain) records pre-assigned lexical case from a P or V head; lexical case independently values [Case] and so satisfies the licensing requirement on its own.

              Instances For
                def Syntax.Case.Licensing.instDecidableEqLicensedNP.decEq (x✝ x✝¹ : LicensedNP) :
                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

                    An NP's effective case state: none if it carries unvalued [Case] and has no lexical case; some c if either it has lexical case c or its [Case] feature is interpretable (no licensing needed). The accessor exposes the Pesetsky-Torrego abstraction underlying needsLicensing + lexicalCase.

                    Equations
                    Instances For

                      An NP is active for licensing iff it carries unvalued [Case] and has no lexical case independently satisfying the requirement.

                      Equations
                      Instances For

                        A clause's licensing potential: its primary licenser plus the secondary licensers available for last-resort activation. @cite{kalin-2018}: every clause has exactly one primary licenser; secondaries are language-specific and may be empty.

                        Instances For

                          All licensers in the clause, primary first.

                          Equations
                          Instances For

                            Outcome of licensing a nominal. Each constructor records which licenser valued the NP's [Case] feature and what case was assigned, so two clauses with different primary heads (T vs. Infl) or different secondary assigners produce distinguishable results.

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

                                  Has this NP's [Case] feature been valued? true for any of the three valuation outcomes; false only for .unlicensed.

                                  Equations
                                  Instances For

                                    The result of licensing a single NP.

                                    Instances For
                                      def Syntax.Case.Licensing.instDecidableEqLicensedResult.decEq (x✝ x✝¹ : LicensedResult) :
                                      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
                                          def Syntax.Case.Licensing.licenseActive (primary : Licenser) (secondaries : List Licenser) (active : List LicensedNP) :

                                          License a list of active (need-licensing, no lexical-case) NPs given a primary licenser and a queue of secondary licensers. The primary licenser handles the first NP; subsequent NPs draw from the secondary queue in order.

                                          @cite{kalin-2018}'s economy condition on secondary licensers — that a secondary is "active" iff its inactivity would leave some nominal unlicensed — is implemented here by greedily consuming secondaries only when active NPs remain.

                                          Equations
                                          Instances For

                                            License a list of NPs by mapping each to its outcome via three disjoint branches:

                                            • lexical case present → .byLexical,
                                            • no lexical case and not active → primary licenses trivially,
                                            • active → look up the label in the result of licenseActive on the active sublist.

                                            Mapping (rather than concatenating filtered partitions) makes the output the same length as the input by construction, and preserves the input's label order. NPs are assumed to have distinct labels; this is a representational invariant (a Spell-Out domain doesn't contain two NPs with the same opaque label).

                                            Equations
                                            • One or more equations did not get rendered due to their size.
                                            Instances For
                                              def Syntax.Case.Licensing.getOutcomeOf (label : String) (results : List LicensedResult) :

                                              Look up the licensing outcome for an NP by label.

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

                                                A nominal is DOM-marked iff licensing required activating a secondary licenser. The unmarked/marked split in DOM languages is thus derivative of the licensing algorithm rather than a primitive of the case system.

                                                Equations
                                                Instances For
                                                  @[implicit_reducible]
                                                  Equations
                                                  • One or more equations did not get rendered due to their size.
                                                  def Syntax.Case.Licensing.domMarkedNPs (results : List LicensedResult) :
                                                  List String

                                                  The set of DOM-marked NP labels in a result list.

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

                                                    These hold for arbitrary inputs and lock down the algorithm's shape: the secondary queue is consumed left-to-right, and an NP is licensed iff the algorithm could supply it with some licenser.

                                                    theorem Syntax.Case.Licensing.licenseSecondaries_length (avail : List Licenser) (active : List LicensedNP) :
                                                    (Syntax.Case.Licensing.licenseSecondaries✝ avail active).length = active.length
                                                    theorem Syntax.Case.Licensing.licenseActive_length (primary : Licenser) (secondaries : List Licenser) (active : List LicensedNP) :
                                                    (licenseActive primary secondaries active).length = active.length
                                                    theorem Syntax.Case.Licensing.licenseNPs_length (cl : ClauseLicensers) (nps : List LicensedNP) :
                                                    (licenseNPs cl nps).length = nps.length

                                                    Totality of the licensing algorithm. Every input NP yields exactly one output result, in the same order. The algorithm preserves the NP inventory of the input.

                                                    theorem Syntax.Case.Licensing.licenseNPs_labels (cl : ClauseLicensers) (nps : List LicensedNP) :
                                                    List.map (fun (x : LicensedResult) => x.label) (licenseNPs cl nps) = List.map (fun (x : LicensedNP) => x.label) nps

                                                    The output preserves input labels in order — by construction, since every constructor in the body of licenseNPs sets label := np.label.

                                                    theorem Syntax.Case.Licensing.first_active_byPrimary (primary : Licenser) (secondaries : List Licenser) (np : LicensedNP) (rest : List LicensedNP) :
                                                    (licenseActive primary secondaries (np :: rest))[0]? = some { label := np.label, outcome := LicensingOutcome.byPrimary primary.head primary.assignedCase }

                                                    The first active NP (in c-command order) is always licensed by the primary head — this is the structural content of "every clause carries an obligatory primary licenser."

                                                    Kalin Thesis 1 (some NPs need licensing). A non-needing NP receives .byPrimary regardless of its position — no secondary is consumed on its behalf. Captured here as: an NP with needsLicensing = false and no lexical case is filtered out of active and so gets the primary outcome via licenseNPs.

                                                    theorem Syntax.Case.Licensing.licenseActive_no_crash_when_enough_secondaries (primary : Licenser) (secondaries : List Licenser) (active : List LicensedNP) (h : active.length secondaries.length + 1) (r : LicensedResult) :
                                                    r licenseActive primary secondaries activer.outcome LicensingOutcome.unlicensed

                                                    Kalin Thesis 2 (all NPs CAN be licensed). Given enough secondaries (one fewer than the active-NP count, since the primary handles the first), every active NP is licensed: no .unlicensed outcome arises in licenseActive.

                                                    Kalin Thesis 3 (primary obligatory + secondary last-resort). If no NP needs licensing (and none has lexical case), every NP gets .byPrimary — secondaries never activate.

                                                    Connects LicensingOutcome to the Chomskyan Case Filter formalized in Minimalism/CaseFilter.lean: an outcome valued by any mechanism (primary, secondary, or lexical) satisfies the Case Filter; only .unlicensed violates it. Kalin's framework thus derives the Case Filter as the convergence condition on hybrid licensing — not a separate stipulation.

                                                    Bridge: licensing convergence ⟺ Case Filter satisfied. A nominal's [Case] is valued by some hybrid-licensing mechanism iff it satisfies the Chomskyan Case Filter. The two convergence conditions are extensionally equivalent — making the Case Filter a theorem of hybrid licensing rather than an independent axiom.

                                                    A list of licensing results converges (no .unlicensed) iff every induced DP satisfies the Case Filter.

                                                    These illustrate the algorithm on a Turkish-style DOM clause and on the degenerate no-secondary configuration. They are not the empirical core of the framework — that lives in Phenomena/Case/Studies/ — but they exercise the algorithm end-to-end and would catch breakage from any refactor of the licensing pipeline.

                                                    DOM signature: only the specific object is marked in the specific transitive; nothing is marked in the nonspecific transitive.