Case #
@cite{blake-1994} @cite{anderson-jm-2006} @cite{stassen-1985} @cite{comrie-1978} @cite{dixon-1994} @cite{heine-2009}
Framework-agnostic case infrastructure drawn from @cite{blake-1994}'s cross-linguistic survey and @cite{anderson-jm-2006}'s localist case grammar.
§ 1–3: Case Inventory (@cite{blake-1994}). 19 cross-linguistic case values, exhaustive enumeration, and case assignment modes.
§ 4–5: Blake's Hierarchy (@cite{blake-1994}, §5.8). Implicational hierarchy over case inventories with contiguity checking.
§ 6–11: Feature Decomposition (@cite{anderson-jm-2006}). Three first-order case features [abs, src, loc], 8 case relations, subject selection hierarchy, scenarios, and morphological case mapping.
§ 12: Split Ergativity (@cite{blake-1994}, @cite{dixon-1994}). Parameterized split-ergative conditioning.
§ 13: Case Extension (@cite{heine-2009}). Grammaticalization of case functions: source categories, extension paths (Table 29.6), chains, principles, and beyond-case targets.
§ 14: Comparative Entry (@cite{stassen-1985}). Typed record for comparative construction parameters.
Nanosyntax-specific material (Caha's containment hierarchy, *ABA constraint,
syncretism adjacency) lives in Theories/Morphology/CaseContainment.lean.
The two major morphosyntactic alignment families.
- accusative : AlignmentFamily
- ergative : AlignmentFamily
Instances For
Equations
- Core.instBEqAlignmentFamily.beq x✝ y✝ = (x✝.ctorIdx == y✝.ctorIdx)
Instances For
Equations
Equations
- Core.instReprAlignmentFamily = { reprPrec := Core.instReprAlignmentFamily.repr }
Equations
- One or more equations did not get rendered due to their size.
Instances For
Cross-linguistic case inventory (@cite{blake-1994}, Chs. 2, 5).
The 19 values cover the morphological cases attested across Blake's typological sample. Ordered roughly by the Blake hierarchy, from core grammatical cases to peripheral semantic cases.
- nom : Case
- acc : Case
- erg : Case
- abs : Case
- gen : Case
- dat : Case
- loc : Case
- abl : Case
- all : Case
- inst : Case
- com : Case
- voc : Case
- part : Case
- perl : Case
- ben : Case
- caus : Case
- ess : Case
- transl : Case
- abess : Case
Instances For
Equations
- Core.instBEqCase.beq x✝ y✝ = (x✝.ctorIdx == y✝.ctorIdx)
Instances For
Equations
- Core.instBEqCase = { beq := Core.instBEqCase.beq }
Equations
- Core.instReprCase = { reprPrec := Core.instReprCase.repr }
Equations
- Core.instReprCase.repr Core.Case.nom prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Core.Case.nom")).group prec✝
- Core.instReprCase.repr Core.Case.acc prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Core.Case.acc")).group prec✝
- Core.instReprCase.repr Core.Case.erg prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Core.Case.erg")).group prec✝
- Core.instReprCase.repr Core.Case.abs prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Core.Case.abs")).group prec✝
- Core.instReprCase.repr Core.Case.gen prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Core.Case.gen")).group prec✝
- Core.instReprCase.repr Core.Case.dat prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Core.Case.dat")).group prec✝
- Core.instReprCase.repr Core.Case.loc prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Core.Case.loc")).group prec✝
- Core.instReprCase.repr Core.Case.abl prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Core.Case.abl")).group prec✝
- Core.instReprCase.repr Core.Case.all prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Core.Case.all")).group prec✝
- Core.instReprCase.repr Core.Case.inst prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Core.Case.inst")).group prec✝
- Core.instReprCase.repr Core.Case.com prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Core.Case.com")).group prec✝
- Core.instReprCase.repr Core.Case.voc prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Core.Case.voc")).group prec✝
- Core.instReprCase.repr Core.Case.part prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Core.Case.part")).group prec✝
- Core.instReprCase.repr Core.Case.perl prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Core.Case.perl")).group prec✝
- Core.instReprCase.repr Core.Case.ben prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Core.Case.ben")).group prec✝
- Core.instReprCase.repr Core.Case.caus prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Core.Case.caus")).group prec✝
- Core.instReprCase.repr Core.Case.ess prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Core.Case.ess")).group prec✝
- Core.instReprCase.repr Core.Case.transl prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Core.Case.transl")).group prec✝
- Core.instReprCase.repr Core.Case.abess prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Core.Case.abess")).group prec✝
Instances For
Equations
Instances For
Equations
- Core.instInhabitedCase = { default := Core.instInhabitedCase.default }
All 19 case values (for finite verification).
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- c.inAllCases = Core.Case.allCases.any fun (x : Core.Case) => x == c
Instances For
How case is assigned to an NP in a given construction (@cite{stassen-1985}, §2.2.1).
- derived : CaseAssignment
- fixed : CaseAssignment
Instances For
Equations
Equations
- Core.instBEqCaseAssignment.beq x✝ y✝ = (x✝.ctorIdx == y✝.ctorIdx)
Instances For
Equations
- One or more equations did not get rendered due to their size.
- Core.instReprCaseAssignment.repr Core.CaseAssignment.fixed prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Core.CaseAssignment.fixed")).group prec✝
Instances For
Equations
- Core.instReprCaseAssignment = { reprPrec := Core.instReprCaseAssignment.repr }
For fixed-case NPs, what syntactic role the NP occupies.
- directObject : FixedCaseEncoding
- adverbial : FixedCaseEncoding
Instances For
Equations
Equations
- Core.instBEqFixedCaseEncoding.beq x✝ y✝ = (x✝.ctorIdx == y✝.ctorIdx)
Instances For
Equations
Equations
- One or more equations did not get rendered due to their size.
Instances For
The three spatial cases that serve as adverbial markers cross-linguistically (@cite{stassen-1985}, §2.2.3).
Instances For
Position on Blake's case hierarchy (@cite{blake-1994}, §5.8, ex. 68).
Higher rank = more likely to exist in a language's case inventory.
Ranks: 6 = core (NOM/ACC/ERG/ABS), 5 = GEN, 4 = DAT, 3 = LOC, 2 = ABL/INST, 1 = COM/ALL/PERL/BEN, 0 = VOC/PART/CAUS/ESS/TRANSL/ABESS.
Equations
- Core.Case.nom.hierarchyRank = 6
- Core.Case.acc.hierarchyRank = 6
- Core.Case.erg.hierarchyRank = 6
- Core.Case.abs.hierarchyRank = 6
- Core.Case.gen.hierarchyRank = 5
- Core.Case.dat.hierarchyRank = 4
- Core.Case.loc.hierarchyRank = 3
- Core.Case.abl.hierarchyRank = 2
- Core.Case.inst.hierarchyRank = 2
- Core.Case.com.hierarchyRank = 1
- Core.Case.all.hierarchyRank = 1
- Core.Case.perl.hierarchyRank = 1
- Core.Case.ben.hierarchyRank = 1
- Core.Case.voc.hierarchyRank = 0
- Core.Case.part.hierarchyRank = 0
- Core.Case.caus.hierarchyRank = 0
- Core.Case.ess.hierarchyRank = 0
- Core.Case.transl.hierarchyRank = 0
- Core.Case.abess.hierarchyRank = 0
Instances For
A case inventory is contiguous (no rank gaps) on the hierarchy. Formalizes Blake's implicational tendency (1994, §5.8).
Equations
- One or more equations did not get rendered due to their size.
Instances For
Anderson's three first-order case features (@cite{anderson-jm-2006}, Ch. 6).
- abs : CaseFeature
- src : CaseFeature
- loc : CaseFeature
Instances For
Equations
- Core.instBEqCaseFeature.beq x✝ y✝ = (x✝.ctorIdx == y✝.ctorIdx)
Instances For
Equations
Equations
- Core.instReprCaseFeature = { reprPrec := Core.instReprCaseFeature.repr }
Equations
- Core.instReprCaseFeature.repr Core.CaseFeature.abs prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Core.CaseFeature.abs")).group prec✝
- Core.instReprCaseFeature.repr Core.CaseFeature.src prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Core.CaseFeature.src")).group prec✝
- Core.instReprCaseFeature.repr Core.CaseFeature.loc prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Core.CaseFeature.loc")).group prec✝
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
Instances For
Equations
Equations
- Core.instReprCaseRelation = { reprPrec := Core.instReprCaseRelation.repr }
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
Equations
Instances For
Instances For
Instances For
Instances For
Instances For
Instances For
Instances For
Instances For
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- cr.inAll = Core.CaseRelation.all.any fun (x : Core.CaseRelation) => x == cr
Instances For
A predicate's scenario (@cite{anderson-jm-2006}, Ch. 6): the case relations assigned to its arguments.
- relations : List CaseRelation
Instances For
Equations
- Core.instReprScenario = { reprPrec := Core.instReprScenario.repr }
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
Instances For
Instances For
Equations
Instances For
Equations
- Core.Scenario.unergative = { relations := [Core.CaseRelation.ergative] }
Instances For
Equations
Instances For
Equations
Instances For
Equations
Instances For
Canonical mapping from Blake's morphological cases to Anderson's case-feature bundles (@cite{anderson-jm-2006}, Ch. 6).
Equations
- Core.Case.nom.toCaseRelation = some Core.CaseRelation.srcAbs
- Core.Case.acc.toCaseRelation = some Core.CaseRelation.absolutive
- Core.Case.erg.toCaseRelation = some Core.CaseRelation.srcAbs
- Core.Case.abs.toCaseRelation = some Core.CaseRelation.absolutive
- Core.Case.abl.toCaseRelation = some Core.CaseRelation.locative
- Core.Case.loc.toCaseRelation = some Core.CaseRelation.locative
- Core.Case.inst.toCaseRelation = some Core.CaseRelation.ergative
- x✝.toCaseRelation = none
Instances For
A split-ergative system (@cite{blake-1994}, @cite{dixon-1994}): alignment varies by some conditioning factor.
- ergCondition : Factor → Bool
Instances For
Equations
- split.alignment f = if split.ergCondition f = true then Core.AlignmentFamily.ergative else Core.AlignmentFamily.accusative
Instances For
Equations
- Core.instBEqAspect = { beq := Core.instBEqAspect.beq }
Equations
- Core.instBEqAspect.beq x✝ y✝ = (x✝.ctorIdx == y✝.ctorIdx)
Instances For
Equations
- Core.instReprAspect.repr Core.Aspect.perfective prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Core.Aspect.perfective")).group prec✝
- Core.instReprAspect.repr Core.Aspect.imperfective prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Core.Aspect.imperfective")).group prec✝
Instances For
Equations
- Core.instReprAspect = { reprPrec := Core.instReprAspect.repr }
Equations
- Core.hindiSplit = { ergCondition := fun (a : Core.Aspect) => a == Core.Aspect.perfective }
Instances For
The four principles governing grammaticalization of case markers. Development from lexical item to case marker is unidirectional and involves all or a subset of these principles.
- extension : GramPrinciple
Use extended to wider range of complement nouns; meaning generalizes.
- desemanticization : GramPrinciple
Lexical meaning lost; schematic case function acquired.
- decategorialization : GramPrinciple
Morphosyntactic properties lost: becomes invariable clitic/affix, positionally restricted, paradigm shrinks.
- erosion : GramPrinciple
Phonetic substance lost: loses stress, assimilates to host, may reduce to zero.
Instances For
Equations
- Core.instBEqGramPrinciple.beq x✝ y✝ = (x✝.ctorIdx == y✝.ctorIdx)
Instances For
Equations
Equations
- One or more equations did not get rendered due to their size.
- Core.instReprGramPrinciple.repr Core.GramPrinciple.erosion prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Core.GramPrinciple.erosion")).group prec✝
Instances For
Equations
- Core.instReprGramPrinciple = { reprPrec := Core.instReprGramPrinciple.repr }
Source category of a case marker on the grammaticalization cline (@cite{heine-2009} §29.1 eq. (1), §29.2).
noun, verb (> adverb) > adposition > case affix > loss
Parallel to Diachronic.Grammaticalization.GramStage (for verbal
elements), but specific to case-marker development.
- lexical : CaseGramStage
Lexical noun or verb source (§29.2.1–29.2.2).
- adposition : CaseGramStage
Free adposition: preposition or postposition (§29.2.3).
- caseAffix : CaseGramStage
Bound case affix: suffix or prefix (§29.2.3 endpoint).
- lost : CaseGramStage
Case marker lost: erosion endpoint or merger.
Instances For
Equations
Equations
- Core.instBEqCaseGramStage.beq x✝ y✝ = (x✝.ctorIdx == y✝.ctorIdx)
Instances For
Equations
- One or more equations did not get rendered due to their size.
- Core.instReprCaseGramStage.repr Core.CaseGramStage.lexical prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Core.CaseGramStage.lexical")).group prec✝
- Core.instReprCaseGramStage.repr Core.CaseGramStage.lost prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Core.CaseGramStage.lost")).group prec✝
Instances For
Equations
- Core.instReprCaseGramStage = { reprPrec := Core.instReprCaseGramStage.repr }
Boundedness increases monotonically along the case cline.
Equations
Instances For
Equations
- Core.instLECaseGramStage = { le := fun (a b : Core.CaseGramStage) => a.boundedness ≤ b.boundedness }
Equations
- Core.instLTCaseGramStage = { lt := fun (a b : Core.CaseGramStage) => a.boundedness < b.boundedness }
Equations
Equations
Extension from one case function to another (@cite{heine-2009} Table 29.6).
When a case marker's use is extended from one syntactic context to another, the source function is less grammaticalized than the target. Direction is always concrete/peripheral → abstract/core.
Three Table 29.6 targets are not representable as Case values and are
omitted: purposive (from allative, benefactive), manner (from
comitative, instrumental), agent (from locative; collapses with
ergative in our system). The A → S core realignment is also omitted
(it concerns grammatical roles, not morphological cases).
See also Phenomena.Possession.Typology.PossessionSource for
@cite{heine-2009} Table 29.5 (possessive case sources, adapted from
@cite{heine-1997}).
Equations
- Core.caseExtension Core.Case.abl = [Core.Case.caus, Core.Case.gen, Core.Case.part, Core.Case.inst]
- Core.caseExtension Core.Case.all = [Core.Case.ben, Core.Case.dat, Core.Case.acc]
- Core.caseExtension Core.Case.com = [Core.Case.inst, Core.Case.erg, Core.Case.gen]
- Core.caseExtension Core.Case.dat = [Core.Case.acc]
- Core.caseExtension Core.Case.inst = [Core.Case.erg]
- Core.caseExtension Core.Case.loc = [Core.Case.com, Core.Case.erg, Core.Case.inst]
- Core.caseExtension x✝ = []
Instances For
Chain (2a): allative > benefactive > purposive. Only the first step is representable as Case → Case.
Chain (2b): allative > dative > accusative/O.
Both steps are in caseExtension.
Chain (2c): locative > comitative > instrumental > manner. The first two steps are representable as Case → Case.
Transitivity: if c₁ extends to c₂ and c₂ extends to c₃, then c₃ is reachable from c₁ via a two-step grammaticalization chain.
Equations
- Core.caseExtensionReachable2 c₁ c₃ = (Core.caseExtension c₁).any fun (c₂ : Core.Case) => (Core.caseExtension c₂).any fun (x : Core.Case) => x == c₃
Instances For
Accusative is reachable from allative in two steps (via dative).
Instrumental is reachable from locative in two steps (via comitative).
Case markers can further grammaticalize into non-case functions. These are the four main directions (@cite{heine-2009} §29.4).
- clauseSubordinator : BeyondCaseTarget
Case → clause subordinator (e.g., Newari instrumental -na → temporal subordinator).
- modalMarker : BeyondCaseTarget
Case → modality marker: subordinate clauses acquire subjunctive/ irrealis readings (connects to
Semantics.Modality.Narrog). - conjunction : BeyondCaseTarget
Comitative → NP conjunction 'and' (e.g., X with Y → X and Y).
- tenseMarker : BeyondCaseTarget
Purposive → future tense marker.
Instances For
Equations
- Core.instBEqBeyondCaseTarget.beq x✝ y✝ = (x✝.ctorIdx == y✝.ctorIdx)
Instances For
Equations
Equations
Equations
- One or more equations did not get rendered due to their size.
Instances For
A language's comparative construction entry (@cite{stassen-1985}).
- standardCase : Case
- caseAssignment : CaseAssignment
- fixedEncoding : Option FixedCaseEncoding
- standardMarker : String
- hasDegreeMorphology : Bool
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.
- Core.instBEqComparativeEntry.beq x✝¹ x✝ = false