Generic Containment and the *ABA Pattern #
@cite{bobaljik-2012} @cite{caha-2009}
Overview #
A widely-discussed cross-linguistic generalization across several
domains of inflectional morphology: when a list of form-class indices
along an ordered hierarchy of paradigm positions is read off a
suppletion pattern, the configuration A–B–A — outer positions sharing
a form that the intervening position lacks — is systematically
unattested. Contiguity (A–A–B, A–B–B, A–B–C) is the modal
pattern.
This module supplies framework-neutral substrate: a contiguity
predicate over List Nat (a list of form-class indices), with both a
computable Bool decision procedure and a Prop wrapper carrying a
Decidable instance. Domain-specific instantiations live elsewhere:
- Case allomorphy (
Core/Case/Allomorphy.lean) - Degree morphology (
Core/Morphology/DegreeContainment.lean)
What explains the gap is theory-laden and contested. The DM
tradition (@cite{bobaljik-2012}) derives it from post-syntactic
Vocabulary Insertion + Elsewhere ordering on a containment hierarchy.
The Nanosyntax tradition (@cite{caha-2009}, @cite{starke-2009})
derives it from phrasal spellout + the Superset Principle on the same
containment hierarchy interpreted as syntactic structure. The two
disagree on whether the locus of explanation is morphology or syntax;
this module takes no position.
Does a list of form-class indices contain an ABA violation? An ABA violation occurs at positions i < j < k when pattern[i] = pattern[k] ≠ pattern[j] — the same form class appears at two non-adjacent positions while the intervening position has a different form.
Works for any hierarchy length: 3-position (degree), 4-position (case), or longer.
Equations
- Morphology.Containment.violatesABA [] = false
- Morphology.Containment.violatesABA (vk :: rest) = (Morphology.Containment.checkFromI✝ vk rest || Morphology.Containment.violatesABA rest)
Instances For
Is a pattern contiguous (Bool)? Each form class occupies a contiguous span of positions on the hierarchy. Equivalent to ¬violatesABA.
Equations
- Morphology.Containment.isContiguous pattern = !Morphology.Containment.violatesABA pattern
Instances For
A list violates the *ABA pattern (Prop). Bridge to the Bool
decision procedure; downstream files that prefer Prop+Decidable
over = true boilerplate use this.
Equations
Instances For
A list is contiguous (Prop).
Instances For
The Bool and Prop forms of contiguity agree.
*ABA on a 3-position hierarchy (degree: POS, CMPR, SPRL). The only possible violation is positions (0,1,2): a = c ∧ a ≠ b.
*ABA on a 4-position hierarchy (case: NOM, ACC, GEN, DAT). Four possible triples: (0,1,2), (0,1,3), (0,2,3), (1,2,3).
Smoke tests: every cell-pattern shape this substrate's downstream
consumers care about resolves correctly under the predicates above.
These are examples rather than named theorems because nothing in
the codebase references them by name; the named-theorem shape would
pollute the public API surface of Morphology.Containment.