Lexical Uncertainty Extension to RSA #
Architecture #
Lexical uncertainty posits that speakers and listeners have uncertainty about the semantic content of utterances. Rather than a fixed lexicon, there is a set of possible lexica Λ, and pragmatic inference involves reasoning about which lexicon is in use.
Innovation #
The marginalization over lexica happens at L₁, not L₀:
- L₀ is still parameterized by a specific lexicon L
- S₁ believes L₀ uses lexicon L (and is certain about it)
- L₁ is uncertain which lexicon S₁/L₀ are using, and marginalizes
What This Derives #
- M-implicatures: Complex expressions → marked (low-probability) interpretations
- Ignorance implicatures: "some or all" → speaker doesn't know which
- Non-convex disjunctive implicatures: "one or three" ≠ "one or two"
Relationship to RSAConfig #
The LUScenario type below is conceptually subsumed by RSAConfig with
Latent := Lexicon. The @cite{potts-etal-2016} study demonstrates this:
it uses standard RSAConfig with Latent := Lexicon (weak vs strong "some")
and derives DE blocking and UE enrichment without any LU-specific infrastructure.
This file is retained for:
- The
Lexicontype andRefinementinfrastructure - The
LUScenariostructure as a reference for the LU architecture - The
symmetry_breaking_possibleconjecture (which could now be discharged using the @cite{potts-etal-2016} model as a concrete witness viaRSAConfig)
A lexicon maps each utterance to a truth function over worlds.
In @cite{bergen-levy-goodman-2016} notation: L(u, w) = 1 if w ∈ ⟦u⟧_L, else 0
For graded semantics, we allow values in [0,1].
- meaning : Utterance → World → ℚ
The meaning function for this lexicon
Instances For
Notation: L' ≤ₗ L means L' refines (is more specific than) L
Equations
- Lexicon.«term_≤ₗ_» = Lean.ParserDescr.trailingNode `Lexicon.«term_≤ₗ_» 50 0 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ≤ₗ ") (Lean.ParserDescr.cat `term 0))
Instances For
Lexical Uncertainty RSA Scenario.
Extends the basic RSA setup with:
- A set of possible lexica Λ
- A prior distribution over lexica
The semantic content of utterances is not fixed; rather, pragmatic inference jointly determines both the interpretation AND the lexicon.
- Utterance : Type
Type of utterances
- World : Type
Type of possible worlds
Base semantic lexicon (unrefined meanings)
Set of possible refined lexica
Prior over lexica (default: uniform)
Prior over worlds
Enumeration of utterances
Enumeration of worlds
- α : ℕ
Rationality parameter. Higher values = more informative speaker.
- nullCost : ℚ
Null utterance cost (high, to discourage)
- worldDecEq : DecidableEq self.World
Instances For
A refinement of a truth function: a subset of worlds where it's true.
Given base meaning M : W → Bool, a valid refinement M' satisfies: ∀ w, M(w) = false → M'(w) = false
That is, M' can only narrow down the set of true worlds, not expand it.
- meaning : W → Bool
The refined meaning as a subset indicator
Instances For
Check if one meaning refines another (is more specific).
M' refines M iff M' ⊆ M (as sets of worlds).
Instances For
Generate all valid refinements of a Boolean meaning over finite worlds.
For a base meaning true at n worlds, there are 2ⁿ - 1 valid non-trivial refinements (excluding the empty refinement which would be contradictory).
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- instReprObsState = { reprPrec := instReprObsState.repr }
Equations
- instReprObsState.repr ObsState.knowAll prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "ObsState.knowAll")).group prec✝
- instReprObsState.repr ObsState.knowSomeNot prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "ObsState.knowSomeNot")).group prec✝
- instReprObsState.repr ObsState.ignorant prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "ObsState.ignorant")).group prec✝
Instances For
Equations
- instBEqObsState = { beq := instBEqObsState.beq }
Equations
- instBEqObsState.beq x✝ y✝ = (x✝.ctorIdx == y✝.ctorIdx)
Instances For
Equations
- instReprScalarWorld.repr ScalarWorld.all prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "ScalarWorld.all")).group prec✝
- instReprScalarWorld.repr ScalarWorld.someNot prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "ScalarWorld.someNot")).group prec✝
Instances For
Equations
- instReprScalarWorld = { reprPrec := instReprScalarWorld.repr }
Equations
- instBEqScalarWorld = { beq := instBEqScalarWorld.beq }
Equations
- instBEqScalarWorld.beq x✝ y✝ = (x✝.ctorIdx == y✝.ctorIdx)
Instances For
Utterances for some-or-all ignorance implicatures.
- all_ : SomeOrAllUtt
- some_ : SomeOrAllUtt
- someOrAll : SomeOrAllUtt
Instances For
Equations
- instReprSomeOrAllUtt = { reprPrec := instReprSomeOrAllUtt.repr }
Equations
- instReprSomeOrAllUtt.repr SomeOrAllUtt.all_ prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "SomeOrAllUtt.all_")).group prec✝
- instReprSomeOrAllUtt.repr SomeOrAllUtt.some_ prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "SomeOrAllUtt.some_")).group prec✝
- instReprSomeOrAllUtt.repr SomeOrAllUtt.someOrAll prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "SomeOrAllUtt.someOrAll")).group prec✝
Instances For
Equations
Equations
- instBEqSomeOrAllUtt.beq x✝ y✝ = (x✝.ctorIdx == y✝.ctorIdx)
Instances For
Symmetry breaking: semantically equivalent utterances can get different interpretations.
This is the key property that enables M-implicatures.