Plural Distributivity and Non-Maximality #
Tolerant-distributive operators and the four-cell typology of
distributivity × maximality. The substrate primitives (Tolerance,
distMaximal, allSatisfy, someSatisfy, noneSatisfy) live in
Plurality/Basic.lean; the trivalent K&S apparatus (pluralTruthValue,
homogeneity_gap_symmetric, pluralTruthValue_neg) lives in
Plurality/Trivalent.lean.
Main declarations #
distTolerant— tolerant-distributive operator (German jeweils-style semantics with exception tolerance).distMaximal_iff_identity,distTolerant_allows_exceptions— operator relations.distMaximal_singleton,distMaximal_pair,distTolerant_singleton,distTolerant_identity_singleton— atom-vacuity theorems.DistMaxClass,DistMaxClass.{distMax,distNonMax,nonDistMax,nonDistNonMax}— the four-cell typology from [HRSW25].distTolerantQuant— hypothetical DP-internal tolerant quantifier (typology-predicted but unattested).distMaximal_iff_forall_atom,distMaximal_iff_star_atoms— grounding ofdistMaximalin mathlib'sIsAtomand Link's star-closure ([Lin83]).
Implementation notes #
A tolerance relation induces a partition on pluralities: identity tolerance → exact QUD, coarser tolerance → coarser QUD.
Tolerant-distributive operator #
Tolerant distributive: ⟦each* P⟧^⪯(x) = ∃z. z ⪯ x ∧ z ≠ ∅ ∧ ∀a ∈ z. P(a)
This is the semantics of German "jeweils" (for non-max speakers). The nonemptiness constraint prevents the empty set from vacuously witnessing truth (∀a ∈ ∅, P a w is trivially true).
Equations
- Semantics.Plurality.Distributivity.distTolerant P tol x w = ∃ z ∈ x.powerset, z.Nonempty ∧ tol.rel z x ∧ ∀ a ∈ z, P a w
Instances For
Equations
- Semantics.Plurality.Distributivity.distTolerant.instDecidable P tol x w = id inferInstance
Key theorems #
Maximal distributive ↔ tolerant distributive with identity tolerance (on nonempty pluralities).
Maximal distributive forces all atoms to satisfy P
Tolerant distributive with trivial tolerance allows exceptions
Atom vacuity #
On singletons, distMaximal reduces to the predicate itself.
This is WHY each/jeder forces maximality: when it distributes P to individual
atoms, the result is just P(a) — there's no plurality for tolerance to weaken.
[HRSW25] §2.3, the argument below the four-way classification.
On pairs, distMaximal reduces to conjunction of individual checks.
This is the two-atom instance of Link's distributive inference
(distr_atom_part in Plurality/Algebra.lean): for a distributive P, checking
*P on a two-atom plurality {a, b} reduces to P(a) ∧ P(b).
When a = b, {a, b} = {a} (Finset dedup) and the result
degenerates to P a w (= P a w ∧ P a w by and_self).
Atom Vacuity Theorem (general).
On singletons, distTolerant reduces to the predicate itself for ANY
tolerance relation — not just identity tolerance.
This is because {a} has exactly one nonempty subset (itself), and
tol.refl guarantees tol.rel {a} {a} holds. The tolerance parameter
literally has nothing to vary over.
Corollary: on singletons, all tolerance relations agree.
Special case: identity tolerance on singletons.
The independence result #
Classification by [±distributive] × [±maximal].
[HRSW25] present a four-cell typology in which the two properties are argued to be orthogonal: all four cells are attested or predicted.
Constructors:
.distMax— +dist, +max (English each, German jeder).distNonMax— +dist, −max (German jeweils).nonDistMax— −dist, +max (English all, German alle).nonDistNonMax— −dist, −max (definite plurals)
- distMax : DistMaxClass
- distNonMax : DistMaxClass
- nonDistMax : DistMaxClass
- nonDistNonMax : DistMaxClass
Instances For
Equations
- Semantics.Plurality.Distributivity.instDecidableEqDistMaxClass 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
Does this class force the predicate to apply to each atom separately?
Equations
- Semantics.Plurality.Distributivity.DistMaxClass.distMax.isDistributive = True
- Semantics.Plurality.Distributivity.DistMaxClass.distNonMax.isDistributive = True
- Semantics.Plurality.Distributivity.DistMaxClass.nonDistMax.isDistributive = False
- Semantics.Plurality.Distributivity.DistMaxClass.nonDistNonMax.isDistributive = False
Instances For
Equations
- Semantics.Plurality.Distributivity.instDecidablePredDistMaxClassIsDistributive Semantics.Plurality.Distributivity.DistMaxClass.distMax = isTrue trivial
- Semantics.Plurality.Distributivity.instDecidablePredDistMaxClassIsDistributive Semantics.Plurality.Distributivity.DistMaxClass.distNonMax = isTrue trivial
- Semantics.Plurality.Distributivity.instDecidablePredDistMaxClassIsDistributive Semantics.Plurality.Distributivity.DistMaxClass.nonDistMax = isFalse not_false
- Semantics.Plurality.Distributivity.instDecidablePredDistMaxClassIsDistributive Semantics.Plurality.Distributivity.DistMaxClass.nonDistNonMax = isFalse not_false
Does this class block exception tolerance (force all atoms to satisfy P)?
Equations
- Semantics.Plurality.Distributivity.DistMaxClass.distMax.isMaximal = True
- Semantics.Plurality.Distributivity.DistMaxClass.nonDistMax.isMaximal = True
- Semantics.Plurality.Distributivity.DistMaxClass.distNonMax.isMaximal = False
- Semantics.Plurality.Distributivity.DistMaxClass.nonDistNonMax.isMaximal = False
Instances For
Equations
- Semantics.Plurality.Distributivity.instDecidablePredDistMaxClassIsMaximal Semantics.Plurality.Distributivity.DistMaxClass.distMax = isTrue trivial
- Semantics.Plurality.Distributivity.instDecidablePredDistMaxClassIsMaximal Semantics.Plurality.Distributivity.DistMaxClass.nonDistMax = isTrue trivial
- Semantics.Plurality.Distributivity.instDecidablePredDistMaxClassIsMaximal Semantics.Plurality.Distributivity.DistMaxClass.distNonMax = isFalse not_false
- Semantics.Plurality.Distributivity.instDecidablePredDistMaxClassIsMaximal Semantics.Plurality.Distributivity.DistMaxClass.nonDistNonMax = isFalse not_false
Hypothetical exception-tolerant DP quantifier. [HRSW25] flag this as a typology cell predicted possible by the Križ & [KS21b] framework but not attested in any known language. The non-attestation is a typological puzzle — the formal tools for non-maximality (tolerance relations) don't inherently block DP-internal quantifiers from using them.
⟦[jeder* P] Q⟧^≤ = λw.∃z[z ≤ ⊕P ∧ ∀y[y ∈ AT ∧ y ⊑ z → ⟦Q⟧^≤(w)(y)]]
Equations
- Semantics.Plurality.Distributivity.distTolerantQuant restrictor scope tol x w = ∃ z ∈ x.powerset, z.Nonempty ∧ tol.rel z x ∧ (∀ a ∈ z, restrictor a w) ∧ ∀ a ∈ z, scope a w
Instances For
Grounding in Link's mereology #
distMaximal over the free Finset Atom model is exactly Link's
distributive inference / star-closure ([Lin83]; Algebra.star = Mereology.AlgClosure). These two theorems discharge the
distMaximal_iff_star_atoms Todo flagged in Plurality/Algebra.lean §6.
The Algebra.distr_atom_part route does not instantiate at this carrier:
the bespoke Mereology.Atom x := ∀ y ≤ x, y = x degenerates over an
OrderBot lattice — only ⊥/∅ satisfies it (for nonempty x,
∅ ≤ x ∧ ∅ ≠ x falsifies it). The faithful bridge therefore runs through
mathlib's IsAtom (which excludes ⊥); over Finset Atom the atoms are
the singletons (Finset.isAtom_iff).
distMaximal is Link's distributive inference: P holds maximally
on x iff every atomic part of x satisfies P. Grounded in mathlib's
IsAtom — over Finset Atom the atoms are singletons, so this is the
Atom-correct restatement of distMaximal_forces_all. Holds for every
x (the empty plurality has no atomic parts, so both sides are vacuous).
distMaximal is Link's star-closure ([Lin83]'s *,
Algebra.star = Mereology.AlgClosure): a nonempty plurality satisfies
P maximally iff it is a join of P-atoms (singletons). Discharges the
Plurality/Algebra.lean §6 distMaximal_iff_star_atoms Todo; the
Nonempty hypothesis carries the ⊥-exclusion (AlgClosure cannot
build ∅).