Number resolution #
The single canonical number-resolution operation: when two number-bearing referents combine (conjoined DPs, resolved agreement), the result is derived from the join-semilattice of individuals ([Lin83]) via [Har14a]'s feature geometry, then coarsened to the values the language's number system makes available — the formal content of [Cor00] §6.3: "the result depends on which number values the language has."
Number.resolvecomputes the finest value for the mereological sum (sg ⊔ sg → du: atom ⊔ atom = pair).Number.coarsenTomaps it to an available value (du → pl in a {sg, pl} system like English).Number.resolveIncomposes the two;Number.System.resolveis the system-typed entry point.
Consumers: Studies/Carstens2026.lean calls resolveIn as the number dimension of
its coordinate φ-resolution; Studies/Corbett2000.lean states the book's resolution
data over its language systems.
Canonical resolution #
Canonical number resolution: the finest value for the mereological sum of two referents, derived from two lattice-theoretic principles. The resolution data are [Cor00] §6.3 (resolved dual in Slovene/Sorbian); the value lattice they are derived from is [Lin83]/[Har14a]:
Cardinality addition (for determinate values): |A ⊔ B| = |A| + |B| for disjoint referent sets A, B. The sum is mapped back to the finest determinate value via
Number.fromCard.- sg(1) + sg(1) = 2 → du
- sg(1) + du(2) = 3 → trial
- du(2) + du(2) = 4 → plural (no determinate value for sums ≥ 4)
MIN/AUG lattice join (for [±minimal] systems without [±atomic]): In a 2-level lattice {minimal, augmented}, the join of any two distinct elements exceeds the minimal. Since coordination requires disjoint referents, the result is always augmented.
Catch-all: values without exact cardinality or MIN/AUG membership (plural, paucal, greaterPlural, etc.) resolve to plural — the default non-singular value.
Equations
- a.resolve b = match a.exactCard, b.exactCard with | some na, some nb => Number.fromCard (na + nb) | x, x_1 => if a.isMinAug ∧ b.isMinAug then Number.augmented else Number.plural
Instances For
Canonical resolution is commutative: x ⊔ y = y ⊔ x.
Coarsening to a system #
Coarsen a value to the nearest available one in a number system.
Values not present in the system map to their semantic superordinate — the broader value whose referents include the absent value's referents.
The superordinate map is hand-specified: it is not monotone in the
markedness order (Number.instPartialOrder), whose direction is
implicational (b presupposes a), not referent-containment. By construction it
returns a value in system (or the input unchanged), so resolveIn is closed
over every [Har14a] Table 3 system.
Equations
- One or more equations did not get rendered due to their size.
- Number.coarsenTo system Number.augmented = if system.contains Number.augmented = true then Number.augmented else if system.contains Number.plural = true then Number.plural else Number.augmented
- Number.coarsenTo system c = if system.contains c = true then c else c
Instances For
System-parameterized number resolution: canonical lattice join, coarsened to the available values in the target system.
This derives resolution rules from two independent components:
- Lattice join: sg + sg → du (canonical)
- Coarsening: du → pl in a {sg, pl} system
Equations
- Number.resolveIn system a b = Number.coarsenTo system (a.resolve b)
Instances For
Resolution typed by a Number.System: resolve in the system's values.
Equations
- ns.resolve a b = Number.resolveIn ns.values a b
Instances For
Lattice verification #
The canonical resolution is verified against the 3-atom powerset lattice
(Number.ps3: nonempty subsets of Fin 3, join = union).
Number.latticeToFeatures classifies elements by lattice position;
resolve is the union pushed through the classification.
Atom ⊔ atom is a pair, which is dual (minimal non-atom).
Lattice grounding: resolve sg sg = du.
Atom ⊔ pair is the triple, which is plural (non-minimal non-atom).
Lattice grounding: resolve sg du = trial (plural in the base
system, trial with recursion).
The derived resolve agrees with the powerset lattice: join in the
concrete lattice, then classify via latticeToFeatures, matches
resolve applied to the classified inputs — the structural proof
that resolve is the lattice join pushed through the
classification, not a stipulation.