[YTGF20] — Polite speech emerges from competing social goals #
RSA model of [YTGF20] (Open Mind 4): polite speech arises from a
speaker trading off three communicative goals — to be informative, to be
kind, and to appear informative and kind. The experimental domain: Ann
rates Bob's poem (states s₀–s₃, hearts) and chooses among eight
utterances ({terrible, bad, good, amazing} × {plain, negated}).
The model stack (the paper's Figure 4): a literal listener
P_L0(s|w) ∝ L(w,s)·P(s) over empirically elicited soft semantics; a
first-order speaker with utility
U_S1 = φ·ln P_L0(s|w) + (1−φ)·E_{P_L0}[V(s)] − c·l(w); a pragmatic
listener jointly inferring state and goal weight,
P_L1(s,φ|w) ∝ P_S1(w|s,φ)·P(s)·P(φ); and a second-order polite speaker
with U_S2 = ω_inf·ln P_L1(s|w) + ω_soc·E_{P_L1}[V(s)] + ω_pres·ln P_L1(φ̂|w) − c·l(w).
Instantiated on the canonical pipeline: the S1 speaker is
RSA.Canonical.S1 over (state × φ) speaker situations, and the pragmatic
listener is RSA.Canonical.L1, the joint posterior over
HeartState × Phi — the paper's eq. (4) by construction, with the
U_pres marginal available as .snd. The paper's L0-gate (utterances
with zero literal fit are unavailable to informativity-sensitive speakers)
is the ⊥-utility branch.
Main statements #
social_prefers_indirect/social_prefers_positive— the pure-social speaker (φ = 0) prefers indirect and positive utterances (Figure 2, S1 social facet), for every α > 0: pure expected-value comparisons.informative_prefers_direct/informative_prefers_direct_positive— the pure-informative speaker (φ = 1) prefers direct utterances (Figure 2, S1 informational facet), for every α > 0: the first is the L0-gate, the second a log-monotonicity comparison.s2Utility— the full three-goal S2 utility over the joint listener, with the Table-2 MAP weight profiles.socialGoalSubjectivityLevel— bridge to [TD02]'s intersubjectivity cline.
Implementation notes #
Lexicon provenance. softSemantics stipulates acceptance proportions
k/49 attributed to literal_semantics.csv in the paper's repository
(the paper itself prints no θ table; N = 51 recruited per the supplement).
-- UNVERIFIED: the k/49 values and the N = 49-after-exclusions claim await
verification against the CSV. Negated utterances use graded negation
⟦not φ⟧ = 1 − ⟦φ⟧ — a compositional construction of this file, not the
paper's lexicon: the paper elicits θ per utterance, including negated
forms. The φ grid discretizes the paper's continuous φ ~ Uniform(0,1) to
five points.
Findings policy. S1-level preferences are stated as theorems: they are
parameter-free (any α > 0) and robust to lexicon perturbation. The S2-level
negation preferences and the L1 state-inference orderings are numeric
facts — α-dependent and, for S2, sensitive to the third decimal of single
norming proportions — and are recorded as verified prose (§S2 below), per
the library's policy on findings whose truth depends on exact parameter
values. Notably, independent recomputation shows the paper's headline
U_S2(not terrible) > U_S2(terrible) under both-goal weights at state s₀
is TRUE at the fitted parameters (margin ≈ 0.14) — correcting the previous
version of this file, which left it sorryed with a docstring wrongly
claiming it fails under point-estimate semantics (the old reflection
tactic's interval arithmetic merely could not separate the sides).
States, utterances, goals #
World states: the true rating (number of hearts) deserved.
- h0 : HeartState
- h1 : HeartState
- h2 : HeartState
- h3 : HeartState
Instances For
Equations
- YoonEtAl2020.instDecidableEqHeartState x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
- YoonEtAl2020.instReprHeartState = { reprPrec := YoonEtAl2020.instReprHeartState.repr }
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
Equations
- One or more equations did not get rendered due to their size.
Subjective value V(s): the paper's linear state-value mapping.
Equations
Instances For
Equations
- YoonEtAl2020.instDecidableEqUtterance 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
- YoonEtAl2020.instReprUtterance = { reprPrec := YoonEtAl2020.instReprUtterance.repr }
Equations
Equations
- One or more equations did not get rendered due to their size.
Is this a negated utterance?
Equations
- YoonEtAl2020.Utterance.notTerrible.isNegated = true
- YoonEtAl2020.Utterance.notBad.isNegated = true
- YoonEtAl2020.Utterance.notGood.isNegated = true
- YoonEtAl2020.Utterance.notAmazing.isNegated = true
- x✝.isNegated = false
Instances For
Speaker goal conditions from the experiment.
- informative : GoalCondition
- kind : GoalCondition
- both : GoalCondition
Instances For
Equations
- YoonEtAl2020.instDecidableEqGoalCondition x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
- YoonEtAl2020.instReprGoalCondition = { reprPrec := YoonEtAl2020.instReprGoalCondition.repr }
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
Equations
- YoonEtAl2020.instDecidableEqPhi x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
- YoonEtAl2020.instReprPhi = { reprPrec := YoonEtAl2020.instReprPhi.repr }
Equations
- YoonEtAl2020.instReprPhi.repr YoonEtAl2020.Phi.p0 prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "YoonEtAl2020.Phi.p0")).group prec✝
- YoonEtAl2020.instReprPhi.repr YoonEtAl2020.Phi.p25 prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "YoonEtAl2020.Phi.p25")).group prec✝
- YoonEtAl2020.instReprPhi.repr YoonEtAl2020.Phi.p50 prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "YoonEtAl2020.Phi.p50")).group prec✝
- YoonEtAl2020.instReprPhi.repr YoonEtAl2020.Phi.p75 prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "YoonEtAl2020.Phi.p75")).group prec✝
- YoonEtAl2020.instReprPhi.repr YoonEtAl2020.Phi.p100 prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "YoonEtAl2020.Phi.p100")).group prec✝
Instances For
Equations
- YoonEtAl2020.instInhabitedPhi = { default := YoonEtAl2020.instInhabitedPhi.default }
Equations
- YoonEtAl2020.instFintypePhi = { elems := { val := ↑YoonEtAl2020.Phi.enumList, nodup := YoonEtAl2020.Phi.enumList_nodup }, complete := YoonEtAl2020.instFintypePhi._proof_1 }
The rational value of each φ level.
Equations
- YoonEtAl2020.Phi.p0.val = 0
- YoonEtAl2020.Phi.p25.val = 1 / 4
- YoonEtAl2020.Phi.p50.val = 1 / 2
- YoonEtAl2020.Phi.p75.val = 3 / 4
- YoonEtAl2020.Phi.p100.val = 1
Instances For
The soft lexicon #
Soft semantic acceptance proportions for the four positive adjectives.
-- UNVERIFIED: stipulated as k/49 from literal_semantics.csv in the
paper's repository; not printed in the paper.
Equations
- YoonEtAl2020.softSemantics YoonEtAl2020.Utterance.terrible YoonEtAl2020.HeartState.h0 = 1
- YoonEtAl2020.softSemantics YoonEtAl2020.Utterance.terrible YoonEtAl2020.HeartState.h1 = 26 / 49
- YoonEtAl2020.softSemantics YoonEtAl2020.Utterance.terrible YoonEtAl2020.HeartState.h2 = 0
- YoonEtAl2020.softSemantics YoonEtAl2020.Utterance.terrible YoonEtAl2020.HeartState.h3 = 1 / 49
- YoonEtAl2020.softSemantics YoonEtAl2020.Utterance.bad YoonEtAl2020.HeartState.h0 = 1
- YoonEtAl2020.softSemantics YoonEtAl2020.Utterance.bad YoonEtAl2020.HeartState.h1 = 45 / 49
- YoonEtAl2020.softSemantics YoonEtAl2020.Utterance.bad YoonEtAl2020.HeartState.h2 = 0
- YoonEtAl2020.softSemantics YoonEtAl2020.Utterance.bad YoonEtAl2020.HeartState.h3 = 0
- YoonEtAl2020.softSemantics YoonEtAl2020.Utterance.good YoonEtAl2020.HeartState.h0 = 1 / 49
- YoonEtAl2020.softSemantics YoonEtAl2020.Utterance.good YoonEtAl2020.HeartState.h1 = 2 / 49
- YoonEtAl2020.softSemantics YoonEtAl2020.Utterance.good YoonEtAl2020.HeartState.h2 = 47 / 49
- YoonEtAl2020.softSemantics YoonEtAl2020.Utterance.good YoonEtAl2020.HeartState.h3 = 1
- YoonEtAl2020.softSemantics YoonEtAl2020.Utterance.amazing YoonEtAl2020.HeartState.h0 = 1 / 49
- YoonEtAl2020.softSemantics YoonEtAl2020.Utterance.amazing YoonEtAl2020.HeartState.h1 = 1 / 49
- YoonEtAl2020.softSemantics YoonEtAl2020.Utterance.amazing YoonEtAl2020.HeartState.h2 = 7 / 49
- YoonEtAl2020.softSemantics YoonEtAl2020.Utterance.amazing YoonEtAl2020.HeartState.h3 = 47 / 49
- YoonEtAl2020.softSemantics x✝¹ x✝ = 0
Instances For
Utterance semantics: positive forms from the norming data; negated
forms by graded negation ⟦not φ⟧ = 1 − ⟦φ⟧. This construction is the
formaliser's, not the paper's: the paper elicits per-utterance θ for all
eight utterances; the derived profiles are qualitatively compatible with
the paper's description of "not terrible" but are not its lexicon.
Equations
- YoonEtAl2020.meaning YoonEtAl2020.Utterance.notTerrible x✝ = 1 - YoonEtAl2020.softSemantics YoonEtAl2020.Utterance.terrible x✝
- YoonEtAl2020.meaning YoonEtAl2020.Utterance.notBad x✝ = 1 - YoonEtAl2020.softSemantics YoonEtAl2020.Utterance.bad x✝
- YoonEtAl2020.meaning YoonEtAl2020.Utterance.notGood x✝ = 1 - YoonEtAl2020.softSemantics YoonEtAl2020.Utterance.good x✝
- YoonEtAl2020.meaning YoonEtAl2020.Utterance.notAmazing x✝ = 1 - YoonEtAl2020.softSemantics YoonEtAl2020.Utterance.amazing x✝
- YoonEtAl2020.meaning x✝¹ x✝ = YoonEtAl2020.softSemantics x✝¹ x✝
Instances For
The lexicon is soft: values in [0, 1].
Utterance cost: length in words ("It was X" = 3, "It wasn't X" = 4); only the difference matters in comparisons.
Equations
Instances For
The literal listener in closed form #
With a uniform state prior, P_L0(s|w) = meaning w s / Σ_s' meaning w s'.
The closed rational forms below feed the speaker utility exactly.
The lexicon mass of an utterance (the L0 partition function).
Equations
- YoonEtAl2020.semMass u = ∑ s : YoonEtAl2020.HeartState, YoonEtAl2020.meaning u s
Instances For
P_L0(s|u) in closed rational form (uniform state prior cancels).
Equations
- YoonEtAl2020.l0Val u s = YoonEtAl2020.meaning u s / YoonEtAl2020.semMass u
Instances For
E_{P_L0(·|u)}[V(s)]: the social value of u to the literal listener.
Equations
- YoonEtAl2020.ev u = ∑ s : YoonEtAl2020.HeartState, YoonEtAl2020.l0Val u s * YoonEtAl2020.subjectiveValue s
Instances For
The S1 speaker on the canonical pipeline #
S1 utility (the paper's
U_S1 = φ·ln P_L0(s|w) + (1−φ)·E_{P_L0}[V] − c·l(w), c = 1), as an
EReal score over speaker situations (s, φ). The ⊥ branch is the
paper's L0-gate: an utterance with zero literal fit is unavailable to any
informativity-sensitive speaker (φ ≠ 0); for the pure-social speaker the
φ-weighted log term vanishes, so the gate does not apply.
Equations
- One or more equations did not get rendered due to their size.
Instances For
S1 findings (Figure 2, S1 facets) — structural, every α > 0 #
The pure-social speaker prefers indirect speech at the worst state:
"it wasn't terrible" beats "it was terrible" (Figure 2, S1 social facet).
A pure expected-value comparison: the social gain E[V] of the indirect
form (53/24 vs 29/76) exceeds its one-word extra cost.
The pure-social speaker prefers positive utterances: "it was amazing" beats "it wasn't amazing" (same cost direction reversed: here the positive form is both kinder and cheaper).
The pure-informative speaker prefers direct speech at the worst state: "it wasn't terrible" is literally false at zero hearts (graded meaning 0), so the L0-gate excludes it for any informativity-sensitive speaker.
Even slight informativity (φ = 1/4) suffices to exclude the literally false indirect form — a gate fact about the discretized model, not a claim of the paper's.
The pure-informative speaker prefers the direct positive at the
best state: "amazing" beats "not amazing" at three hearts — a genuine
log-monotonicity comparison (P_L0(s₃|amazing) = 47/56 > 1/70 = P_L0(s₃|not amazing)), with cost also favouring the direct form.
The pragmatic listener: the joint (state, goal) posterior #
Uniform joint prior over state × φ (the paper's uniform P(s) and
uniform P(φ), discretized).
Equations
- YoonEtAl2020.prior = PMF.uniformOfFintype (YoonEtAl2020.HeartState × YoonEtAl2020.Phi)
Instances For
Every utterance is literally compatible with some state, so every utterance has positive marginal probability.
The pragmatic listener (the paper's eq. (4)): the joint Bayesian
posterior over (state, φ) given the utterance. The state marginal
(.fst) is P_L1(s|w); the φ marginal (.snd) is P_L1(φ|w), the
quantity inside the paper's presentational utility (eq. (3)).
Equations
Instances For
L1 state inferences (prose) #
The previous version of this file proved eight L1 state-inference
orderings (e.g. P_L1(s₀|terrible) > P_L1(s₃|terrible): 0.686 vs 0.0003)
by interval-arithmetic reflection. They are numeric facts about
φ-marginalised sums of exponentials; independent recomputation confirms
all eight at α = 3, seven robust over α ∈ [0.01, 100] and one
(P_L1(s₁|bad) > P_L1(s₀|bad), 0.610 vs 0.390) reversing below α ≈ 1.19.
Per the parameter-dependence policy they are recorded here as prose.
The S2 polite speaker #
Both-goal condition (Table 2: ω = (0.36, 0.11, 0.54), φ = 0.36).
Equations
- YoonEtAl2020.bothWeights = { wInf := 36 / 100, wSoc := 11 / 100, wPres := 54 / 100, phiHat := YoonEtAl2020.Phi.p25 }
Instances For
Informative condition (Table 2: ω = (0.36, 0.02, 0.62), φ = 0.49).
Equations
- YoonEtAl2020.informativeWeights = { wInf := 36 / 100, wSoc := 2 / 100, wPres := 62 / 100, phiHat := YoonEtAl2020.Phi.p50 }
Instances For
Kind condition (Table 2's "social" row: ω = (0.25, 0.31, 0.44), φ = 0.37).
Equations
- YoonEtAl2020.kindWeights = { wInf := 25 / 100, wSoc := 31 / 100, wPres := 44 / 100, phiHat := YoonEtAl2020.Phi.p25 }
Instances For
The S2 utility (the paper's eq. (2) with eq. (3)):
ω_inf·ln P_L1(s|w) + ω_soc·E_{P_L1(s|w)}[V] + ω_pres·ln P_L1(φ̂|w) − c·l(w),
over the joint listener's marginals. The cost sits inside the utility (and
hence inside S2's α-scaling), as in the paper's Figure 4 — correcting the
previous version, which moved it outside as an utterance prior.
Equations
- One or more equations did not get rendered due to their size.
Instances For
S2 findings (prose, independently recomputed) #
At the fitted parameters (α ≈ 4.47, c ≈ 2.64 — both attributed to the
paper's supplement/repository and -- UNVERIFIED from the PDF, which states
only the priors α ~ Uniform(0,20), c ~ Uniform(1,10)), with cost
α-scaled as above:
- informative:
U_S2(terrible) > U_S2(not terrible)at s₀ (−1.13 > −2.62) — projecting honesty favours direct negative utterances (the paper's §Model Predictions); robust across the α-scan. - kind:
U_S2(not terrible) > U_S2(terrible)at s₀ (−1.84 > −2.32); holds for α ≳ 2.18. - both (the paper's headline, Figure 6):
U_S2(not terrible) > U_S2(terrible)at s₀ (−2.72 > −2.86, margin ≈ 0.14, confirmed at 50-digit precision); holds for α ≳ 3.84. The previous version of this filesorryed this statement with a docstring claiming it fails under point-estimate semantics — that claim was false: the reflection tactic's interval arithmetic merely could not separate the sides.
Sensitivity (the reason these are prose, not theorems): both negation
preferences flip if the single norming proportion softSemantics .amazing .h0 = 1/49 ≈ 0.020 drops to ≈ 0.01 — they hinge on one participant's
judgment in the norming task — and are α-dependent, unlike the S1
theorems above. The model-comparison content (Table 1: the full
informational + social + presentational model beats all ablations, log BF
≥ 11) is Bayesian-fit material outside the formalisation's scope.
Bridge to the subjectivity cline #
The politeness model instantiates [TD02]'s intersubjectivity: for φ < 1 the speaker trades informativity for attention to the addressee's face, and S2 additionally manages how kind they appear — doubly intersubjective. [Nar10] connects this to modality: strong obligation is face-threatening because it is performative and volitive.