Compositional Lexical Uncertainty for Embedded Implicatures #
Architecture #
This extends lexical uncertainty to handle compositional utterances. Instead of refining whole-utterance meanings, we refine atomic lexical items and then compose meanings via Boolean connectives.
Innovation (@cite{bergen-levy-goodman-2016}, Section 5) #
For compositional LU:
- Atomic utterances have refinable meanings in the lexicon
- Complex utterances are composed via ∨, ∧, ¬
- Refinement operates BEFORE composition
This derives non-convex disjunctive implicatures:
- "one or three" → exactly 1 or exactly 3 (not 2)
- "warm or scalding" → warm-not-hot or scalding (not hot)
Hurford-Violating Disjunctions #
When one disjunct entails the other (e.g., "some or all"), standard semantics predicts no difference from the weaker disjunct. But:
- "some" → not all (scalar implicature)
- "some or all" → speaker ignorant (no scalar implicature)
Compositional LU derives this by tracking which refinements are available.
Relationship to RSAConfig and PottsEtAl2016 #
The CompLUScenario type is conceptually subsumed by RSAConfig with
Latent := Lexicon. The @cite{potts-etal-2016} study uses this standard
mechanism to derive embedded SI predictions (DE blocking, UE enrichment)
without the compositional utterance infrastructure here.
This file is retained for:
CompUtt: Compositional utterance structure (atom, disj, conj, neg)AtomicLexicon: Refinable lexica operating at the atomic levelviolatesHurford: Hurford constraint checker for disjunctionsEmbeddedSIPrediction: Structured tracking of embedded SI predictions (the @cite{potts-etal-2016} model demonstrates the negation case)
Compositional utterances built from atomic items and Boolean connectives.
This represents the syntactic structure that feeds into compositional semantics.
- atom
{Atom : Type}
: Atom → CompUtt Atom
Atomic utterance (lexical item)
- disj
{Atom : Type}
: CompUtt Atom → CompUtt Atom → CompUtt Atom
Disjunction
- conj
{Atom : Type}
: CompUtt Atom → CompUtt Atom → CompUtt Atom
Conjunction
- neg
{Atom : Type}
: CompUtt Atom → CompUtt Atom
Negation
Instances For
Equations
- instBEqCompUtt = { beq := instBEqCompUtt.beq }
Equations
- instBEqCompUtt.beq (CompUtt.atom a) (CompUtt.atom b) = (a == b)
- instBEqCompUtt.beq (a ∨ᵤ a_1) (b ∨ᵤ b_1) = (instBEqCompUtt.beq a b && instBEqCompUtt.beq a_1 b_1)
- instBEqCompUtt.beq (a ∧ᵤ a_1) (b ∧ᵤ b_1) = (instBEqCompUtt.beq a b && instBEqCompUtt.beq a_1 b_1)
- instBEqCompUtt.beq (¬ᵤa) (¬ᵤb) = instBEqCompUtt.beq a b
- instBEqCompUtt.beq x✝¹ x✝ = false
Instances For
Infix notation for disjunction
Equations
- CompUtt.«term_∨ᵤ_» = Lean.ParserDescr.trailingNode `CompUtt.«term_∨ᵤ_» 65 65 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ∨ᵤ ") (Lean.ParserDescr.cat `term 66))
Instances For
Infix notation for conjunction
Equations
- CompUtt.«term_∧ᵤ_» = Lean.ParserDescr.trailingNode `CompUtt.«term_∧ᵤ_» 70 70 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ∧ᵤ ") (Lean.ParserDescr.cat `term 71))
Instances For
Prefix notation for negation
Equations
- CompUtt.«term¬ᵤ_» = Lean.ParserDescr.node `CompUtt.«term¬ᵤ_» 75 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol "¬ᵤ") (Lean.ParserDescr.cat `term 75))
Instances For
Count the complexity (number of connectives)
Equations
- (CompUtt.atom a).complexity = 0
- (u₁ ∨ᵤ u₂).complexity = 1 + u₁.complexity + u₂.complexity
- (u₁ ∧ᵤ u₂).complexity = 1 + u₁.complexity + u₂.complexity
- (¬ᵤu).complexity = 1 + u.complexity
Instances For
An atomic lexicon maps atomic utterances to Boolean meanings.
This is the refinable part of the lexicon.
- meaning : Atom → World → Bool
Meaning of each atomic item
Instances For
Compose meanings of complex utterances from atomic meanings
Equations
Instances For
Compositional Lexical Uncertainty Scenario.
Extends LU to handle compositional utterances where:
- Atomic items have refinable meanings
- Complex meanings are composed via Boolean connectives
- Atom : Type
Type of atomic utterances
- World : Type
Type of possible worlds
- baseLexicon : AtomicLexicon self.Atom self.World
Base atomic lexicon (unrefined meanings)
- lexica : List (AtomicLexicon self.Atom self.World)
Set of possible refined atomic lexica
- lexPrior : AtomicLexicon self.Atom self.World → ℚ
Prior over lexica
Prior over worlds
Set of available (complex) utterances
Enumeration of worlds
- α : ℕ
Rationality parameter
Instances For
Worlds for a 3-point scale (one, two, three).
- one : ThreePointWorld
- two : ThreePointWorld
- three : ThreePointWorld
Instances For
Equations
- instReprThreePointWorld.repr ThreePointWorld.one prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "ThreePointWorld.one")).group prec✝
- instReprThreePointWorld.repr ThreePointWorld.two prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "ThreePointWorld.two")).group prec✝
- instReprThreePointWorld.repr ThreePointWorld.three prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "ThreePointWorld.three")).group prec✝
Instances For
Equations
- instReprThreePointWorld = { reprPrec := instReprThreePointWorld.repr }
Equations
Equations
- instBEqThreePointWorld.beq x✝ y✝ = (x✝.ctorIdx == y✝.ctorIdx)
Instances For
Atomic utterances for numerals.
- one_ : NumeralAtom
- two_ : NumeralAtom
- three_ : NumeralAtom
Instances For
Equations
- instReprNumeralAtom = { reprPrec := instReprNumeralAtom.repr }
Equations
- instReprNumeralAtom.repr NumeralAtom.one_ prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "NumeralAtom.one_")).group prec✝
- instReprNumeralAtom.repr NumeralAtom.two_ prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "NumeralAtom.two_")).group prec✝
- instReprNumeralAtom.repr NumeralAtom.three_ prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "NumeralAtom.three_")).group prec✝
Instances For
Equations
- instBEqNumeralAtom.beq x✝ y✝ = (x✝.ctorIdx == y✝.ctorIdx)
Instances For
Equations
- instBEqNumeralAtom = { beq := instBEqNumeralAtom.beq }
Base semantics for numerals: lower-bound (at-least) reading.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Generate all valid refinements of the numeral lexicon.
For "one": can refine to {1}, {2}, {3}, {1,2}, {1,3}, {2,3}, {1,2,3} For "two": can refine to {2}, {3}, {2,3} For "three": only {3} (already maximally specific)
Equations
- One or more equations did not get rendered due to their size.
Instances For
Build scenario for non-convex disjunction implicatures.
Compares "one or two" vs "one or three".
Equations
- One or more equations did not get rendered due to their size.
Instances For
Hurford's constraint: a disjunction is odd if one disjunct entails the other.
"#Some or all of the students passed" violates Hurford because "all" ⊆ "some". But such sentences ARE felicitous and have ignorance implicatures!
Equations
- violatesHurford S (u₁ ∨ᵤ u₂) = (entails S u₁ u₂ || entails S u₂ u₁)
- violatesHurford S x✝ = false
Instances For
Structure for tracking embedded implicature predictions.
This connects to Potts et al.'s "An experimental investigation of embedded scalar implicatures".
- context : String
The embedding context (e.g., negation, conditional)
- scalarItem : String
The scalar item
- localAvailable : Bool
Whether local (embedded) reading is available
- globalAvailable : Bool
Whether global reading is available
Predicted preference (local vs global)
Instances For
Equations
- instReprEmbeddedSIPrediction = { reprPrec := instReprEmbeddedSIPrediction.repr }
Equations
- One or more equations did not get rendered due to their size.
Instances For
Compositional LU predictions for various embedding contexts.
Key prediction: Local readings are available when the asymmetry in lexical refinements makes them pragmatically useful.
Equations
- One or more equations did not get rendered due to their size.