Morphological Paradigm Substrate #
@cite{ackerman-malouf-2013} @cite{rathi-hahn-futrell-2026}
Cross-paper substrate for paradigm-cell-level analyses: inflection classes, paradigm systems, cell distributions, and entropy-based measures over them.
Core.Morphology.ParadigmCell (in MorphRule.lean) is the type for one
cell of a paradigm with its features and form; ParadigmSystem here is the
whole table with frequency weights, organized by inflection class.
Form parameterization #
InflectionClass n Form and ParadigmSystem n Form are parameterized over
the surface-form type. Most consumers use Form := String (the natural
representation for actual morphological forms in @cite{ackerman-malouf-2013}'s
A&M language sample). The Rathi 2026 toy paradigms use a small [Fintype]
form alphabet so that PMF-based entropy operators (Entropy.lean) apply
to cell distributions; that integration lives in a sibling
PMFCellDistribution.lean file added in a later phase of the unification
refactor.
Public API #
InflectionClass n Form— total functionFin n → Formfrom cell index to formParadigmSystem n Form— list of inflection classes with frequency weightscellDistribution,jointCellDistribution— empirical distributionscellEntropy,conditionalCellEntropy— Shannon entropies viaCore.InformationTheoryisImplicative,isTransparent— structural predicates on paradigm shapefromStems— derive aParadigmSystem n Stringfrom a list ofStem σeComplexity— count of inflection classes (Ackerman-Malouf E-complexity)
iComplexity (the paper-specific average conditional entropy) and LCECHolds
(the LCEC threshold predicate) live in AckermanMalouf2013.lean because they
are particular aggregations the paper defines, not substrate primitives.
An inflection class: function from cell index to surface realization
of type Form.
- realize : Fin numCells → Form
Instances For
Equations
- Core.Morphology.instBEqInflectionClass = { beq := fun (a b : Core.Morphology.InflectionClass n Form) => (List.finRange n).all fun (i : Fin n) => a.realize i == b.realize i }
A paradigm system: inflection classes paired with frequency weights.
- entries : List (InflectionClass numCells Form × ℚ)
Instances For
Group a tagged list by key, summing associated ℚ values.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Empirical distribution of forms at cell c: pairs each surface form with
the total frequency of inflection classes realizing it at c.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Joint empirical distribution of forms at cell pair (ci, cj).
Equations
- One or more equations did not get rendered due to their size.
Instances For
E-complexity (@cite{ackerman-malouf-2013}): the number of inflection classes in the paradigm system.
Equations
- ps.eComplexity = ps.entries.length
Instances For
Shannon entropy of the empirical distribution at cell c (in nats).
Equations
- ps.cellEntropy c = match Core.Morphology.distOfList✝ (ps.cellDistribution c) with | (support, prob) => Core.Morphology.entropy✝ support prob
Instances For
Conditional entropy H(C_i | C_j) of cell ci given cell cj (in nats).
The integrand of @cite{ackerman-malouf-2013}'s i-complexity.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A cell pair (ci, cj) is implicative iff knowing the form at cj
perfectly determines the form at ci (zero conditional entropy).
Equations
- ps.isImplicative ci cj = (ps.conditionalCellEntropy ci cj = 0)
Instances For
A paradigm is transparent iff every off-diagonal cell pair is implicative — every cell perfectly predicts every other.
Equations
- ps.isTransparent = ∀ (ci cj : Fin n), ci ≠ cj → ps.isImplicative ci cj
Instances For
Extract a ParadigmSystem n String from a list of Stems. The
cellExtractor function maps each stem's generated forms (with their
features and base meaning) to a per-cell surface realization.
Specialized to Form := String since Stem's allForms returns
String-typed surface forms.
Equations
- One or more equations did not get rendered due to their size.