Case assignment provenance — the neutral source ontology #
Case.Source is the coarsened provenance of an assigned case — the
dimension on which the formalized assignment accounts agree that a case
"comes from" somewhere. It is not a theory-neutral universal: it is the
common quotient that Marantz dependent case (Syntax/Case/Dependent.lean's
CaseSource) and Kalin hybrid licensing (Syntax/Case/Licensing.lean's
LicensingOutcome) both map into (toNeutral), so a cross-theory
comparison can ask whether two accounts agree on provenance, not merely on
the surface case. Each account keeps its own finer source enum; Source is
where they become commensurable.
Living in Features/ — below the assignment theories — lets both theories
project into it (and lets a future pooled comparison name it). The
structural-vs-inherent split lives here, on the provenance, not on the
inventory cell (Features/Case/Basic.lean): whether a given case, e.g.
ergative, is "structural" is a contested claim about its source
([Woo06]), which different accounts answer differently — so it is
not a property of the Case value.
The provenance of an assigned case, coarsened across the formalized accounts:
structural— valued by configuration or Agree (Marantzdependent, Chomskyanagree, Kalin primary/secondary licensing);inherent— lexical/quirky, θ-associated (Marantzlexical, KalinbyLexical);default— elsewhere / last-resort unmarked case;uncased— no source valued the nominal: the crash (Kalinunlicensed, a Case-Filter violation).
A total assignment account never produces uncased; a licensing
account can.
Instances For
Equations
- Case.instDecidableEqSource x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
- Case.instReprSource = { reprPrec := Case.instReprSource.repr }
Equations
- Case.instReprSource.repr Case.Source.structural prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Case.Source.structural")).group prec✝
- Case.instReprSource.repr Case.Source.inherent prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Case.Source.inherent")).group prec✝
- Case.instReprSource.repr Case.Source.default prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Case.Source.default")).group prec✝
- Case.instReprSource.repr Case.Source.uncased prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Case.Source.uncased")).group prec✝
Instances For
Equations
- Case.instInhabitedSource = { default := Case.instInhabitedSource.default }
The case was valued by configuration or Agree. The structural-vs-inherent
distinction is a property of the source, not of the Case cell.
Equations
- s.IsStructural = (s = Case.Source.structural)
Instances For
The derivation crashed: no source valued the nominal. Distinguishes a licensing account (which can fail) from a total assignment account.
Equations
- s.IsCrash = (s = Case.Source.uncased)