Japanese Numeral Classifier Inventory #
@cite{aikhenvald-2000} @cite{downing-1996} @cite{sudo-2016}
The closed inventory of Japanese numeral classifiers (josūshi 助数詞) as a
finite inductive type. Properties (form, gloss, encoded semantic
parameters, dimensionality, mensural-vs-sortal, default flag) are
projection functions or Decidable predicates over the type, not fields
on a struct.
Architectural pilot #
This file is the pilot for an enum-as-source-of-truth fragment pattern
(replacing the prior list-of-records pattern). Adding a classifier means
adding a constructor here; the type checker propagates the addition to
every projection function and every consumer that pattern-matches on
Classifier. See CHANGELOG.md 0.230.179 for the rationale.
Inventory provenance #
- 27 core entries from @cite{downing-1996} (UNVERIFIED: claimed to be Table 1.1 by the prior fragment file; cited tables/page numbers not cross-checked against the monograph).
- 6 extended entries from @cite{downing-1996} (UNVERIFIED: claimed to be Table 1.2; same caveat).
- 3 additional entries (
rin,kumi,daasu) from @cite{sudo-2016} worked examples (eq. 4 for-rin, eq. 9a for-kumi, eq. 9b for-daasu— verified against the PDF).
Bridge to legacy #
Classifier.toEntry : Classifier → ClassifierEntry is the migration seam
to the old Typology.ClassifierEntry record type that
sibling fragments (Mandarin, Shan, Chol) and Phenomena/Classifiers/Typology
still consume. Once those fragments are migrated to the same enum pattern,
both this bridge and ClassifierEntry itself can be retired.
Out of scope #
- Phonological allomorphy (rendaku/sokuon: ippon/sanbon/roppon for
-hon, ippiki/sanbiki/roppiki for-hiki) — would belong withTheories/Phonology/. - Native vs Sino-Japanese numeral series split (
tsuselects native hitotsu/futatsu/...; Sino-classifiers select ichi/ni/san/...). - Inventory expansion to high-frequency classifiers not in Downing's
inventory (
-kai回,-bai倍,-ban番,-do度, etc.).
The closed inventory of Japanese numeral classifiers. Constructors are
named by Hepburn romanization, with kanji-distinct homophones
disambiguated by content (e.g., kenBuilding 軒 vs kenIncident 件).
- tsu : Classifier
- nin : Classifier
- mei : Classifier
- hiki : Classifier
- tou : Classifier
- hon : Classifier
- mai : Classifier
- ko : Classifier
- satsu : Classifier
- tsubu : Classifier
- dai : Classifier
- kenBuilding : Classifier
- kenIncident : Classifier
- ki : Classifier
- ku : Classifier
- kyoku : Classifier
- mon : Classifier
- mune : Classifier
- seki : Classifier
- soku : Classifier
- soo : Classifier
- ten : Classifier
- toori : Classifier
- tsuu : Classifier
- kabu : Classifier
- shoku : Classifier
- teki : Classifier
- sao : Classifier
- wa : Classifier
- furi : Classifier
- zen : Classifier
- kyaku : Classifier
- hai : Classifier
- rin : Classifier
- kumi : Classifier
- daasu : Classifier
Instances For
Equations
- Fragments.Japanese.instDecidableEqClassifier x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
Equations
- Fragments.Japanese.instBEqClassifier.beq x✝ y✝ = (x✝.ctorIdx == y✝.ctorIdx)
Instances For
The 27 core classifiers from @cite{downing-1996} (UNVERIFIED: Table 1.1).
Equations
- One or more equations did not get rendered due to their size.
Instances For
The 6 extended classifiers from @cite{downing-1996} (UNVERIFIED: Table 1.2).
Equations
- One or more equations did not get rendered due to their size.
Instances For
The 3 additional classifiers from @cite{sudo-2016}'s worked examples
(eqs. 4, 9a, 9b): -rin (flowers), -kumi (pair), -daasu (dozen).
Equations
Instances For
The full inventory: Downing core ++ Downing extended ++ Sudo additions.
Source-of-truth for consumer iteration (lookup, aggregations) and the
Fintype instance.
Equations
Instances For
Equations
- Fragments.Japanese.instFintypeClassifier = { elems := Fragments.Japanese.Classifier.all.toFinset, complete := Fragments.Japanese.instFintypeClassifier._proof_1 }
§1: Surface form #
The kanji (or hiragana, for -tsu) form of the classifier.
Equations
- Fragments.Japanese.Classifier.tsu.form = "つ"
- Fragments.Japanese.Classifier.nin.form = "人"
- Fragments.Japanese.Classifier.mei.form = "名"
- Fragments.Japanese.Classifier.hiki.form = "匹"
- Fragments.Japanese.Classifier.tou.form = "頭"
- Fragments.Japanese.Classifier.hon.form = "本"
- Fragments.Japanese.Classifier.mai.form = "枚"
- Fragments.Japanese.Classifier.ko.form = "個"
- Fragments.Japanese.Classifier.satsu.form = "冊"
- Fragments.Japanese.Classifier.tsubu.form = "粒"
- Fragments.Japanese.Classifier.dai.form = "台"
- Fragments.Japanese.Classifier.kenBuilding.form = "軒"
- Fragments.Japanese.Classifier.kenIncident.form = "件"
- Fragments.Japanese.Classifier.ki.form = "機"
- Fragments.Japanese.Classifier.ku.form = "句"
- Fragments.Japanese.Classifier.kyoku.form = "曲"
- Fragments.Japanese.Classifier.mon.form = "問"
- Fragments.Japanese.Classifier.mune.form = "棟"
- Fragments.Japanese.Classifier.seki.form = "隻"
- Fragments.Japanese.Classifier.soku.form = "足"
- Fragments.Japanese.Classifier.soo.form = "艘"
- Fragments.Japanese.Classifier.ten.form = "点"
- Fragments.Japanese.Classifier.toori.form = "通り"
- Fragments.Japanese.Classifier.tsuu.form = "通"
- Fragments.Japanese.Classifier.kabu.form = "株"
- Fragments.Japanese.Classifier.shoku.form = "食"
- Fragments.Japanese.Classifier.teki.form = "滴"
- Fragments.Japanese.Classifier.sao.form = "竿"
- Fragments.Japanese.Classifier.wa.form = "羽"
- Fragments.Japanese.Classifier.furi.form = "振"
- Fragments.Japanese.Classifier.zen.form = "膳"
- Fragments.Japanese.Classifier.kyaku.form = "脚"
- Fragments.Japanese.Classifier.hai.form = "杯"
- Fragments.Japanese.Classifier.rin.form = "輪"
- Fragments.Japanese.Classifier.kumi.form = "組"
- Fragments.Japanese.Classifier.daasu.form = "ダース"
Instances For
Hepburn romanization of the classifier.
Equations
- Fragments.Japanese.Classifier.tsu.romaji = "tsu"
- Fragments.Japanese.Classifier.nin.romaji = "nin"
- Fragments.Japanese.Classifier.mei.romaji = "mei"
- Fragments.Japanese.Classifier.hiki.romaji = "hiki"
- Fragments.Japanese.Classifier.tou.romaji = "tou"
- Fragments.Japanese.Classifier.hon.romaji = "hon"
- Fragments.Japanese.Classifier.mai.romaji = "mai"
- Fragments.Japanese.Classifier.ko.romaji = "ko"
- Fragments.Japanese.Classifier.satsu.romaji = "satsu"
- Fragments.Japanese.Classifier.tsubu.romaji = "tsubu"
- Fragments.Japanese.Classifier.dai.romaji = "dai"
- Fragments.Japanese.Classifier.kenBuilding.romaji = "ken"
- Fragments.Japanese.Classifier.kenIncident.romaji = "ken"
- Fragments.Japanese.Classifier.ki.romaji = "ki"
- Fragments.Japanese.Classifier.ku.romaji = "ku"
- Fragments.Japanese.Classifier.kyoku.romaji = "kyoku"
- Fragments.Japanese.Classifier.mon.romaji = "mon"
- Fragments.Japanese.Classifier.mune.romaji = "mune"
- Fragments.Japanese.Classifier.seki.romaji = "seki"
- Fragments.Japanese.Classifier.soku.romaji = "soku"
- Fragments.Japanese.Classifier.soo.romaji = "soo"
- Fragments.Japanese.Classifier.ten.romaji = "ten"
- Fragments.Japanese.Classifier.toori.romaji = "toori"
- Fragments.Japanese.Classifier.tsuu.romaji = "tsuu"
- Fragments.Japanese.Classifier.kabu.romaji = "kabu"
- Fragments.Japanese.Classifier.shoku.romaji = "shoku"
- Fragments.Japanese.Classifier.teki.romaji = "teki"
- Fragments.Japanese.Classifier.sao.romaji = "sao"
- Fragments.Japanese.Classifier.wa.romaji = "wa"
- Fragments.Japanese.Classifier.furi.romaji = "furi"
- Fragments.Japanese.Classifier.zen.romaji = "zen"
- Fragments.Japanese.Classifier.kyaku.romaji = "kyaku"
- Fragments.Japanese.Classifier.hai.romaji = "hai"
- Fragments.Japanese.Classifier.rin.romaji = "rin"
- Fragments.Japanese.Classifier.kumi.romaji = "kumi"
- Fragments.Japanese.Classifier.daasu.romaji = "daasu"
Instances For
A short English gloss describing the classifier's selection criterion.
Equations
- Fragments.Japanese.Classifier.tsu.gloss = "general"
- Fragments.Japanese.Classifier.nin.gloss = "person"
- Fragments.Japanese.Classifier.mei.gloss = "person.formal"
- Fragments.Japanese.Classifier.hiki.gloss = "small.animal"
- Fragments.Japanese.Classifier.tou.gloss = "large.animal"
- Fragments.Japanese.Classifier.hon.gloss = "long.thin"
- Fragments.Japanese.Classifier.mai.gloss = "flat.thin"
- Fragments.Japanese.Classifier.ko.gloss = "small.round"
- Fragments.Japanese.Classifier.satsu.gloss = "bound.volume"
- Fragments.Japanese.Classifier.tsubu.gloss = "grain"
- Fragments.Japanese.Classifier.dai.gloss = "machine/vehicle"
- Fragments.Japanese.Classifier.kenBuilding.gloss = "building"
- Fragments.Japanese.Classifier.kenIncident.gloss = "incident"
- Fragments.Japanese.Classifier.ki.gloss = "air.vehicle"
- Fragments.Japanese.Classifier.ku.gloss = "poem"
- Fragments.Japanese.Classifier.kyoku.gloss = "music.piece"
- Fragments.Japanese.Classifier.mon.gloss = "question"
- Fragments.Japanese.Classifier.mune.gloss = "building.roof"
- Fragments.Japanese.Classifier.seki.gloss = "large.boat"
- Fragments.Japanese.Classifier.soku.gloss = "footwear.pair"
- Fragments.Japanese.Classifier.soo.gloss = "small.boat"
- Fragments.Japanese.Classifier.ten.gloss = "point/item"
- Fragments.Japanese.Classifier.toori.gloss = "method/way"
- Fragments.Japanese.Classifier.tsuu.gloss = "letter/document"
- Fragments.Japanese.Classifier.kabu.gloss = "rooted.plant"
- Fragments.Japanese.Classifier.shoku.gloss = "meal"
- Fragments.Japanese.Classifier.teki.gloss = "drop"
- Fragments.Japanese.Classifier.sao.gloss = "pole"
- Fragments.Japanese.Classifier.wa.gloss = "bird"
- Fragments.Japanese.Classifier.furi.gloss = "sword"
- Fragments.Japanese.Classifier.zen.gloss = "tray/chopsticks"
- Fragments.Japanese.Classifier.kyaku.gloss = "legged.furniture"
- Fragments.Japanese.Classifier.hai.gloss = "cupful"
- Fragments.Japanese.Classifier.rin.gloss = "flower"
- Fragments.Japanese.Classifier.kumi.gloss = "pair/group"
- Fragments.Japanese.Classifier.daasu.gloss = "dozen"
Instances For
§2: Semantic parameters and shape #
The semantic parameters this classifier encodes (@cite{aikhenvald-2000} typological vocabulary).
Every constructor has an explicit arm; no fall-through. Adding a classifier requires deciding what it encodes — the type checker enforces it.
Equations
- Fragments.Japanese.Classifier.tsu.encodes = []
- Fragments.Japanese.Classifier.nin.encodes = [Typology.SemanticParameter.humanness]
- Fragments.Japanese.Classifier.mei.encodes = [Typology.SemanticParameter.humanness, Typology.SemanticParameter.register]
- Fragments.Japanese.Classifier.hiki.encodes = [Typology.SemanticParameter.animacy, Typology.SemanticParameter.size]
- Fragments.Japanese.Classifier.tou.encodes = [Typology.SemanticParameter.animacy, Typology.SemanticParameter.size]
- Fragments.Japanese.Classifier.wa.encodes = [Typology.SemanticParameter.animacy]
- Fragments.Japanese.Classifier.hon.encodes = [Typology.SemanticParameter.shape]
- Fragments.Japanese.Classifier.mai.encodes = [Typology.SemanticParameter.shape]
- Fragments.Japanese.Classifier.ko.encodes = [Typology.SemanticParameter.shape]
- Fragments.Japanese.Classifier.satsu.encodes = [Typology.SemanticParameter.shape]
- Fragments.Japanese.Classifier.tsubu.encodes = [Typology.SemanticParameter.shape]
- Fragments.Japanese.Classifier.sao.encodes = [Typology.SemanticParameter.shape]
- Fragments.Japanese.Classifier.rin.encodes = [Typology.SemanticParameter.shape, Typology.SemanticParameter.boundedness]
- Fragments.Japanese.Classifier.dai.encodes = [Typology.SemanticParameter.function]
- Fragments.Japanese.Classifier.kenBuilding.encodes = [Typology.SemanticParameter.function]
- Fragments.Japanese.Classifier.kenIncident.encodes = [Typology.SemanticParameter.function]
- Fragments.Japanese.Classifier.ki.encodes = [Typology.SemanticParameter.function]
- Fragments.Japanese.Classifier.ku.encodes = [Typology.SemanticParameter.function]
- Fragments.Japanese.Classifier.kyoku.encodes = [Typology.SemanticParameter.function]
- Fragments.Japanese.Classifier.mon.encodes = [Typology.SemanticParameter.function]
- Fragments.Japanese.Classifier.mune.encodes = [Typology.SemanticParameter.function]
- Fragments.Japanese.Classifier.seki.encodes = [Typology.SemanticParameter.function]
- Fragments.Japanese.Classifier.soku.encodes = [Typology.SemanticParameter.function, Typology.SemanticParameter.arrangement]
- Fragments.Japanese.Classifier.soo.encodes = [Typology.SemanticParameter.function]
- Fragments.Japanese.Classifier.ten.encodes = [Typology.SemanticParameter.function]
- Fragments.Japanese.Classifier.toori.encodes = [Typology.SemanticParameter.function]
- Fragments.Japanese.Classifier.tsuu.encodes = [Typology.SemanticParameter.function]
- Fragments.Japanese.Classifier.kabu.encodes = [Typology.SemanticParameter.function]
- Fragments.Japanese.Classifier.furi.encodes = [Typology.SemanticParameter.function]
- Fragments.Japanese.Classifier.zen.encodes = [Typology.SemanticParameter.function]
- Fragments.Japanese.Classifier.kyaku.encodes = [Typology.SemanticParameter.function]
- Fragments.Japanese.Classifier.hai.encodes = [Typology.SemanticParameter.quanta]
- Fragments.Japanese.Classifier.shoku.encodes = [Typology.SemanticParameter.quanta]
- Fragments.Japanese.Classifier.teki.encodes = [Typology.SemanticParameter.quanta]
- Fragments.Japanese.Classifier.daasu.encodes = [Typology.SemanticParameter.quanta]
- Fragments.Japanese.Classifier.kumi.encodes = [Typology.SemanticParameter.arrangement, Typology.SemanticParameter.quanta]
Instances For
Shape dimensionality sub-classification per @cite{allan-1977}'s
1D/2D/3D scheme (cf. @cite{downing-1996}). Only meaningful when
encodes includes .shape.
-rin 輪 is left as none: although it encodes shape, it tracks
boundedness/ring-form (wheels, single blossoms) rather than fitting
cleanly on the 1D/2D/3D axis. See encodes, where -rin carries
.shape and .boundedness.
Equations
- Fragments.Japanese.Classifier.hon.shapeDim = some Typology.ShapeDimension.oneD
- Fragments.Japanese.Classifier.sao.shapeDim = some Typology.ShapeDimension.oneD
- Fragments.Japanese.Classifier.mai.shapeDim = some Typology.ShapeDimension.twoD
- Fragments.Japanese.Classifier.satsu.shapeDim = some Typology.ShapeDimension.twoD
- Fragments.Japanese.Classifier.ko.shapeDim = some Typology.ShapeDimension.threeD
- Fragments.Japanese.Classifier.tsubu.shapeDim = some Typology.ShapeDimension.threeD
- x✝.shapeDim = none
Instances For
§3: Property predicates #
A classifier is mensural if it counts entities by a measure
(containers, portions, drops, fixed-quantity multiples) rather than
by atomic instances. -daasu ダース (← English "dozen") is mensural
since it counts in fixed groups of 12.
Equations
Instances For
A classifier is the default (semantically bleached, residue) classifier
of the language. Japanese: tsu.
Equations
- c.IsDefault = (c = Fragments.Japanese.Classifier.tsu)
Instances For
c encodes the semantic parameter p iff p ∈ c.encodes.
Instances For
Equations
§4: Lookup and aggregations #
The default classifier of Japanese, derived from IsDefault.
Equations
- Fragments.Japanese.Classifier.defaultClassifier? = List.find? (fun (c : Fragments.Japanese.Classifier) => decide c.IsDefault) Fragments.Japanese.Classifier.all
Instances For
Lookup a classifier by surface form. Returns none if the form is not
in the inventory.
Equations
- Fragments.Japanese.Classifier.lookup s = List.find? (fun (c : Fragments.Japanese.Classifier) => decide (c.form = s)) Fragments.Japanese.Classifier.all
Instances For
The list of all semantic parameters encoded by some classifier in the
inventory (with duplicates removed). Used by Phenomena/Classifiers/Typology
to compute preferredSemantics.
Equations
- Fragments.Japanese.Classifier.allEncodedParams = (List.flatMap Fragments.Japanese.Classifier.encodes Fragments.Japanese.Classifier.all).eraseDups
Instances For
§5: Bridge to legacy ClassifierEntry #
Migration seam: Phenomena/Classifiers/Typology.lean and the sibling
fragments (Mandarin, Shan, Chol) still consume Typology. ClassifierEntry. toEntry projects a typed Classifier back to the
legacy record so cross-language aggregations continue to work during
the transitional period.
Convert a typed Classifier to the legacy record. Migration-seam only;
new code should consume Classifier and its projections directly.
Equations
Instances For
The full inventory as legacy records. Bridge for typology-side code that
still expects List ClassifierEntry.
Equations
Instances For
§6: Structural theorems #
The inventory has 36 classifiers (27 Downing core + 6 Downing extended + 3 Sudo examples).
The default classifier exists and is tsu.
tsu is the only classifier flagged as default.
Exactly four classifiers are mensural: hai, shoku, teki, daasu.
Every non-default sortal classifier encodes at least one semantic parameter.
The default tsu is the only semantically empty classifier.
All three shape dimensions are attested in the inventory.
軒 kenBuilding and 件 kenIncident are distinct classifiers sharing
the same Hepburn romanization but differing in kanji form.
軒 and 件 share their romanization (the homophony Downing flags).