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
- an obligatory primary licenser (always merged), plus
- 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:
- Licensers: primary (obligatory) + secondary (last-resort) coexist
in the same clause. This contrasts with Agree-based theories
(@cite{marantz-1991} as a foil; classical Minimalism) in which case is
assigned by a fixed set of functional heads, and with dependent case
(
Dependent.lean, @cite{baker-2015}) in which configuration alone determines case without a head-based licensing requirement. - Marked vs. unmarked objects: under hybrid licensing, marked objects are not structurally distinguished from unmarked ones in the usual sense (they don't necessarily occupy a high position or escape pseudo-incorporation); the difference is that they triggered activation of a secondary licenser.
Two Parameters #
A language's licensing system is determined by:
needsLicensing : NPFeatures → Bool— which nominals require licensing- the inventory of
Licensers, of which exactly one isprimaryand the rest aresecondary
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 #
- Dependent case (
Dependent.lean, @cite{baker-2015}): configural, no head-based licensing requirement. Hybrid licensing is largely orthogonal — the two can in principle coexist in a single language, with dependent case assigning the morphological exponent and licensing determining whether a secondary licenser had to merge to host a given nominal. - Voice-based case (
Phenomena/Case/Studies/Scott2023.lean): case is keyed to argument position via Voice. Both frameworks use designated functional heads as case assigners; whether secondary licensers in a particular language are best identified with Voice flavors is a language-specific question this file does not adjudicate. - Feature gluttony (@cite{coon-keine-2021}): an alternative to licensing-based accounts of hierarchy effects (PCC, dative-nominative configurations). @cite{coon-keine-2021} argue that hierarchy effects are not due to failures of nominal licensing but to a probe participating in too many Agree dependencies. Hybrid licensing applies to DOM patterns that feature gluttony does not target; the two are adjacent debates rather than competing analyses of the same data.
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).
- primary : LicenserKind
- secondary : LicenserKind
Instances For
Equations
- Syntax.Case.Licensing.instDecidableEqLicenserKind x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
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.
- kind : LicenserKind
- head : String
- assignedCase : Core.Case
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
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.
- label : String
- lexicalCase : Option Core.Case
- needsLicensing : Bool
Instances For
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
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
- np.caseFeature = match np.lexicalCase, np.needsLicensing with | some c, x => some c | none, false => some UD.Case.nom | none, true => none
Instances For
An NP is active for licensing iff it carries unvalued [Case] and has no lexical case independently satisfying the requirement.
Equations
- np.isActive = (np.needsLicensing && np.lexicalCase.isNone)
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.
- primary : Licenser
- secondaries : List Licenser
- primary_is_primary : self.primary.kind = LicenserKind.primary
Instances For
All licensers in the clause, primary first.
Equations
- cl.all = cl.primary :: cl.secondaries
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.
- byPrimary
(head : String)
(c : Core.Case)
: LicensingOutcome
Licensed by the obligatory primary head; records the head's name and the case it assigned.
- bySecondary
(head : String)
(c : Core.Case)
: LicensingOutcome
Licensed by a last-resort secondary licenser.
- byLexical
(c : Core.Case)
: LicensingOutcome
Pre-licensed by P or V via lexical case (bleeds the Agree requirement).
- unlicensed : LicensingOutcome
Crash: no licenser available to value [Case].
Instances For
Equations
- One or more equations did not get rendered due to their size.
- Syntax.Case.Licensing.instDecidableEqLicensingOutcome.decEq (Syntax.Case.Licensing.LicensingOutcome.byPrimary head c) (Syntax.Case.Licensing.LicensingOutcome.bySecondary head_1 c_1) = isFalse ⋯
- Syntax.Case.Licensing.instDecidableEqLicensingOutcome.decEq (Syntax.Case.Licensing.LicensingOutcome.byPrimary head c) (Syntax.Case.Licensing.LicensingOutcome.byLexical c_1) = isFalse ⋯
- Syntax.Case.Licensing.instDecidableEqLicensingOutcome.decEq (Syntax.Case.Licensing.LicensingOutcome.byPrimary head c) Syntax.Case.Licensing.LicensingOutcome.unlicensed = isFalse ⋯
- Syntax.Case.Licensing.instDecidableEqLicensingOutcome.decEq (Syntax.Case.Licensing.LicensingOutcome.bySecondary head c) (Syntax.Case.Licensing.LicensingOutcome.byPrimary head_1 c_1) = isFalse ⋯
- Syntax.Case.Licensing.instDecidableEqLicensingOutcome.decEq (Syntax.Case.Licensing.LicensingOutcome.bySecondary head c) (Syntax.Case.Licensing.LicensingOutcome.byLexical c_1) = isFalse ⋯
- Syntax.Case.Licensing.instDecidableEqLicensingOutcome.decEq (Syntax.Case.Licensing.LicensingOutcome.bySecondary head c) Syntax.Case.Licensing.LicensingOutcome.unlicensed = isFalse ⋯
- Syntax.Case.Licensing.instDecidableEqLicensingOutcome.decEq (Syntax.Case.Licensing.LicensingOutcome.byLexical c) (Syntax.Case.Licensing.LicensingOutcome.byPrimary head c_1) = isFalse ⋯
- Syntax.Case.Licensing.instDecidableEqLicensingOutcome.decEq (Syntax.Case.Licensing.LicensingOutcome.byLexical c) (Syntax.Case.Licensing.LicensingOutcome.bySecondary head c_1) = isFalse ⋯
- Syntax.Case.Licensing.instDecidableEqLicensingOutcome.decEq (Syntax.Case.Licensing.LicensingOutcome.byLexical c) Syntax.Case.Licensing.LicensingOutcome.unlicensed = isFalse ⋯
- Syntax.Case.Licensing.instDecidableEqLicensingOutcome.decEq Syntax.Case.Licensing.LicensingOutcome.unlicensed (Syntax.Case.Licensing.LicensingOutcome.byPrimary head c) = isFalse ⋯
- Syntax.Case.Licensing.instDecidableEqLicensingOutcome.decEq Syntax.Case.Licensing.LicensingOutcome.unlicensed (Syntax.Case.Licensing.LicensingOutcome.bySecondary head c) = isFalse ⋯
- Syntax.Case.Licensing.instDecidableEqLicensingOutcome.decEq Syntax.Case.Licensing.LicensingOutcome.unlicensed (Syntax.Case.Licensing.LicensingOutcome.byLexical c) = isFalse ⋯
- Syntax.Case.Licensing.instDecidableEqLicensingOutcome.decEq Syntax.Case.Licensing.LicensingOutcome.unlicensed Syntax.Case.Licensing.LicensingOutcome.unlicensed = isTrue ⋯
Instances For
Equations
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
- Syntax.Case.Licensing.LicensingOutcome.unlicensed.isLicensed = false
- x✝.isLicensed = true
Instances For
The case value an outcome assigns, if any.
Equations
- (Syntax.Case.Licensing.LicensingOutcome.byPrimary a a_1).assignedCase = some a_1
- (Syntax.Case.Licensing.LicensingOutcome.bySecondary a a_1).assignedCase = some a_1
- (Syntax.Case.Licensing.LicensingOutcome.byLexical a).assignedCase = some a
- Syntax.Case.Licensing.LicensingOutcome.unlicensed.assignedCase = none
Instances For
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
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
- One or more equations did not get rendered due to their size.
- Syntax.Case.Licensing.licenseActive primary secondaries [] = []
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
licenseActiveon 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
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
Equations
- One or more equations did not get rendered due to their size.
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.
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.
The output preserves input labels in order — by construction, since
every constructor in the body of licenseNPs sets label := np.label.
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.
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.
Translate a licensing outcome into the DP feature bundle that
Minimalist.satisfiesCaseFilter consumes. Any valued outcome
becomes a DP with valued [Case]; .unlicensed becomes a DP with
unvalued [Case].
Equations
- (Syntax.Case.Licensing.LicensingOutcome.byPrimary a a_1).toDPFeatures = Minimalist.DPFeatures.withCase [] a_1
- (Syntax.Case.Licensing.LicensingOutcome.bySecondary a a_1).toDPFeatures = Minimalist.DPFeatures.withCase [] a_1
- (Syntax.Case.Licensing.LicensingOutcome.byLexical a).toDPFeatures = Minimalist.DPFeatures.withCase [] a
- Syntax.Case.Licensing.LicensingOutcome.unlicensed.toDPFeatures = Minimalist.DPFeatures.withUnvaluedCase []
Instances For
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.