Morphological Infrastructure #
@cite{bybee-1985} @cite{champollion-2017} @cite{link-1983} @cite{zwicky-pullum-1983}
Framework-agnostic types for morphological analysis and compositional morphological rules.
Typological Classification #
AttachmentSide: prefix, suffix, infix, circumfixSelectionDegree: how restrictive a morpheme's host selection isMorphStatus: free word / simple clitic / special clitic / affixParadigmCell: one cell in a morphological paradigm (form + features)
@cite{bybee-1985} Relevance Hierarchy #
MorphCategory classifies morpheme functional categories ordered by
semantic relevance to the stem:
stem < derivation < valence < voice < aspect < tense < mood < negation < agreement
Compositional Rules #
MorphRule σ: a morphological rule carrying formal AND semantic effectsStem σ: a lexical stem with its inflectional paradigm
A MorphRule σ transforms a stem's surface form, morphosyntactic features,
and meaning of type σ simultaneously. Rules where the word-level semantic
contribution is delegated to a higher composition layer (e.g., tense rules
that delegate to Theories/Semantics/Tense/, agreement rules that contribute
no truth-conditional meaning) carry delegatedSemantics := true. The Bool
flag is not a claim that the morpheme is meaningless — Bybee 1985 Ch 1
§3 explicitly argues against the vacuity-of-inflection position. It tracks
where the meaning is computed (delegate to Theory layer vs. compute at
the morphological word level), not whether meaning exists.
Side on which a bound morpheme attaches to its host.
- prefix : AttachmentSide
- suffix : AttachmentSide
- infix : AttachmentSide
- circumfix : AttachmentSide
Instances For
Equations
- Core.Morphology.instDecidableEqAttachmentSide 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.
Instances For
Equations
Typological position classification for formatives. @cite{bickel-nichols-2001} Table 2.
Superset of AttachmentSide: adds simulfixation (process morphology),
detached formatives (Wackernagel clitics, free auxiliaries), and
endoclisis (clitic insertion inside a word).
- praefixed : FormativePosition
- postfixed : FormativePosition
- infixed : FormativePosition
- circumfixed : FormativePosition
- simultaneous : FormativePosition
- detached : FormativePosition
- endoclitic : FormativePosition
Instances For
Equations
- Core.Morphology.instDecidableEqFormativePosition 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
Map AttachmentSide to the richer FormativePosition classification.
Equations
- Core.Morphology.AttachmentSide.prefix.toFormativePosition = Core.Morphology.FormativePosition.praefixed
- Core.Morphology.AttachmentSide.suffix.toFormativePosition = Core.Morphology.FormativePosition.postfixed
- Core.Morphology.AttachmentSide.infix.toFormativePosition = Core.Morphology.FormativePosition.infixed
- Core.Morphology.AttachmentSide.circumfix.toFormativePosition = Core.Morphology.FormativePosition.circumfixed
Instances For
How restrictive a morpheme is about what it can attach to.
@cite{zwicky-pullum-1983} criterion A: clitics exhibit low selection (attach to virtually any word), while affixes exhibit high selection (attach only to specific stems or categories).
- low : SelectionDegree
Attaches to words of virtually any category (prepositions, verbs, adjectives, adverbs). Characteristic of simple clitics.
- singleCategory : SelectionDegree
Attaches to words of a single major category (e.g., past tense -ed to verbs, plural -s to nouns). Characteristic of inflectional affixes.
- closedClass : SelectionDegree
Attaches only to a closed list of stems (e.g., -n't only to finite auxiliaries). Maximally selective.
Instances For
Equations
- Core.Morphology.instDecidableEqSelectionDegree 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.
Instances For
Equations
Affixes are more selective than clitics.
Equations
Instances For
Equations
- Core.Morphology.instDecidablePredSelectionDegreeIsHighSelection s = id inferInstance
Morphological status of a linguistic form.
Classifies forms by their degree of syntactic independence and mode of combination. The clitic–affix boundary is the central question of @cite{zwicky-pullum-1983}: the criteria A–F serve to locate a given morpheme on this scale.
- freeWord : MorphStatus
Syntactically independent word.
- simpleClitic : MorphStatus
Simple clitic: phonologically bound form that can attach to hosts of virtually any syntactic category. @cite{bickel-nichols-2001}: defined primarily by low selectivity (categorical freedom) + phonological dependence, not necessarily by being a reduced variant of a free word. Many simple clitics have no free-word counterpart (Latin -que). English contracted auxiliaries ('s, 've, 'd) are a subcase where a free variant exists.
- specialClitic : MorphStatus
Special clitic: either no corresponding free word exists, or the distribution differs from the free word. Romance pronominal clitics, Latin -que.
- inflAffix : MorphStatus
Inflectional affix: paradigmatic, category-preserving, highly selective, with possible gaps and idiosyncrasies. English -ed, -s, -est, -n't.
- derivAffix : MorphStatus
Derivational affix: potentially category-changing, often productive but may show lexical restrictions. English -ness, un-, -ize.
Instances For
Equations
- Core.Morphology.instDecidableEqMorphStatus x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
- Core.Morphology.instReprMorphStatus = { reprPrec := Core.Morphology.instReprMorphStatus.repr }
Equations
- One or more equations did not get rendered due to their size.
Instances For
Is this an affix (inflectional or derivational)?
Equations
Instances For
Is this a clitic (simple or special)?
Equations
Instances For
A single cell in a morphological paradigm: one form of a lexeme in a particular morphosyntactic context.
The type parameter F is the feature bundle type (e.g., UD.MorphFeatures
for a full UD specification, or a simpler domain-specific type).
- features : F
The morphosyntactic features selecting this cell.
- form : Option String
The surface form, or
nonefor a paradigm gap. - regular : Bool
Is this form predictable from the stem by regular rule?
Instances For
Equations
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Core.Morphology.instBEqParadigmCell.beq { features := a, form := a_1, regular := a_2 } { features := b, form := b_1, regular := b_2 } = (a == b && (a_1 == b_1 && a_2 == b_2))
- Core.Morphology.instBEqParadigmCell.beq x✝¹ x✝ = false
Instances For
Equations
Does this cell represent a paradigm gap?
Instances For
Does this cell show irregularity (suppletion or unpredictable allomorphy)?
Equations
- c.isIrregular = (c.regular = false ∧ c.form ≠ none)
Instances For
Morpheme functional category.
Categories are ordered by semantic relevance to the verb stem: more relevant categories appear closer to the stem in suffixal morphology.
- stem : MorphCategory
- derivation : MorphCategory
- valence : MorphCategory
- voice : MorphCategory
- aspect : MorphCategory
- tense : MorphCategory
- mood : MorphCategory
- negation : MorphCategory
- agreement
(controller : Agreement.Controller)
: MorphCategory
Agreement morphology, parameterized by the grammatical role of the controlling NP (
Core.Agreement.Controller). The role distinction (subj vs obj vs poss vs ...) is what allows Anderson Ch 5 §5.2 split/doubled AVC typology to be Lean-checkable; Bybee 1985'spersonAgr / personAgrObj / genderAgrsource distinctions also round-trip cleanly. Seescratch/morphcategory_agreement_split_plan.mdfor the design rationale (0.230.578-0.230.584). - nonfinite : MorphCategory
- number : MorphCategory
- degree : MorphCategory
Instances For
Equations
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
Predicate testing whether a MorphCategory is an agreement category,
independent of which Controller role parameterizes it. Used for
Bybee-style relevance-hierarchy code that doesn't care which role
triggers the agreement, only that agreement IS the category.
Equations
- (Core.Morphology.MorphCategory.agreement controller).IsAgreement = true
- x✝.IsAgreement = false
Instances For
Peripherality: numerical embedding of Bybee's relevance hierarchy where higher = farther from stem = less semantically relevant.
In Bybee's text, "high relevance" means more semantically
integrated with the stem (@cite{bybee-1985} Ch 2 §2.1 p. 13). The
substrate uses the opposite numerical direction: stem = 0 (most
relevant), agreement = 8 (least relevant), so that Nat ordering
mirrors stem-outward linear position in suffixing morphology
(Ch 2 §6 iconicity, p. 33). The field name peripherality makes
this directionality explicit and avoids the wrong-on-its-face
gloss "high relevance rank means low relevance."
Categories from Bybee 1985 Ch 2 §3 (verified against the book): valence, voice, aspect, tense, mood, agreement.
Linglib extensions (NOT in Bybee 1985 — flag in any consumer that reads these ranks):
derivation(rank 1): Bybee Ch 4 argues lex/deriv/infl is a continuum, not a discrete level on the relevance scale.number(rank 3): Bybee discusses verbal-number agreement at the low end (with person agreement). Noun number is treated separately (Ch 2 §6 cites Greenberg 1963 only, "stem < number < case" for nouns). Cross-comparison of noun-number rank with verb-aspect rank is an artifact of unifying both onto one scale.degree(rank 5): Bybee never discusses adjectival degree morphology. Comparative morphology is often derivational cross-linguistically (Stassen WALS).negation(rank 7): Bybee discusses negation as a kind of mood (Part II Ch 8 §5), not a separate level. Rank 7 is plausible per Miestamo 2005 cross-linguistic ordering data, but is a linglib extension.nonfinite(rank 9): not on Bybee's hierarchy at all (nonfinite morphology often changes syntactic category, outside the scope of inflectional categories proper).
Equations
- Core.Morphology.MorphCategory.stem.peripherality = 0
- Core.Morphology.MorphCategory.derivation.peripherality = 1
- Core.Morphology.MorphCategory.valence.peripherality = 2
- Core.Morphology.MorphCategory.number.peripherality = 3
- Core.Morphology.MorphCategory.voice.peripherality = 3
- Core.Morphology.MorphCategory.aspect.peripherality = 4
- Core.Morphology.MorphCategory.degree.peripherality = 5
- Core.Morphology.MorphCategory.tense.peripherality = 5
- Core.Morphology.MorphCategory.mood.peripherality = 6
- Core.Morphology.MorphCategory.negation.peripherality = 7
- (Core.Morphology.MorphCategory.agreement controller).peripherality = 8
- Core.Morphology.MorphCategory.nonfinite.peripherality = 9
Instances For
A morpheme ordering respects the relevance hierarchy if peripherality is non-decreasing from stem outward (stem-adjacent first).
Equations
- Core.Morphology.RespectsRelevanceHierarchy slots = List.Pairwise (fun (x1 x2 : ℕ) => x1 ≤ x2) (List.map Core.Morphology.MorphCategory.peripherality slots)
Instances For
Equations
- Core.Morphology.instDecidablePredListMorphCategoryRespectsRelevanceHierarchy x✝ = id inferInstance
A morphological rule: carries formal AND semantic effects.
The type parameter σ is the meaning type, so this works uniformly
across Bool/Frac/Float semantic backends.
Design principle: semEffect can be id for rules whose word-level
semantic contribution is delegated to a higher composition layer
(verb agreement -s carries no truth-conditional meaning at the word
level; tense rules delegate to the intensional layer), making it
explicit which inflections compute meaning at the word level and
which delegate.
- category : MorphCategory
Which morphological category this rule realizes
- value : String
The feature value this rule realizes
- formRule : String → String
How the surface form changes
How morphosyntactic features change
- semEffect : σ → σ
Semantic effect (
idwhen meaning is delegated to a higher layer) - delegatedSemantics : Bool
Is the word-level semantic contribution delegated to a higher composition layer? (Set
truefor agreement, tense, etc., whereTheories/Semantics/{Tense,Aspect,Modality,Agreement}/handle the meaning. NOT a claim that the morpheme is meaningless — see file docstring.)
Instances For
Apply a morphological rule to generate an inflected form + meaning.
Equations
- s.inflect rule baseMeaning = (rule.formRule s.lemma_, rule.featureRule s.baseFeatures, rule.semEffect baseMeaning)
Instances For
Generate all forms in the paradigm (base + inflected).
Equations
- s.allForms baseMeaning = (s.lemma_, s.baseFeatures, baseMeaning) :: List.map (fun (x : Core.Morphology.MorphRule σ) => s.inflect x baseMeaning) s.paradigm
Instances For
Distribution of inflectional categories between two elements of a periphrastic construction (e.g., auxiliary and lexical verb in an AVC). @cite{anderson-2006} @cite{bybee-1985}
In an aux-headed AVC, onLex is minimal (stem only or empty).
In a lex-headed AVC, onAux is empty.
In a split AVC, onAux and onLex host different category types.
In a doubled AVC, onAux and onLex overlap.
- onAux : List MorphCategory
- onLex : List MorphCategory
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.