Unified Numeral Semantics #
@cite{blok-2015} @cite{goodman-stuhlmuller-2013} @cite{horn-1972} @cite{kennedy-2015} @cite{hackl-2000} @cite{link-1983} @cite{spector-2013}
Consolidates numeral theory infrastructure into a single module. All numeral meanings
(bare + modified) flow through maxMeaning. The only theory disagreement is the
OrderingRel for bare numerals:
| Theory | Bare "three" | bareRel |
|---|---|---|
| Lower-bound | ≥3 | .ge |
| Exact | =3 | .eq |
Modified numerals are theory-independent — everyone agrees "more than 3" means .gt.
Sections #
- Ordering relations and modifier classification
- Unified meaning function (
maxMeaning) - BareNumeral type and NumeralExpr
- Alternative sets (Kennedy §4.1)
- Class A/B theorems, anti-Horn-scale argument
- Theory parameterization (
NumeralTheory) - Theory instances (
LowerBound,Exact) - Derived properties (ambiguity, monotonicity, RSA)
- Comparison infrastructure and theorems
- GQT bridge theorems
- CumminsFranke bridge
- Aliases
- Verification
The 5 ordering relations used in Kennedy's maximality framework.
Each modified numeral selects one of these relations:
.eq: bare numerals ("three" = max = 3).gt: "more than" (max > 3).lt: "fewer than" (max < 3).ge: "at least" (max ≥ 3).le: "at most" (max ≤ 3)
- eq : OrderingRel
- gt : OrderingRel
- lt : OrderingRel
- ge : OrderingRel
- le : OrderingRel
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Semantics.Lexical.Numeral.instBEqOrderingRel.beq x✝ y✝ = (x✝.ctorIdx == y✝.ctorIdx)
Instances For
Class A (strict) vs Class B (non-strict) modified numerals.
The distinction predicts ignorance implicature patterns:
- Class A (>, <): EXCLUDE the bare-numeral world → no ignorance
- Class B (≥, ≤): INCLUDE the bare-numeral world → ignorance
- classA : ModifierClass
- classB : ModifierClass
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Semantics.Lexical.Numeral.instBEqModifierClass.beq x✝ y✝ = (x✝.ctorIdx == y✝.ctorIdx)
Instances For
Upper vs lower bound direction.
.upper: constrains from above (at most, fewer than).lower: constrains from below (at least, more than)
- upper : BoundDirection
- lower : BoundDirection
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Semantics.Lexical.Numeral.instBEqBoundDirection.beq x✝ y✝ = (x✝.ctorIdx == y✝.ctorIdx)
Instances For
Derive the modifier class from an ordering relation.
Equations
- Semantics.Lexical.Numeral.modifierClassOf Semantics.Lexical.Numeral.OrderingRel.eq = Semantics.Lexical.Numeral.ModifierClass.classB
- Semantics.Lexical.Numeral.modifierClassOf Semantics.Lexical.Numeral.OrderingRel.gt = Semantics.Lexical.Numeral.ModifierClass.classA
- Semantics.Lexical.Numeral.modifierClassOf Semantics.Lexical.Numeral.OrderingRel.lt = Semantics.Lexical.Numeral.ModifierClass.classA
- Semantics.Lexical.Numeral.modifierClassOf Semantics.Lexical.Numeral.OrderingRel.ge = Semantics.Lexical.Numeral.ModifierClass.classB
- Semantics.Lexical.Numeral.modifierClassOf Semantics.Lexical.Numeral.OrderingRel.le = Semantics.Lexical.Numeral.ModifierClass.classB
Instances For
Derive bound direction from an ordering relation.
Equations
- Semantics.Lexical.Numeral.boundDirectionOf Semantics.Lexical.Numeral.OrderingRel.eq = Semantics.Lexical.Numeral.BoundDirection.lower
- Semantics.Lexical.Numeral.boundDirectionOf Semantics.Lexical.Numeral.OrderingRel.gt = Semantics.Lexical.Numeral.BoundDirection.lower
- Semantics.Lexical.Numeral.boundDirectionOf Semantics.Lexical.Numeral.OrderingRel.lt = Semantics.Lexical.Numeral.BoundDirection.upper
- Semantics.Lexical.Numeral.boundDirectionOf Semantics.Lexical.Numeral.OrderingRel.ge = Semantics.Lexical.Numeral.BoundDirection.lower
- Semantics.Lexical.Numeral.boundDirectionOf Semantics.Lexical.Numeral.OrderingRel.le = Semantics.Lexical.Numeral.BoundDirection.upper
Instances For
The unified meaning function for all numeral expressions.
maxMeaning rel m n is true iff cardinality n stands in relation rel to
threshold m. This captures Kennedy's:
⟦modifier m⟧ = λP. max{d | #P ≥ d} REL m
where n plays the role of max{d | #P ≥ d} and m is the numeral.
At the cardinality level, maxMeaning.eq also plays the role of @cite{bylinina-nouwen-2020}
MANY operator: MANY(n) = λcard. card = n. A proper MANY over plural
individuals awaits mereological infrastructure; at the Nat abstraction the
two are definitionally equal.
Equations
- Semantics.Lexical.Numeral.maxMeaning Semantics.Lexical.Numeral.OrderingRel.eq m n = (n == m)
- Semantics.Lexical.Numeral.maxMeaning Semantics.Lexical.Numeral.OrderingRel.gt m n = decide (n > m)
- Semantics.Lexical.Numeral.maxMeaning Semantics.Lexical.Numeral.OrderingRel.lt m n = decide (n < m)
- Semantics.Lexical.Numeral.maxMeaning Semantics.Lexical.Numeral.OrderingRel.ge m n = decide (n ≥ m)
- Semantics.Lexical.Numeral.maxMeaning Semantics.Lexical.Numeral.OrderingRel.le m n = decide (n ≤ m)
Instances For
Bare numeral meaning: max = m (exact cardinality).
Equations
Instances For
"More than m": max > m.
Equations
Instances For
"Fewer than m": max < m.
Equations
Instances For
"At least m": max ≥ m.
Equations
Instances For
"At most m": max ≤ m.
Equations
Instances For
Bare numeral utterances (one through five).
- one : BareNumeral
- two : BareNumeral
- three : BareNumeral
- four : BareNumeral
- five : BareNumeral
Instances For
Equations
- Semantics.Lexical.Numeral.instBEqBareNumeral.beq x✝ y✝ = (x✝.ctorIdx == y✝.ctorIdx)
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Convert BareNumeral to its numeric value.
Equations
Instances For
Equations
- One or more equations did not get rendered due to their size.
A numeral expression: either a bare numeral or a modified numeral.
- bare (n : ℕ) : NumeralExpr
- modified (rel : OrderingRel) (n : ℕ) : NumeralExpr
Instances For
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.
- Semantics.Lexical.Numeral.instDecidableEqNumeralExpr.decEq (Semantics.Lexical.Numeral.NumeralExpr.bare n) (Semantics.Lexical.Numeral.NumeralExpr.modified rel n_1) = isFalse ⋯
- Semantics.Lexical.Numeral.instDecidableEqNumeralExpr.decEq (Semantics.Lexical.Numeral.NumeralExpr.modified rel n) (Semantics.Lexical.Numeral.NumeralExpr.bare n_1) = isFalse ⋯
Instances For
Equations
- Semantics.Lexical.Numeral.instBEqNumeralExpr.beq (Semantics.Lexical.Numeral.NumeralExpr.bare a) (Semantics.Lexical.Numeral.NumeralExpr.bare b) = (a == b)
- Semantics.Lexical.Numeral.instBEqNumeralExpr.beq (Semantics.Lexical.Numeral.NumeralExpr.modified a a_1) (Semantics.Lexical.Numeral.NumeralExpr.modified b b_1) = (a == b && a_1 == b_1)
- Semantics.Lexical.Numeral.instBEqNumeralExpr.beq x✝¹ x✝ = false
Instances For
Meaning of a numeral expression, parameterized by the bare-numeral theory.
Equations
- Semantics.Lexical.Numeral.NumeralExpr.meaning bareRel (Semantics.Lexical.Numeral.NumeralExpr.bare m) x✝ = Semantics.Lexical.Numeral.maxMeaning bareRel m x✝
- Semantics.Lexical.Numeral.NumeralExpr.meaning bareRel (Semantics.Lexical.Numeral.NumeralExpr.modified rel m) x✝ = Semantics.Lexical.Numeral.maxMeaning rel m x✝
Instances For
A numeral alternative in Kennedy's framework.
Instead of the traditional Horn scale ⟨1, 2, 3,...⟩, the relevant alternatives for numeral n are:
{bare n, more than n, at least n} (lower-bound direction) {bare n, fewer than n, at most n} (upper-bound direction)
- bare (n : ℕ) : NumeralAlternative
- modified (rel : OrderingRel) (n : ℕ) : NumeralAlternative
Instances For
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
Equations
- One or more equations did not get rendered due to their size.
- Semantics.Lexical.Numeral.instBEqNumeralAlternative.beq (Semantics.Lexical.Numeral.NumeralAlternative.bare a) (Semantics.Lexical.Numeral.NumeralAlternative.bare b) = (a == b)
- Semantics.Lexical.Numeral.instBEqNumeralAlternative.beq x✝¹ x✝ = false
Instances For
Lower-bound alternative set.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Upper-bound alternative set.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Get the meaning of a numeral alternative.
Equations
Instances For
Class A modifiers EXCLUDE the bare-numeral world.
Class B modifiers INCLUDE the bare-numeral world.
Bare numeral entails "at least n" (Class B ≥).
Bare numeral does NOT entail "more than n" (Class A >).
Exact bare numerals are NOT monotonic.
Bare numerals do not form a traditional Horn scale.
"At least n" is strictly weaker than "bare n" (under bilateral semantics).
"More than n" and "bare n" have disjoint denotations.
Standard list of numeral utterances for RSA scenarios.
Equations
Instances For
A semantic theory for number words.
Each theory specifies a bareRel — the ordering relation for bare numerals.
All meanings are derived via maxMeaning:
- Bare numeral meaning:
maxMeaning T.bareRel w.toNat n - Modified numeral meaning:
maxMeaning rel m n(theory-independent)
- name : String
Name of the theory
- citation : String
Academic citation
- bareRel : OrderingRel
The key parameter: which ordering relation for bare numerals
- utterances : List BareNumeral
Utterances to consider (default: one, two, three)
World states to consider (default: 0, 1, 2, 3)
Instances For
Derivational direction for the at-least/exactly relationship (@cite{bylinina-nouwen-2020} §5–6).
The four views on numeral semantics differ in which reading is basic:
exactFromAtLeast: base meaning is at-least (≥n), exact derived via EXH or scalar implicature. Corresponds toLowerBound/ @cite{horn-1972} / the modifier–number view.atLeastFromExact: base meaning is exact (=n), at-least derived via type-shift or relaxing maximality. Corresponds toExact/ @cite{kennedy-2015} / the degree quantifier view.
- exactFromAtLeast : DerivationalDirection
- atLeastFromExact : DerivationalDirection
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Derive the derivational direction from a theory's bareRel.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Derived bare-numeral meaning from bareRel.
Equations
- T.meaning w n = Semantics.Lexical.Numeral.maxMeaning T.bareRel w.toNat n
Instances For
Derived meaning for general numeral expressions.
Equations
Instances For
Lower-bound numeral theory.
"Two" means ≥2. The exact interpretation emerges via scalar implicature.
Equations
- Semantics.Lexical.Numeral.LowerBound = { name := "Lower-bound", citation := "Horn 1972", bareRel := Semantics.Lexical.Numeral.OrderingRel.ge }
Instances For
Exact numeral theory.
"Two" means =2 (via maximality). No RSA strengthening needed for bare numerals.
Equations
- Semantics.Lexical.Numeral.Exact = { name := "Exact", citation := "Kennedy 2015", bareRel := Semantics.Lexical.Numeral.OrderingRel.eq }
Instances For
Lower-bound meaning is maxMeaning.ge.
Exact meaning is maxMeaning.eq.
Lower-bound derives exact from at-least (@cite{horn-1972}; @cite{bylinina-nouwen-2020} §5).
Exact derives at-least from exact (@cite{kennedy-2015}; @cite{bylinina-nouwen-2020} §6).
De-Fregean Type-Shifting: Exact → Lower-Bound #
@cite{kennedy-2015} shows that the lower-bound meaning of bare numerals can
be derived from the exact (de-Fregean) meaning via @cite{partee-1987}'s BE + iota
type-shifting operations. The de-Fregean meaning max{n | D(n)} = m is basic;
applying BE derives a property λn. n = m; applying iota and existential closure
yields ∃x[P(x) ∧ #(x) = m], which is the one-sided (lower-bound) truth condition.
Key fact: maxMeaning.ge m n ↔ ∃ k ≥ m, maxMeaning.eq k n. The lower-bound
reading says "the max is at least m", which holds iff there exists some k ≥ m
such that the max is exactly k. This is the formal content of the type-shift.
Type-lower the exact meaning to get the lower-bound meaning.
Corresponds to Kennedy's derivation via BE + iota + existential closure.
typeLower exact m n = true iff ∃ k ≥ m, exact k n = true.
We compute this over a bounded range [m, maxN].
Equations
- Semantics.Lexical.Numeral.typeLower exact maxN m n = (List.range (maxN + 1)).any fun (k : ℕ) => decide (k ≥ m) && exact k n
Instances For
The lower-bound theory is derivable from the exact theory via type-shifting.
For each bare numeral and each standard world, the lower-bound meaning
equals the type-lowered exact meaning. This formalizes @cite{kennedy-2015}'s claim
that atLeastFromExact is not just a label but a derivational fact:
maxMeaning.ge m n = typeLower (maxMeaning.eq) 3 m n for standard worlds.
Why this is the only type-shift: the equivalence ∃ k ≥ m, n = k ↔ n ≥ m
is a tautology of linear orders on ℕ.
Partee's BE extracts singletons from the GQ; existential closure binds the degree variable; the result is uniquely determined by the linear order on degrees. No other Partee shift + closure mode produces a different reading:
- BE is the unique GQ→property lowering preserving content
- Universal closure would give
∀ k ≥ m, n = k, which is false for all n when there exist distinct k₁ ≥ m and k₂ ≥ m (i.e., always for m < maxN) - The equivalence is a fact about ℕ, not a design choice
EXH and Type-Shifting Are Inverses #
@cite{spector-2013} (§6.2) presents an approach (from @cite{chierchia-fox-spector-2012}) where the exact reading of bare numerals arises from
a covert exhaustivity operator: EXH(≥n) = ≥n ∧ ¬(≥n+1) = (=n). @cite{kennedy-2015} proposes the reverse: the lower-bound reading arises from type-shifting the
exact meaning: typeShift(=n) = ∃k≥n.(=k) = (≥n).
These are inverse operations on the same pair of meanings:
exact ——typeShift——→ lower-bound
↑ |
└────────EXH────────────┘
For RSA, only the pair {exact, lower-bound} matters — the listener marginalizes over both regardless of which is "basic". But type-shifting is preferable to EXH because:
- Independently motivated: @cite{partee-1987} type-shifting applies to all NPs, not just numerals. It's part of the grammar regardless.
- No free parameters: The lower-bound meaning is the unique output of
type-shifting (proved:
typeLower_uniqueness,universal_closure_fails). EXH requires specifying an alternative set. - No distribution problems: EXH must be stipulated as optionally present/absent at various syntactic positions. Type-shifted meanings are always grammatically available (Partee's universal).
- Quality filter does the work: In RSA, the quality filter selects between type-shifted meanings based on the speaker's epistemic state. EXH insertion requires an additional mechanism for the listener to reason about.
Scalar exhaustification for numerals.
exhNumeral m n = "the max count is at least m AND NOT at least m+1"
= "the max count is exactly m".
This is the EXH from @cite{spector-2013} (§6.2) applied to the numeral scalar alternative set
{≥k : k is a numeral}.
Equations
- One or more equations did not get rendered due to their size.
Instances For
EXH(lower-bound) = exact: Exhaustifying the lower-bound meaning produces the exact meaning. This is the forward direction of the duality.
typeShift(exact) = lower-bound: Type-shifting the exact meaning
produces the lower-bound meaning. This is the backward direction.
(Already proved as lowerBound_from_exact_typeshift; restated for symmetry.)
The EXH–type-shift round-trip is the identity on exact meanings.
typeShift(EXH(typeShift(exact))) = typeShift(exact) = lower-bound.
Equivalently: starting from exact, type-shifting then exhaustifying
recovers exact.
EXH is redundant given type-shifting. The pair {exact, lower-bound}
is obtainable from exact alone (via type-shifting) without EXH.
Since type-shifting is independently motivated and produces
the unique derived meaning (typeLower_uniqueness), EXH is not needed
to generate the ambiguity that RSA marginalizes over.
Formally: the set of meanings available under Kennedy + type-shifting equals the set available under LB + EXH.
Strength ordering: w₁ is stronger than w₂ if w₁ entails w₂.
Instances For
Decidable strength comparison.
Instances For
Count worlds compatible with an utterance.
Equations
- T.compatibleCount w = (List.filter (T.meaning w) T.worlds).length
Instances For
List of worlds compatible with an utterance.
Equations
- T.compatibleWorlds w = List.filter (T.meaning w) T.worlds
Instances For
Is there semantic ambiguity for this utterance?
Equations
- T.hasAmbiguity w = decide (T.compatibleCount w > 1)
Instances For
Monotonicity: larger numerals are stronger.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Decidable monotonicity check.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A theory is scalar if numerals form a Horn scale.
Equations
- T.isScalar = (T.isMonotonic ∧ ∀ (w₁ w₂ : Semantics.Lexical.Numeral.BareNumeral), T.strongerThan w₁ w₂ → T.strongerThan w₂ w₁ → w₁ = w₂)
Instances For
"two" is compatible with both 2 and 3 (ambiguity exists).
Lower-bound has ambiguity for "two".
"three" entails "two" in lower-bound semantics.
"two" entails "one" in lower-bound semantics.
Lower-bound semantics is monotonic.
"two" is compatible with only world 2 (exact meaning).
No ambiguity for bare numerals.
Exact differs from LowerBound on bare numerals.
The key divergence: ambiguity.
Under Exact, only one world compatible.
Exact is not monotonic.
Summary: Exact vs LowerBound bare numerals.
Do two theories agree on utterance w in world n?
Equations
- Semantics.Lexical.Numeral.theoriesAgreeAt T₁ T₂ w n = (T₁.meaning w n == T₂.meaning w n)
Instances For
Do two theories agree on utterance w across all worlds?
Equations
- Semantics.Lexical.Numeral.theoriesAgreeOn T₁ T₂ w = T₁.worlds.all fun (n : ℕ) => Semantics.Lexical.Numeral.theoriesAgreeAt T₁ T₂ w n
Instances For
Find worlds where two theories diverge.
Equations
- Semantics.Lexical.Numeral.divergingWorlds T₁ T₂ w = List.filter (fun (n : ℕ) => !Semantics.Lexical.Numeral.theoriesAgreeAt T₁ T₂ w n) T₁.worlds
Instances For
Do two theories agree on all utterances in all worlds?
Equations
- Semantics.Lexical.Numeral.theoriesEquivalent T₁ T₂ = T₁.utterances.all fun (w : Semantics.Lexical.Numeral.BareNumeral) => Semantics.Lexical.Numeral.theoriesAgreeOn T₁ T₂ w
Instances For
Ambiguity difference.
Equations
- Semantics.Lexical.Numeral.hasMoreAmbiguity T₁ T₂ w = decide (T₁.compatibleCount w > T₂.compatibleCount w)
Instances For
GQT "at least n" agrees with maxMeaning.ge on intersection cardinality.
GQT "at most n" agrees with maxMeaning.le on intersection cardinality.
GQT "exactly n" agrees with maxMeaning.eq on intersection cardinality.
"More than m" via maximality = n > m.
Instances For
Instances For
Instances For
Equations
Instances For
Equations
Instances For
Instances For
Instances For
maxMeaning as ℕ-pullback of Core.Scale degree properties #
maxMeaning computes over ℕ independently — it works, but the degree
properties in Core.Scale (atLeastDeg, moreThanDeg, etc.) are the
canonical scale-level definitions. These bridge theorems prove that
maxMeaning is the Bool/decidable restriction of Core.Scale degree
properties, connecting ℕ-level computation to scale-level definitions.
This means density predictions (moreThan_noMaxInf, atLeast_hasMaxInf)
flow compositionally from Core.Scale through numeral semantics.
Literal/exact semantics for numeral expressions. "six feet" is true of x iff μ_height(x) = 183.
Equations
- Semantics.Lexical.Numeral.numeralExact stated entity = (Core.Scale.HasDegree.degree entity == stated)
Instances For
"At least n" semantics (lower-bound reading).
Equations
- Semantics.Lexical.Numeral.numeralAtLeast threshold entity = decide (Core.Scale.HasDegree.degree entity ≥ threshold)
Instances For
Approximate match with tolerance (for vagueness/imprecision).
Equations
- One or more equations did not get rendered due to their size.
Instances For
Construct a MeasurePredicate from a HasDegree instance
Equations
- Semantics.Lexical.Numeral.MeasurePredicate.fromHasDegree E dim = { dimension := dim, μ := Core.Scale.HasDegree.degree }
Instances For
A degree phrase denotes a specific degree value. "1000 dollars" denotes the degree 1000 (in dollar units).
Instances For
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
Equations
Instances For
Construct a degree phrase from a rational number
Equations
- Semantics.Lexical.Numeral.DegreePhrase.ofRat n unit = { value := n, unit := unit }
Instances For
Construct a degree phrase from a natural number
Equations
- Semantics.Lexical.Numeral.DegreePhrase.ofNat n unit = { value := ↑n, unit := unit }
Instances For
Compositional semantics for measure sentences. ⟦X measure-pred degree-phrase⟧ = μ(X) = d
Equations
- Semantics.Lexical.Numeral.measureSentence pred entity deg = (pred.μ entity == deg.value)
Instances For
Compositional semantics using HasDegree directly.
Equations
- Semantics.Lexical.Numeral.measureSentence' entity deg = (Core.Scale.HasDegree.degree entity == deg.value)
Instances For
The compositional measure sentence semantics equals the simple numeral check.
MeasurePredicate.fromHasDegree produces the HasDegree measure function.
Measure sentences compose correctly with HasDegree-derived predicates.
Numeral semantics with precision mode. "1000 dollars" under exact mode: true iff cost = 1000 "1000 dollars" under approximate mode: true iff Round(cost) = 1000
Equations
- Semantics.Lexical.Numeral.numeralWithPrecision stated entity mode base = Semantics.Lexical.Numeral.Precision.matchesPrecision mode stated (Core.Scale.HasDegree.degree entity) base