Bantu Language Family: Shared Parameters #
[Car91] [Kra15] [Car26] [HH26] [Ham23]
Shared types for Bantu language fragments, capturing cross-Bantu structural regularities in the noun class system. Individual Bantu languages (Swahili, Xhosa, Shona) import these types and specialize them with language-specific class inventories and morphological forms.
Key shared structure #
- Noun classes come in singular/plural pairs that define genders ([Car91], [Kra15])
- A small number of genders have semantic cores — salient associations with entity classes like [human], [animal], [inanimate] ([Car26] §4.2)
- The semantic core determines whether a gender is interpretable (bears an i[entity] flavor) or uninterpretable (purely formal)
- All Bantu nouns are underlyingly specified for core noun class via bivalent features [±Animate] and [±Human], from [Ham23]'s containment hierarchy ([HH26] (19))
Design #
This file stores pure data — types, inventories, and status classifications.
Resolution logic (percolation, intersection) lives in the Theory layer
(GenderResolution.lean); study files connect the two.
Bivalent animacy features from [Ham23]'s containment hierarchy, applied to Bantu core noun class by [HH26].
Two features determine core noun class:
- [±Animate]: distinguishes animate from inanimate entities
- [±Human]: distinguishes humans from non-human animates
These stand in a containment relation: [+Human] entails [+Animate]
(being human entails being animate). The fourth combination
[−Animate, +Human] is semantically incoherent and ruled out by
WellFormed.
- isAnimate : Bool
- isHuman : 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
- Bantu.instReprAnimacyFeatures = { reprPrec := Bantu.instReprAnimacyFeatures.repr }
Equations
- Bantu.instFintypeAnimacyFeatures = Fintype.ofEquiv ((_ : Bool) × Bool) Bantu.AnimacyFeatures.proxyTypeEquiv
The [±Animate, ±Human] decomposition is carrier-equivalent to the
containment pair: outer = [±Animate], inner = [±Human]. The same
mathematical structure as person features (outer = [±participant],
inner = [±author]), confirming [Ham23]'s claim that person and
animacy features share a common containment architecture.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Well-formedness: [+Human] → [+Animate]. Being human entails being animate ([HH26] fn. 10).
Equations
Instances For
HUMAN = [+Animate, +Human] ≈ class 1/2
Equations
- Bantu.AnimacyFeatures.human = { isAnimate := true, isHuman := true }
Instances For
NON-HUMAN ANIMATE = [+Animate, −Human] ≈ class 9/10
Equations
- Bantu.AnimacyFeatures.animal = { isAnimate := true, isHuman := false }
Instances For
INANIMATE = [−Animate, −Human] ≈ class 7/8
Equations
- Bantu.AnimacyFeatures.inanimate = { isAnimate := false, isHuman := false }
Instances For
The fourth combination [−Animate, +Human] violates well-formedness.
Exactly three well-formed core noun classes — the carrier count of the
containment chain (ContainmentPair.card_wellFormed); any
ContainmentPairLike type supports at most 3 well-formed cells.
Bridge to Features.Prominence.AnimacyLevel: the three well-formed
feature bundles map to the three animacy levels used throughout the
codebase for differential argument marking, agreement hierarchies, etc.
Equations
- { isAnimate := isAnimate, isHuman := true }.toAnimacyLevel = Features.Prominence.AnimacyLevel.human
- { isAnimate := true, isHuman := false }.toAnimacyLevel = Features.Prominence.AnimacyLevel.animate
- { isAnimate := false, isHuman := false }.toAnimacyLevel = Features.Prominence.AnimacyLevel.inanimate
Instances For
Bantu nominalizing final vowels encode core noun class on the categorizing head n ([HH26] (22)).
- -i: n[+Animate, +Human] (human nominalizer)
- -o: n[±Animate, −Human] (non-human nominalizer)
- -a: verbalizing final vowel (not a core noun class marker)
- i : FinalVowel
- o : FinalVowel
- a : FinalVowel
Instances For
Equations
- Bantu.instDecidableEqFinalVowel x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
- Bantu.instReprFinalVowel.repr Bantu.FinalVowel.i prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Bantu.FinalVowel.i")).group prec✝
- Bantu.instReprFinalVowel.repr Bantu.FinalVowel.o prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Bantu.FinalVowel.o")).group prec✝
- Bantu.instReprFinalVowel.repr Bantu.FinalVowel.a prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Bantu.FinalVowel.a")).group prec✝
Instances For
Equations
- Bantu.instReprFinalVowel = { reprPrec := Bantu.instReprFinalVowel.repr }
Core noun class features determine the nominalizing final vowel ([HH26] (22)).
Equations
- af.toFinalVowel = if af.isHuman = true then Bantu.FinalVowel.i else Bantu.FinalVowel.o
Instances For
Semantic cores of Bantu gender: salient associations between genders and entity classes ([Car26] §4.2, (71)).
Not all Bantu genders have a semantic core. Those that do have an interpretable i[entity] flavor at their innermost nP layer. Those that don't are purely formal (uninterpretable).
Xhosa has three cores — [human], [animal], [inanimate] — reflecting a three-way entity split. Shona collapses [animal] and [inanimate] into a single [non-human] default, adding a fourth constructor. The Xhosa distinction is the parametric maximum.
- human : SemanticCore
- animal : SemanticCore
- inanimate : SemanticCore
- nonhuman : SemanticCore
Instances For
Equations
- Bantu.instDecidableEqSemanticCore x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
- Bantu.instReprSemanticCore = { reprPrec := Bantu.instReprSemanticCore.repr }
Equations
- One or more equations did not get rendered due to their size.
- Bantu.instReprSemanticCore.repr Bantu.SemanticCore.human prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Bantu.SemanticCore.human")).group prec✝
- Bantu.instReprSemanticCore.repr Bantu.SemanticCore.animal prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Bantu.SemanticCore.animal")).group prec✝
Instances For
Derive SemanticCore from bivalent features
([HH26] (19)).
Equations
- { isAnimate := true, isHuman := true }.toCoreClass = Bantu.SemanticCore.human
- { isAnimate := true, isHuman := false }.toCoreClass = Bantu.SemanticCore.animal
- { isAnimate := false, isHuman := isHuman }.toCoreClass = Bantu.SemanticCore.inanimate
Instances For
Round-trip: features → core → features is identity for well-formed features.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Bantu.instReprConflationPattern = { reprPrec := Bantu.instReprConflationPattern.repr }
Equations
- One or more equations did not get rendered due to their size.
Instances For
The number of core noun classes distinguished under a conflation pattern.
Equations
- { usesAnimate := true, usesHuman := true }.classCount = 3
- { usesAnimate := true, usesHuman := false }.classCount = 2
- { usesAnimate := false, usesHuman := true }.classCount = 2
- { usesAnimate := false, usesHuman := false }.classCount = 1
Instances For
Xhosa uses both features: three-way distinction.
Equations
- Bantu.ConflationPattern.xhosa = { usesAnimate := true, usesHuman := true }
Instances For
Swahili lacks [±Human]: GENERIC ANIMATE (human + animal) vs INANIMATE.
Equations
- Bantu.ConflationPattern.swahili = { usesAnimate := true, usesHuman := false }
Instances For
A feature-definable category: a conjunction of constraints on
[±Animate] and/or [±Human]. none means the feature is unconstrained
(conflated). This captures exactly the categories that arise from
the containment hierarchy ([HH26] (4)–(5)).
- animateReq : Option Bool
- humanReq : Option Bool
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Bantu.instReprFeatureConjunction = { reprPrec := Bantu.instReprFeatureConjunction.repr }
Equations
- One or more equations did not get rendered due to their size.
Instances For
Whether a feature bundle satisfies a conjunction.
Equations
- fc.matches af = ((fc.animateReq.isNone || fc.animateReq == some af.isAnimate) && (fc.humanReq.isNone || fc.humanReq == some af.isHuman))
Instances For
Impossible conflation: no feature-definable category (conjunction of [±Animate, ±Human] constraints) can select HUMAN and INANIMATE while excluding ANIMAL. This follows from containment: HUMAN shares [+Animate] with ANIMAL, and INANIMATE shares [−Human] with ANIMAL, so any conjunction selecting both endpoints must also select the middle ([HH26] §2, p. 5).
Gender interpretability status ([Car26] §4.2).
An interpretable gender has an i[entity] flavor associated with a salient class of countable entities. An uninterpretable gender has no such association — its members are semantically arbitrary.
This distinction directly controls agreement with conjoined singulars: gender-matching plural agreement succeeds with uniform conjuncts only for interpretable genders ([Car26] (52), (54)).
- interpretable : SemanticCore → GenderStatus
- uninterpretable : GenderStatus
Instances For
Equations
- Bantu.instDecidableEqGenderStatus.decEq (Bantu.GenderStatus.interpretable a) (Bantu.GenderStatus.interpretable b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- Bantu.instDecidableEqGenderStatus.decEq (Bantu.GenderStatus.interpretable a) Bantu.GenderStatus.uninterpretable = isFalse ⋯
- Bantu.instDecidableEqGenderStatus.decEq Bantu.GenderStatus.uninterpretable (Bantu.GenderStatus.interpretable a) = isFalse ⋯
- Bantu.instDecidableEqGenderStatus.decEq Bantu.GenderStatus.uninterpretable Bantu.GenderStatus.uninterpretable = isTrue ⋯
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Bantu.instReprGenderStatus = { reprPrec := Bantu.instReprGenderStatus.repr }
Equations
Instances For
Equations
- (Bantu.GenderStatus.interpretable a).core = some a
- Bantu.GenderStatus.uninterpretable.core = none
Instances For
Stacked nP structure for Bantu nominals ([Car26] §4, (72)–(73)).
Bantu nouns have an inner semantic nP (bearing the i-core gender) wrapped by zero or more outer nPs (determining the visible noun class). For nouns in their canonical class, visible = core; for nouns appearing in non-canonical classes (e.g. [human] nouns in classes 3/4 or 5/6), the outer nP differs from the inner core.
visibleClass is the outer noun class number (determines morphological
agreement with non-conjoined DPs). coreClass is the inner class
determined by the semantic core (or equal to visibleClass if no
stacking).
- visibleClass : ℕ
- coreClass : ℕ
- status : GenderStatus
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
- Bantu.instReprNPStack = { reprPrec := Bantu.instReprNPStack.repr }
Equations
- s.isCanonical = (s.visibleClass == s.coreClass)
Instances For
Whether the core noun class is [+Animate] (HUMAN or ANIMAL). This is the predicate that [+Animate]-relativized probes and object-doubling conditions both target ([HH26] (29)).
Equations
- s.hasAnimateCore = match s.status with | Bantu.GenderStatus.interpretable Bantu.SemanticCore.human => true | Bantu.GenderStatus.interpretable Bantu.SemanticCore.animal => true | x => false
Instances For
Default agreement class for a semantic core ([Car26] (52c)). Class 2 ba- for [human], class 8 zi- for [inanimate] and [animal].