Haspelmath (2025): Roots and root classes in comparative grammar #
This file formalizes the definition of the root as a comparative concept in Haspelmath's chapter.
Its definition (1), a contentful form (Form, a morph with its meaning class) that occurs in a
free form with no other contentful form, is the root of Morphology.Comparative, read over a
fragment's free-form inventory. The qualifying clause separates roots from contentful affixes
(the Japanese causative -ase) and neoclassical combining forms (geo-), which are
morphological cores under the formal base definition of Morphology/Root/Basic.lean but not
roots; it admits bound roots (Sorbian žon-) and excludes free forms without a lexical meaning
(hello, fn. 10). Roots are concrete forms (§4), so the four Arabic forms sharing the skeleton
k-t-b are four roots (arabic_four_roots) and the German ablaut pair lauf ~ lief two.
upos is (10), word classes as comparative concepts, and unmarkedFunction the prototypical
combinations of (9).
§6 adopts the heterosemy view: hammer (noun) and hammer (verb) are two roots with one
shape (hammer_two_roots), related by the sister schemas of (21) (nounVerb, one
description over shared variables read through two subscriptings,
ConstructionMorphology.Schema.InstantiatesAt), which the pair instantiates
(hammer_sisters) and
hammer/dance does not.
Implementation notes #
Formpairs a substrateMorph, the shape side, with anOption RootClassstanding in for its meaning, which is all definition (1) and the lexical meaning of (11) need. Relatedness of meaning within a heterosemous root set is carried by the schema of (21), not by the forms.IsStemInis the stem definition of fn. 6, with the Latinlaud-ab-case; its affixes are those ofMorphology.Comparative.IsAffixInover the roots of definition (1).- The chapter names the combining forms geo- and socio- in prose only; the English word geology, with its -logy, is this file's illustration of geo-.
References #
Root classes (§5) #
Word classes are comparative concepts (10): a verb is an action-denoting root, a noun an object-denoting root, an adjective a property-denoting root.
Equations
Instances For
The discourse functions of (9).
- predication : DiscourseFunction
- reference : DiscourseFunction
- modification : DiscourseFunction
Instances For
Equations
- Haspelmath2025b.instDecidableEqDiscourseFunction x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
unmarkedFunction c is the discourse function in which the class c needs no function
indicator (9): no
copula or verbalizer for action roots in predication, no nominalizer for object roots in
reference, no relativizer or genitive for property roots in modification.
Equations
- Haspelmath2025b.unmarkedFunction Morphology.Comparative.RootClass.action = Haspelmath2025b.DiscourseFunction.predication
- Haspelmath2025b.unmarkedFunction Morphology.Comparative.RootClass.object = Haspelmath2025b.DiscourseFunction.reference
- Haspelmath2025b.unmarkedFunction Morphology.Comparative.RootClass.property = Haspelmath2025b.DiscourseFunction.modification
Instances For
Definition (1) #
A form (§2, §4) is a morph, the pairing of a shape with a meaning, recorded with its root
class when it denotes an action, an object or a property and none otherwise.
- shape : Morphology.Morph
The morph.
- meaning : Option Morphology.Comparative.RootClass
The root class the form denotes, if any.
Instances For
Equations
- Haspelmath2025b.instDecidableEqForm.decEq { shape := a, meaning := a_1 } { shape := b, meaning := b_1 } = if h : a = b then h ▸ if h : a_1 = b_1 then h ▸ isTrue ⋯ else isFalse ⋯ else isFalse ⋯
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Haspelmath2025b.instReprForm = { reprPrec := Haspelmath2025b.instReprForm.repr }
The shapes of the forms of a word, for the formal definitions of
Morphology/Root/Basic.lean.
Equations
- Haspelmath2025b.shapes w = List.map Haspelmath2025b.Form.shape w
Instances For
Fn. 6: a stem is a contiguous string of at least one root and possibly some affixes that can be combined with an affix.
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.
Contentful affixes and combining forms (§2) #
The Japanese action root yom 'read'.
Equations
- Haspelmath2025b.yom = { shape := Morphology.Morph.root "yom", meaning := some Morphology.Comparative.RootClass.action }
Instances For
The Japanese causative suffix -ase, which denotes an action.
Equations
- Haspelmath2025b.ase = { shape := Morphology.Morph.suff "ase", meaning := some Morphology.Comparative.RootClass.action }
Instances For
The Japanese nonpast suffix -u.
Equations
- Haspelmath2025b.u = { shape := Morphology.Morph.suff "u", meaning := none }
Instances For
The Japanese nonpast suffix -ru.
Equations
- Haspelmath2025b.ru = { shape := Morphology.Morph.suff "ru", meaning := none }
Instances For
The Japanese free forms yom-u 'read' and yom-ase-ru 'make read'.
Equations
Instances For
The causative -ase is contentful but never occurs without another contentful form, so
it is not a root, while yom is (§2).
The neoclassical combining form geo-.
Equations
- Haspelmath2025b.geo = { shape := Morphology.Morph.root "geo", meaning := some Morphology.Comparative.RootClass.object }
Instances For
The neoclassical combining form -logy.
Equations
- Haspelmath2025b.logy = { shape := Morphology.Morph.root "logy", meaning := some Morphology.Comparative.RootClass.object }
Instances For
The English interjection hello (fn. 10).
Equations
- Haspelmath2025b.hello = { shape := Morphology.Morph.free "hello", meaning := none }
Instances For
The English object root hammer (12a).
Equations
- Haspelmath2025b.hammerN = { shape := Morphology.Morph.root "hammer", meaning := some Morphology.Comparative.RootClass.object }
Instances For
The English action root hammer (12b).
Equations
- Haspelmath2025b.hammerV = { shape := Morphology.Morph.root "hammer", meaning := some Morphology.Comparative.RootClass.action }
Instances For
The English plural suffix.
Equations
- Haspelmath2025b.s = { shape := Morphology.Morph.suff "s", meaning := none }
Instances For
The English past suffix.
Equations
- Haspelmath2025b.ed = { shape := Morphology.Morph.suff "ed", meaning := none }
Instances For
The English free forms: geology (an illustration), hello, and the hammer forms.
Equations
- One or more equations did not get rendered due to their size.
Instances For
geo- is contentful but only occurs with another contentful form, so it is not a root,
although it is a morphological core under the formal base definition (§2).
hello is a free form without a lexical meaning, hence not a root, although it is a
morphological core (fn. 10).
The Sorbian object root žon- 'wife'.
Equations
- Haspelmath2025b.žon = { shape := Morphology.Morph.root "žon", meaning := some Morphology.Comparative.RootClass.object }
Instances For
The Sorbian nominative suffix.
Equations
- Haspelmath2025b.a = { shape := Morphology.Morph.suff "a", meaning := none }
Instances For
The Sorbian genitive suffix.
Equations
- Haspelmath2025b.y = { shape := Morphology.Morph.suff "y", meaning := none }
Instances For
The Sorbian accusative suffix.
Equations
- Haspelmath2025b.uAcc = { shape := Morphology.Morph.suff "u", meaning := none }
Instances For
The Sorbian free forms žon-a, žon-y, žon-u (§3).
Equations
Instances For
žon- always occurs with an inflectional affix, yet it is a root (§3, fn. 2).
Roots as concrete forms (§4) #
The German action root lauf 'run'.
Equations
- Haspelmath2025b.lauf = { shape := Morphology.Morph.root "lauf", meaning := some Morphology.Comparative.RootClass.action }
Instances For
The German ablaut root lief 'ran'.
Equations
- Haspelmath2025b.lief = { shape := Morphology.Morph.root "lief", meaning := some Morphology.Comparative.RootClass.action }
Instances For
The German first-singular suffix.
Equations
- Haspelmath2025b.e = { shape := Morphology.Morph.suff "e", meaning := none }
Instances For
The German plural and participial suffix.
Equations
- Haspelmath2025b.en = { shape := Morphology.Morph.suff "en", meaning := none }
Instances For
The German participial prefix.
Equations
- Haspelmath2025b.ge = { shape := Morphology.Morph.pref "ge", meaning := none }
Instances For
The consonantal skeleton of a form is its shape with the vowels removed.
Equations
- Haspelmath2025b.skeleton f = { segments := List.filter (fun (x : Char) => decide (x ∉ ['a', 'i', 'u'])) f.shape.form.toList }
Instances For
The Arabic action root katab 'wrote'.
Equations
- Haspelmath2025b.katab = { shape := Morphology.Morph.root "katab", meaning := some Morphology.Comparative.RootClass.action }
Instances For
The Arabic action root ktub 'write'.
Equations
- Haspelmath2025b.ktub = { shape := Morphology.Morph.root "ktub", meaning := some Morphology.Comparative.RootClass.action }
Instances For
The Arabic object root kaatib 'writer'.
Equations
- Haspelmath2025b.kaatib = { shape := Morphology.Morph.root "kaatib", meaning := some Morphology.Comparative.RootClass.object }
Instances For
The Arabic object root kitaab 'book'.
Equations
- Haspelmath2025b.kitaab = { shape := Morphology.Morph.root "kitaab", meaning := some Morphology.Comparative.RootClass.object }
Instances For
The Arabic first-plural suffix.
Equations
- Haspelmath2025b.naa = { shape := Morphology.Morph.suff "naa", meaning := none }
Instances For
The Arabic first-plural prefix.
Equations
- Haspelmath2025b.na = { shape := Morphology.Morph.pref "na", meaning := none }
Instances For
The forms of (6) contain four distinct roots sharing the skeleton k-t-b, which is not itself a root (§4).
The Latin action root laud 'praise'.
Equations
- Haspelmath2025b.laud = { shape := Morphology.Morph.root "laud", meaning := some Morphology.Comparative.RootClass.action }
Instances For
The Latin imperfect suffix.
Equations
- Haspelmath2025b.ab = { shape := Morphology.Morph.suff "ab", meaning := none }
Instances For
The Latin first-singular imperfect suffix.
Equations
- Haspelmath2025b.am = { shape := Morphology.Morph.suff "am", meaning := none }
Instances For
The Latin first-singular present suffix.
Equations
- Haspelmath2025b.o = { shape := Morphology.Morph.suff "o", meaning := none }
Instances For
The Latin forms laud-o 'I praise' and laud-ab-am 'I was praising'.
Equations
Instances For
Heterosemy (§6) #
hammer (noun) and hammer (verb) are two roots with one shape (§6).
Equations
- Haspelmath2025b.instDecidableEqTier x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
- Haspelmath2025b.instFintypeTier = { elems := { val := ↑Haspelmath2025b.Tier.enumList, nodup := Haspelmath2025b.Tier.enumList_nodup }, complete := Haspelmath2025b.instFintypeTier._proof_1 }
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Haspelmath2025b.instReprTier = { reprPrec := Haspelmath2025b.instReprTier.repr }
A tier value is a meaning, a word class, or a shape.
- meaning (m : String) : Value
- category (c : Morphology.Comparative.RootClass) : Value
- shape (s : String) : Value
Instances For
Equations
- Haspelmath2025b.instDecidableEqValue.decEq (Haspelmath2025b.Value.meaning a) (Haspelmath2025b.Value.meaning b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- Haspelmath2025b.instDecidableEqValue.decEq (Haspelmath2025b.Value.meaning m) (Haspelmath2025b.Value.category c) = isFalse ⋯
- Haspelmath2025b.instDecidableEqValue.decEq (Haspelmath2025b.Value.meaning m) (Haspelmath2025b.Value.shape s) = isFalse ⋯
- Haspelmath2025b.instDecidableEqValue.decEq (Haspelmath2025b.Value.category c) (Haspelmath2025b.Value.meaning m) = isFalse ⋯
- Haspelmath2025b.instDecidableEqValue.decEq (Haspelmath2025b.Value.category a) (Haspelmath2025b.Value.category b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- Haspelmath2025b.instDecidableEqValue.decEq (Haspelmath2025b.Value.category c) (Haspelmath2025b.Value.shape s) = isFalse ⋯
- Haspelmath2025b.instDecidableEqValue.decEq (Haspelmath2025b.Value.shape s) (Haspelmath2025b.Value.meaning m) = isFalse ⋯
- Haspelmath2025b.instDecidableEqValue.decEq (Haspelmath2025b.Value.shape s) (Haspelmath2025b.Value.category c) = isFalse ⋯
- Haspelmath2025b.instDecidableEqValue.decEq (Haspelmath2025b.Value.shape a) (Haspelmath2025b.Value.shape b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
Instances For
Equations
- Haspelmath2025b.instReprValue = { reprPrec := Haspelmath2025b.instReprValue.repr }
Equations
- One or more equations did not get rendered due to their size.
Instances For
Tier values are discrete: a constant is dominated only by itself.
Equations
- One or more equations did not get rendered due to their size.
Equations
A tier description is a value, or ⊥ for an open variable.
Equations
- Haspelmath2025b.Slot = WithBot Haspelmath2025b.Value
Instances For
Equations
- Haspelmath2025b.instDecidableEqRootVar x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
The sister schemas X (noun) and X (verb) of (21) form one description over their
variables, with the categories pinned and the meanings and the shared shape open.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The subscripting of the tiers of the noun schema by the variables of (21).
Equations
Instances For
The subscripting of the tiers of the verb schema by the variables of (21).
Equations
Instances For
Schema (21a), X (noun), pairs an object meaning related to X with a noun and the open
shape Y.
Instances For
Schema (21b), X (verb), pairs doing in relation to X with a verb and the open shape
Y.
Instances For
hammerNoun is the noun hammer of (20a).
Equations
- Haspelmath2025b.hammerNoun Haspelmath2025b.Tier.semantics = ↑(Haspelmath2025b.Value.meaning "HAMMER")
- Haspelmath2025b.hammerNoun Haspelmath2025b.Tier.morphosyntax = ↑(Haspelmath2025b.Value.category Morphology.Comparative.RootClass.object)
- Haspelmath2025b.hammerNoun Haspelmath2025b.Tier.phonology = ↑(Haspelmath2025b.Value.shape "hæmər")
Instances For
hammerVerb is the verb hammer of (20b).
Equations
- Haspelmath2025b.hammerVerb Haspelmath2025b.Tier.semantics = ↑(Haspelmath2025b.Value.meaning "HIT (WITH SOMETHING LIKE HAMMER)")
- Haspelmath2025b.hammerVerb Haspelmath2025b.Tier.morphosyntax = ↑(Haspelmath2025b.Value.category Morphology.Comparative.RootClass.action)
- Haspelmath2025b.hammerVerb Haspelmath2025b.Tier.phonology = ↑(Haspelmath2025b.Value.shape "hæmər")
Instances For
dance (verb), whose shape differs from hammer's.
Equations
- Haspelmath2025b.danceVerb Haspelmath2025b.Tier.semantics = ↑(Haspelmath2025b.Value.meaning "DANCE")
- Haspelmath2025b.danceVerb Haspelmath2025b.Tier.morphosyntax = ↑(Haspelmath2025b.Value.category Morphology.Comparative.RootClass.action)
- Haspelmath2025b.danceVerb Haspelmath2025b.Tier.phonology = ↑(Haspelmath2025b.Value.shape "dæns")
Instances For
The variables of (21) filled by the two hammer roots.
Equations
- Haspelmath2025b.hammerRoots Haspelmath2025b.RootVar.nounMeaning = Haspelmath2025b.hammerNoun Haspelmath2025b.Tier.semantics
- Haspelmath2025b.hammerRoots Haspelmath2025b.RootVar.nounCategory = Haspelmath2025b.hammerNoun Haspelmath2025b.Tier.morphosyntax
- Haspelmath2025b.hammerRoots Haspelmath2025b.RootVar.verbMeaning = Haspelmath2025b.hammerVerb Haspelmath2025b.Tier.semantics
- Haspelmath2025b.hammerRoots Haspelmath2025b.RootVar.verbCategory = Haspelmath2025b.hammerVerb Haspelmath2025b.Tier.morphosyntax
- Haspelmath2025b.hammerRoots Haspelmath2025b.RootVar.shape = Haspelmath2025b.hammerNoun Haspelmath2025b.Tier.phonology
Instances For
The two hammer roots of (20) instantiate the sister schemas of (21) as a pair, their shapes filled alike; neither is derived from the other or from an abstract root.
hammer (noun) and dance (verb) instantiate the schemas but not as a pair: the
linked shapes differ.