Typology.Gender #
@cite{corbett-1991} @cite{corbett-2013} @cite{dryer-haspelmath-2013} @cite{dixon-1972} @cite{wals-2013}
Per-language typological substrate for gender / noun class systems. Covers three WALS chapters by @cite{corbett-2013}:
- Ch 30: number of genders (none, 2, 3, 4, 5+).
- Ch 31: sex-based vs non-sex-based.
- Ch 32: systems of gender assignment (semantic only, semantic + formal).
Mirrors the Linglib/Typology/{Possession,Negation,Comparison,Coordination,Modality}
substrate-extension pattern. Fragment-importable.
What lives here #
GenderCount(5-way),GenderBasis(3-way),AssignmentSystem(3-way),SemanticBasis(5-way) enums.GenderProfileper-language struct.- WALS converters:
fromWALS30A,fromWALS31A,fromWALS32A. - Corpus-only generalisations from WALS Ch 30/31/32.
- Helper predicates (
rawCountConsistent,crossChapterConsistent,isNounClassSystem,hasAgreement,lowestAgreementTarget,isCanonicalGender,hasTarget).
Theory-laden caveats #
GenderCount.fivePlusis a single bin for systems with 5+ noun classes. The boundary between "gender" (2-3) and "noun class" (4+) is conventional, not categorical (@cite{corbett-1991}). Bantu languages with ~15 classes and Fula with ~20 are both.fivePlus.SemanticBasislists 5 dimensions (sex, animacy, humanness, shape, rationality); other classifications (e.g. Aikhenvald 2003 noun-classifier semantics) cut differently.
Out of scope #
The 21-language sample and Corbett's typological generalisations live in
Phenomena/Gender/Studies/Corbett1991.lean.
@cite{kramer-2020}'s feature-tier analysis lives in
Phenomena/Gender/Studies/Kramer2020.lean.
Number of gender / noun class distinctions in a language (WALS Ch 30).
- none : GenderCount
- two : GenderCount
- three : GenderCount
- four : GenderCount
- fivePlus : GenderCount
Instances For
Equations
- Typology.Gender.instDecidableEqGenderCount x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
Equations
- Typology.Gender.instBEqGenderCount.beq x✝ y✝ = (x✝.ctorIdx == y✝.ctorIdx)
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Typology.Gender.instReprGenderCount = { reprPrec := Typology.Gender.instReprGenderCount.repr }
Equations
- Typology.Gender.instInhabitedGenderCount = { default := Typology.Gender.GenderCount.none }
Whether a raw gender count falls in a given GenderCount category.
Equations
- Typology.Gender.GenderCount.none.Contains n = (n = 0)
- Typology.Gender.GenderCount.two.Contains n = (n = 2)
- Typology.Gender.GenderCount.three.Contains n = (n = 3)
- Typology.Gender.GenderCount.four.Contains n = (n = 4)
- Typology.Gender.GenderCount.fivePlus.Contains n = (n ≥ 5)
Instances For
Equations
- One or more equations did not get rendered due to their size.
Whether a gender system is based on biological sex (WALS Ch 31).
- noGender : GenderBasis
- sexBased : GenderBasis
- nonSexBased : GenderBasis
Instances For
Equations
- Typology.Gender.instDecidableEqGenderBasis x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
Equations
- Typology.Gender.instBEqGenderBasis.beq x✝ y✝ = (x✝.ctorIdx == y✝.ctorIdx)
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Typology.Gender.instReprGenderBasis = { reprPrec := Typology.Gender.instReprGenderBasis.repr }
Equations
How nouns are assigned to their gender categories (WALS Ch 32).
- noGender : AssignmentSystem
- semanticOnly : AssignmentSystem
- semanticAndFormal : AssignmentSystem
Instances For
Equations
- Typology.Gender.instDecidableEqAssignmentSystem x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
- Typology.Gender.instBEqAssignmentSystem.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
Equations
Semantic dimensions that can underlie gender / noun class assignment.
- sex : SemanticBasis
- animacy : SemanticBasis
- humanness : SemanticBasis
- shape : SemanticBasis
- rationality : SemanticBasis
Instances For
Equations
- Typology.Gender.instDecidableEqSemanticBasis x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
- Typology.Gender.instBEqSemanticBasis.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
Equations
A language's gender profile combining WALS Chs 30/31/32 + extra fields (raw count, agreement targets per @cite{corbett-1991}'s Agreement Hierarchy, and semantic-basis dimensions).
- name : String
Language name.
- iso639 : String
ISO 639-3 code.
- genderCount : GenderCount
Ch 30: number of genders (WALS bin).
- rawGenderCount : ℕ
Actual number of gender / noun class categories.
- basis : GenderBasis
Ch 31: sex-based or non-sex-based.
- assignment : AssignmentSystem
Ch 32: assignment system.
- agreementTargets : List Core.AgreementTarget
Where gender agreement surfaces (@cite{corbett-1991} Agreement Hierarchy: attributive > predicate > relative > pronoun > verb).
- semanticBases : List SemanticBasis
Semantic dimensions organising the system.
- attestedSurfaceGenders : List Features.SurfaceGender
Bridge to the lexical-layer
Features.SurfaceGendertaxonomy: the surface gender values attested in this language. Defaults to[]for noun-class systems (Bantu, Mixtec, Dyirbal) whose per-class agreement doesn't map onto the Indo-Europeanmasculine/feminine/neuter/commonscheme; per-Fragment files for those languages retain a fine-grainedGendertype and provide their ownFeatures.SurfaceGenderbridge via a.primaryfunction.
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
Mathlib-style Prop-typed predicates with Decidable instances and
@[simp] _iff lemmas. Filter sites that need Bool should call
decide at the boundary.
Equations
Instances For
Equations
- p.instDecidablePredIsRawCountConsistent = decidable_of_iff (p.genderCount.Contains p.rawGenderCount) ⋯
Internal consistency across WALS chapters: no-gender in Ch 30 aligns with
noGender in Ch 31, Ch 32, and an empty agreement-target list.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- p.instDecidablePredIsCrossChapterConsistent = inferInstance
"Noun class" system: 5+ categories per @cite{corbett-1991}.
Equations
- p.IsNounClassSystem = (p.rawGenderCount ≥ 5)
Instances For
Equations
- p.instDecidablePredIsNounClassSystem = decidable_of_iff (p.rawGenderCount ≥ 5) ⋯
Whether the language has any gender agreement.
Equations
- p.HasAgreement = (p.agreementTargets ≠ [])
Instances For
Equations
- p.instDecidablePredHasAgreement = decidable_of_iff (p.agreementTargets ≠ []) ⋯
"Canonical" gender system in @cite{corbett-1991}'s sense: sex-based, 2 or 3 genders, semantic + formal assignment.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- p.instDecidablePredIsCanonicalGender = inferInstance
Lowest agreement target in @cite{corbett-1991}'s hierarchy.
Equations
- One or more equations did not get rendered due to their size.
Instances For
WALS Ch 30A → GenderCount.
Equations
- Typology.Gender.fromWALS30A Data.WALS.F30A.GenderCount.none = Typology.Gender.GenderCount.none
- Typology.Gender.fromWALS30A Data.WALS.F30A.GenderCount.two = Typology.Gender.GenderCount.two
- Typology.Gender.fromWALS30A Data.WALS.F30A.GenderCount.three = Typology.Gender.GenderCount.three
- Typology.Gender.fromWALS30A Data.WALS.F30A.GenderCount.four = Typology.Gender.GenderCount.four
- Typology.Gender.fromWALS30A Data.WALS.F30A.GenderCount.fiveOrMore = Typology.Gender.GenderCount.fivePlus
Instances For
WALS Ch 31A → GenderBasis.
Equations
- Typology.Gender.fromWALS31A Data.WALS.F31A.GenderBasis.noGender = Typology.Gender.GenderBasis.noGender
- Typology.Gender.fromWALS31A Data.WALS.F31A.GenderBasis.sexBased = Typology.Gender.GenderBasis.sexBased
- Typology.Gender.fromWALS31A Data.WALS.F31A.GenderBasis.nonSexBased = Typology.Gender.GenderBasis.nonSexBased
Instances For
WALS Ch 32A → AssignmentSystem.
Equations
- Typology.Gender.fromWALS32A Data.WALS.F32A.SystemsOfGenderAssignment.noGender = Typology.Gender.AssignmentSystem.noGender
- Typology.Gender.fromWALS32A Data.WALS.F32A.SystemsOfGenderAssignment.semantic = Typology.Gender.AssignmentSystem.semanticOnly
- Typology.Gender.fromWALS32A Data.WALS.F32A.SystemsOfGenderAssignment.semanticAndFormal = Typology.Gender.AssignmentSystem.semanticAndFormal
Instances For
Equations
- Typology.Gender.walsGenderCount iso = Option.map (fun (x : Data.WALS.Datapoint Data.WALS.F30A.GenderCount) => Typology.Gender.fromWALS30A x.value) (Data.WALS.F30A.lookupISO iso)
Instances For
Equations
- Typology.Gender.walsGenderBasis iso = Option.map (fun (x : Data.WALS.Datapoint Data.WALS.F31A.GenderBasis) => Typology.Gender.fromWALS31A x.value) (Data.WALS.F31A.lookupISO iso)
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Build a GenderProfile from an ISO 639-3 code via WALS lookups for
Chs 30/31/32. The three required-field fallbacks (genderCountFb,
basisFb, assignmentFb) fire only when WALS is silent for that ISO.
The rawGenderCount, agreementTargets, semanticBases, and
attestedSurfaceGenders fields are paper-stipulated per @cite{corbett-1991}
— they are not derivable from any WALS chapter and must be passed
explicitly.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Earlier revisions of this file carried five aggregate-count theorems on
the full WALS Ch 30/31/32 corpora (ch30_no_gender_modal,
ch30_two_most_common, ch31_sex_based_dominant,
ch32_mixed_slightly_more, ch32_no_purely_formal). These were the
"aggregate-count theorems go stale" anti-pattern AND required
native_decide for ~1000-element list reductions; deleted as part of
the GenderProfile mathlib polish. The corpus distributions remain
documentary in @cite{corbett-2013}'s WALS chapters.