[PLLF16]: Embedded Implicatures as Pragmatic Inferences #
"Embedded Implicatures as Pragmatic Inferences under Compositional Lexical Uncertainty." Journal of Semantics 33(4): 755–802.
Empirical anchor: [CS11] #
The 3-players × 3-outcomes architecture is structurally the same as CS11's every/exactly one/no × some/all design (CS11 uses 6 letters × 3 cell-states for Exp 1, 3 letters for Exp 2). The LU model's predictions — DE prefers weak lexicon (NNN reading), UE prefers strong (SSS embedded SI) — match CS11's qualitative findings: STRONG > WEAK in universal contexts (Exp 1) and LOCAL > FALSE in non-monotonic (Exp 2). The LU model is silent on the attitude-verb gradient that CS11 doesn't test (think > want > all > must, from [GP09]).
The Puzzle #
Scalar implicatures interact asymmetrically with logical operators:
- UE (upward-entailing): "Every player hit some of his shots" → embedded implicature "some but not all" (enriched reading SSS preferred)
- DE (downward-entailing): "No player hit some of his shots" → global reading preferred, no embedded implicature (NNN preferred)
The Model: Compositional Lexical Uncertainty #
The key innovation is lexical uncertainty: L1 marginalizes over possible
lexica (refinements of "some") rather than using a fixed literal semantics.
This file formalizes the paper's neo-Gricean refinement model variant
(their (19d), refining only "some" to the two-element set
{⟦some⟧, ⟦some and not all⟧} of (14)) — not their unconstrained-refinement
model (19c), whose listener marginalizes over the full refinement lattice
℘(⟦some⟧) ∖ ∅. The two refinements are:
- Weak: "some" = "at least one" (the unrefined lower-bound
⟦some⟧) - Strong: "some" = "some but not all" (the maximal enrichment)
The PMF stack mirrors [GS13]'s latent-uncertainty model
on mathlib PMF, with Latent := Lexicon:
L0 lex u : PMF World—RSA.L0OfBoolMeaning(uniform on the extension).S1 lex w : PMF Utterance—RSA.S1Belief (L0 lex) (fun _ => 1) 1 w(α = 1, no utterance cost): normalisesL0 lex u wover utterances.marginalSpeaker w : PMF Utterance—RSA.marginalizeKernelofS1against the uniformLexiconprior.L1 u : PMF World—PMF.posterior marginalSpeaker (uniform World) u.
Architecture #
The experiment (Section 6) uses 3 players, each with outcome N (nothing) /
S (scored but not aced) / A (aced). The 10 equivalence classes are the
multisets of 3 outcomes. Utterances are PlayerQ × ShotQ (outer × inner
quantifier): "every/exactly one/no player hit all/none/some of his shots."
Predictions #
The asymmetry arises from monotonicity:
- DE (under "no"): strong "some" widens the true-world set → less informative → L1 prefers weak lexicon → global reading (NNN)
- UE (under "every"): strong "some" narrows the true-world set → more informative → L1 prefers strong lexicon → enriched reading (SSS)
Domain types #
World state as equivalence class over 3 players' outcomes. Each player's outcome: N (nothing), S (scored but not aced), A (aced). 10 classes = multisets of size 3 from {N, S, A}.
- NNN : World
- NNS : World
- NNA : World
- NSS : World
- NSA : World
- NAA : World
- SSS : World
- SSA : World
- SAA : World
- AAA : World
Instances For
Equations
- PottsEtAl2016.instDecidableEqWorld x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
- PottsEtAl2016.instReprWorld.repr PottsEtAl2016.World.NNN prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "PottsEtAl2016.World.NNN")).group prec✝
- PottsEtAl2016.instReprWorld.repr PottsEtAl2016.World.NNS prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "PottsEtAl2016.World.NNS")).group prec✝
- PottsEtAl2016.instReprWorld.repr PottsEtAl2016.World.NNA prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "PottsEtAl2016.World.NNA")).group prec✝
- PottsEtAl2016.instReprWorld.repr PottsEtAl2016.World.NSS prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "PottsEtAl2016.World.NSS")).group prec✝
- PottsEtAl2016.instReprWorld.repr PottsEtAl2016.World.NSA prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "PottsEtAl2016.World.NSA")).group prec✝
- PottsEtAl2016.instReprWorld.repr PottsEtAl2016.World.NAA prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "PottsEtAl2016.World.NAA")).group prec✝
- PottsEtAl2016.instReprWorld.repr PottsEtAl2016.World.SSS prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "PottsEtAl2016.World.SSS")).group prec✝
- PottsEtAl2016.instReprWorld.repr PottsEtAl2016.World.SSA prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "PottsEtAl2016.World.SSA")).group prec✝
- PottsEtAl2016.instReprWorld.repr PottsEtAl2016.World.SAA prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "PottsEtAl2016.World.SAA")).group prec✝
- PottsEtAl2016.instReprWorld.repr PottsEtAl2016.World.AAA prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "PottsEtAl2016.World.AAA")).group prec✝
Instances For
Equations
- PottsEtAl2016.instReprWorld = { reprPrec := PottsEtAl2016.instReprWorld.repr }
Equations
- PottsEtAl2016.instInhabitedWorld = { default := PottsEtAl2016.instInhabitedWorld.default }
Equations
- PottsEtAl2016.instFintypeWorld = { elems := { val := ↑PottsEtAl2016.World.enumList, nodup := PottsEtAl2016.World.enumList_nodup }, complete := PottsEtAl2016.instFintypeWorld._proof_1 }
Equations
- PottsEtAl2016.instDecidableEqShotQ x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
- PottsEtAl2016.instReprShotQ.repr PottsEtAl2016.ShotQ.all prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "PottsEtAl2016.ShotQ.all")).group prec✝
- PottsEtAl2016.instReprShotQ.repr PottsEtAl2016.ShotQ.none_ prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "PottsEtAl2016.ShotQ.none_")).group prec✝
- PottsEtAl2016.instReprShotQ.repr PottsEtAl2016.ShotQ.some_ prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "PottsEtAl2016.ShotQ.some_")).group prec✝
Instances For
Equations
- PottsEtAl2016.instReprShotQ = { reprPrec := PottsEtAl2016.instReprShotQ.repr }
Equations
- PottsEtAl2016.instInhabitedShotQ = { default := PottsEtAl2016.instInhabitedShotQ.default }
Equations
- PottsEtAl2016.instFintypeShotQ = { elems := { val := ↑PottsEtAl2016.ShotQ.enumList, nodup := PottsEtAl2016.ShotQ.enumList_nodup }, complete := PottsEtAl2016.instFintypeShotQ._proof_1 }
Equations
- PottsEtAl2016.instDecidableEqPlayerQ x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
- PottsEtAl2016.instReprPlayerQ = { reprPrec := PottsEtAl2016.instReprPlayerQ.repr }
Equations
- One or more equations did not get rendered due to their size.
- PottsEtAl2016.instReprPlayerQ.repr PottsEtAl2016.PlayerQ.no prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "PottsEtAl2016.PlayerQ.no")).group prec✝
Instances For
Equations
Equations
- PottsEtAl2016.instFintypePlayerQ = { elems := { val := ↑PottsEtAl2016.PlayerQ.enumList, nodup := PottsEtAl2016.PlayerQ.enumList_nodup }, complete := PottsEtAl2016.instFintypePlayerQ._proof_1 }
Statement: outer quantifier × inner quantifier.
Equations
Instances For
Utterance: a statement, or silence (none) — the null utterance, true at
every world.
Instances For
Lexicon: how "some" is interpreted.
Instances For
Equations
- PottsEtAl2016.instDecidableEqLexicon 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
Equations
- PottsEtAl2016.instReprLexicon = { reprPrec := PottsEtAl2016.instReprLexicon.repr }
Equations
Equations
- PottsEtAl2016.instFintypeLexicon = { elems := { val := ↑PottsEtAl2016.Lexicon.enumList, nodup := PottsEtAl2016.Lexicon.enumList_nodup }, complete := PottsEtAl2016.instFintypeLexicon._proof_1 }
World count functions #
Number of players who scored (hit ≥ 1 shot, i.e. S or A).
Equations
- PottsEtAl2016.World.NNN.numScored = 0
- PottsEtAl2016.World.NNS.numScored = 1
- PottsEtAl2016.World.NNA.numScored = 1
- PottsEtAl2016.World.NSS.numScored = 2
- PottsEtAl2016.World.NSA.numScored = 2
- PottsEtAl2016.World.NAA.numScored = 2
- PottsEtAl2016.World.SSS.numScored = 3
- PottsEtAl2016.World.SSA.numScored = 3
- PottsEtAl2016.World.SAA.numScored = 3
- PottsEtAl2016.World.AAA.numScored = 3
Instances For
Number of players who aced (hit all shots).
Equations
- PottsEtAl2016.World.NNN.numAced = 0
- PottsEtAl2016.World.NNS.numAced = 0
- PottsEtAl2016.World.NNA.numAced = 1
- PottsEtAl2016.World.NSS.numAced = 0
- PottsEtAl2016.World.NSA.numAced = 1
- PottsEtAl2016.World.NAA.numAced = 2
- PottsEtAl2016.World.SSS.numAced = 0
- PottsEtAl2016.World.SSA.numAced = 1
- PottsEtAl2016.World.SAA.numAced = 2
- PottsEtAl2016.World.AAA.numAced = 3
Instances For
Number of players who scored but did not ace.
Equations
- PottsEtAl2016.World.NNN.numScoredNotAced = 0
- PottsEtAl2016.World.NNS.numScoredNotAced = 1
- PottsEtAl2016.World.NNA.numScoredNotAced = 0
- PottsEtAl2016.World.NSS.numScoredNotAced = 2
- PottsEtAl2016.World.NSA.numScoredNotAced = 1
- PottsEtAl2016.World.NAA.numScoredNotAced = 0
- PottsEtAl2016.World.SSS.numScoredNotAced = 3
- PottsEtAl2016.World.SSA.numScoredNotAced = 2
- PottsEtAl2016.World.SAA.numScoredNotAced = 1
- PottsEtAl2016.World.AAA.numScoredNotAced = 0
Instances For
Number of players who did nothing (hit 0 shots).
Equations
- PottsEtAl2016.World.NNN.numNothing = 3
- PottsEtAl2016.World.NNS.numNothing = 2
- PottsEtAl2016.World.NNA.numNothing = 2
- PottsEtAl2016.World.NSS.numNothing = 1
- PottsEtAl2016.World.NSA.numNothing = 1
- PottsEtAl2016.World.NAA.numNothing = 1
- PottsEtAl2016.World.SSS.numNothing = 0
- PottsEtAl2016.World.SSA.numNothing = 0
- PottsEtAl2016.World.SAA.numNothing = 0
- PottsEtAl2016.World.AAA.numNothing = 0
Instances For
Truth conditions (lexicon-parameterized) #
Count of players satisfying the inner predicate, under a given lexicon.
all: number who acednone_: number who did nothingsome_: depends on lexicon:- weak: number who scored (≥ 1 shot)
- strong: number who scored but did not ace
Equations
- PottsEtAl2016.predCount PottsEtAl2016.ShotQ.all lex w = w.numAced
- PottsEtAl2016.predCount PottsEtAl2016.ShotQ.none_ lex w = w.numNothing
- PottsEtAl2016.predCount PottsEtAl2016.ShotQ.some_ PottsEtAl2016.Lexicon.weak w = w.numScored
- PottsEtAl2016.predCount PottsEtAl2016.ShotQ.some_ PottsEtAl2016.Lexicon.strong w = w.numScoredNotAced
Instances For
Truth value of a statement in a world under a lexicon.
Equations
- PottsEtAl2016.stmtTruth lex (PottsEtAl2016.PlayerQ.every, sq) x✝ = (PottsEtAl2016.predCount sq lex x✝ == 3)
- PottsEtAl2016.stmtTruth lex (PottsEtAl2016.PlayerQ.exactlyOne, sq) x✝ = (PottsEtAl2016.predCount sq lex x✝ == 1)
- PottsEtAl2016.stmtTruth lex (PottsEtAl2016.PlayerQ.no, sq) x✝ = (PottsEtAl2016.predCount sq lex x✝ == 0)
Instances For
Truth value of an utterance under a lexicon: stmtTruth with silence
true at every world.
Equations
Instances For
Structural properties #
The lexicon affects only "some"; "all" and "none" are unambiguous. The DE/UE asymmetry is a widening vs. narrowing fact about the strong lexicon's extension under each outer quantifier.
Lexica agree on all "all"-utterances; the lexicon only refines "some".
Lexica agree on all "none"-utterances.
DE context: strong "some" widens the set of true worlds relative to weak. Under "no player hit some of his shots":
- Weak "some": only NNN satisfies (1 world)
- Strong "some": NNN, NNA, NAA, AAA satisfy (4 worlds) Widening makes the utterance less informative under the strong lexicon.
UE context: strong "some" narrows the set of true worlds relative to weak. Under "every player hit some of his shots":
- Weak "some": SSS, SSA, SAA, AAA satisfy (4 worlds)
- Strong "some": only SSS satisfies (1 world) Narrowing makes the utterance more informative under the strong lexicon.
Literal listener L0 #
Per-lexicon literal listener via RSA.L0OfBoolMeaning: uniform on the
extension of the (lexicon-parameterised) meaning function. Every utterance has
a non-empty extension (every quantifier is true at some world, and null is
true everywhere), so the Nonempty precondition is universal.
Every (lexicon, utterance) has a non-empty extension.
Per-lexicon literal listener: uniform on the extension.
Equations
- PottsEtAl2016.L0 lex u = RSA.L0OfBoolMeaning (PottsEtAl2016.utteranceTruth lex) u ⋯
Instances For
Closed-form L0 value: ENNReal.ofReal (1 / |extension|) at true worlds,
0 otherwise. The pmf_eval_simps-friendly if-form.
Sum-over-Utterance unfolder (silence + the 9 statements), proved by
rfl. Local-tagged for pmf_eval_simps so partition sums reduce to a
concrete 10-term sum.
Extension cardinalities #
Per-(lexicon, utterance) extension sizes, decide-checked and locally tagged
for pmf_eval_simps so L0_apply reduces to concrete ofReal((c)⁻¹) values.
The local tag keeps these private paper-specific cards out of the substrate
simp set (audit hygiene rule, following GoodmanStuhlmuller2013).
Speaker normaliser Z #
S1Belief with α = 1 and unit cost has score (L0 u w)^1 · 1 = L0 u w, so the
partition function is Z lex w = ∑' u, L0 lex u w. Each value is ofReal of a
rational; the closed forms below are computed by simp +decide only [pmf_eval_simps, ...] (reducing to a sum of concrete ofReal (c⁻¹) terms)
followed by explicit ENNReal.ofReal_add folding and norm_num.
The S1Belief normaliser at (lexicon, world).
Equations
- PottsEtAl2016.Z lex w = ∑' (u : PottsEtAl2016.Utterance), (PottsEtAl2016.L0 lex u) w ^ 1 * 1
Instances For
Per-lexicon speaker S1 #
RSA.S1Belief (L0 lex) (fun _ => 1) 1 w: normalises L0 lex u w over
utterances at the fixed world w. The closed-form values are
ofReal (L0-value · Z⁻¹).
Per-lexicon speaker (α = 1, no cost).
Equations
- PottsEtAl2016.S1 lex w = RSA.S1Belief (PottsEtAl2016.L0 lex) (fun (x : PottsEtAl2016.Utterance) => 1) 1 w ⋯ ⋯
Instances For
Marginal speaker over lexica #
RSA.marginalizeKernel against the uniform Lexicon prior. Over the 2-element
Lexicon, marginalSpeaker w u = (1/2)·S1 weak w u + (1/2)·S1 strong w u.
Marginal speaker: marginalises S1 over a uniform Lexicon prior.
Equations
- PottsEtAl2016.marginalSpeaker w = RSA.marginalizeKernel (PMF.uniformOfFintype PottsEtAl2016.Lexicon) (fun (lex : PottsEtAl2016.Lexicon) (w : PottsEtAl2016.World) => PottsEtAl2016.S1 lex w) w
Instances For
Marginal speaker as the explicit (1/2, 1/2)-weighted lexicon mixture.
Marginal-speaker closed forms (per prediction cell) #
The 8 cells the predictions compare, each ofReal of a rational. DE worlds
under "no … some"; UE worlds under "every … some". Values match the LU model's
hand-computation (α = 1, uniform priors).
Pragmatic listener L1 #
PMF.posterior marginalSpeaker (uniform World) u. The marginal positivity
hypotheses are discharged via PMF.marginal_ne_zero with the target world as
witness (marginalSpeaker w u ≠ 0 for the relevant (w, u)).
Pragmatic listener: Bayesian inversion of marginalSpeaker against the
uniform world prior.
Equations
- PottsEtAl2016.L1 u h = PMF.posterior PottsEtAl2016.marginalSpeaker (PMF.uniformOfFintype PottsEtAl2016.World) u h
Instances For
Predictions: DE blocking #
"No player hit some of his shots" → NNN preferred.
Under the weak lexicon, only NNN makes the utterance true (1 world, maximally informative). Under the strong lexicon, NNN, NNA, NAA, and AAA all make it true (4 worlds, less informative). L1 marginalizes over lexica weighted by informativity, preferring the weak lexicon for this utterance. Result: NNN receives the highest posterior — the global reading.
DE blocking: NNN > NNA.
DE blocking: NNN > NAA.
DE blocking: NNN > AAA.
Predictions: UE enrichment #
"Every player hit some of his shots" → SSS preferred.
Under the strong lexicon, only SSS makes the utterance true (1 world, maximally informative). Under the weak lexicon, SSS, SSA, SAA, and AAA all make it true (4 worlds, less informative). L1 marginalizes and prefers the informative strong lexicon for this utterance. Result: SSS receives the highest posterior — the embedded implicature.
UE enrichment: SSS > SSA.
UE enrichment: SSS > SAA.
UE enrichment: SSS > AAA.
Grounding: outer quantifiers #
The outer quantifiers "every" and "no" in the [PLLF16] model agree
with the shared quantifier semantics Alternatives.Quantifiers.worldMeaning.
This grounds the stipulated utteranceTruth in the shared quantifier
infrastructure.
Compare GoodmanStuhlmuller2013's qMeaning, an independent implementation
of the same count-threshold semantics.
"Every player hit X" ↔ worldMeaning 3 .all applied to predCount.
"No player hit X" ↔ worldMeaning 3 .none_ applied to predCount.
Cross-study connections #
The [PLLF16] predictions connect to two other parts of linglib:
Geurts2010(ScalarImplicatures.Studies.Geurts2010): Notes that the minimal LU model inverts the predictions, but "the full Potts et al. model derives the correct pattern." The theorems here are the formal backing.EmbeddedSIPrediction(LexicalUncertainty.Compositional): Tracks embedded SI predictions by context type. The Potts model demonstrates the negation case: local reading dispreferred in DE (global NNN preferred).