Hawkins, Tsvilodub, Bergey, Goodman and Franke (2025): Relevant answers to polar questions #
This file formalizes the PRIOR-PQ model of [HTB+25], a Rational Speech Act model
of question answering grounded in the questioner's decision problem. The base-level
respondent R0 answers with any true and safe response (2.1), where a response is safe for
a question when a questioner who knew it would know the answer (Safe, with the
belief-state characterization safe_iff_forall_settles). The questioner questioner
soft-maximizes the expected value of the decision problem updated by the base respondent's
answer less its cost (2.3), with the Bayesian update (2.4) as the posterior of the
observation model R0Model and the policy value of (2.2) as value;
questionScore_eq_eig identifies the score with [Lin56]'s expected information gain
of the question as an experiment. The pragmatic respondent respondent infers the
questioner's decision problem from the question (respondentPosterior,
respondentPosterior_lt_iff: a question is a signal about the goal) and soft-maximizes a
mixture of informativity and action relevance less cost (2.5); respondentScore_beta_one
and respondentScore_beta_zero are its two pure ends. posterior_lt_iff_card is the size
principle of §2b: a response is strengthened towards the worlds with fewer true and safe
alternatives.
Case study 1 (§3a) instantiates the model on the credit cards: polar_exhaustive_safe and
mention_safe_iff classify the responses, yes_value_eq_exhaustive is the reason the
exhaustive list is dispreferred after a question about a card the questioner holds (3), and
generalYes_posterior_pos the residual uncertainty after the general question (5).
Implementation notes #
- Softmaxes are
Core.RationalAction.fromSoftmax; beliefs are functionsW → ℝ, as inProbabilityTheory.ObservationModel, and the Kullback–Leibler term of (2.5) is the finite sumklin the direction the paper writes it. - Both the safe base respondent of (2.1) and its truth-only relaxation
R0'of §2c areRationalActions; the observation model needs every world to admit a true and safe response, whichpolar_admissiblesupplies for polar questions. - The case study fixes the parameters the paper leaves free only where a theorem needs a sign; the fitted values of the electronic supplementary material are not reproduced.
TODO #
- Case studies 2 and 3 (the iced tea and blanket vignettes) with the elicited utilities.
References #
Safe answers (§2a) #
A belief state settles a proposition when it entails it or its negation.
Equations
- HawkinsEtAl2025.Settles s p = (s ⊆ {w : W | p w} ∨ s ⊆ {w : W | ¬p w})
Instances For
A response r is safe for the polar question q (§2a): a questioner who knew r would
know the answer to q, so r entails one of the complete answers.
Equations
- HawkinsEtAl2025.Safe q r = ((∀ (w : W), r w → q w) ∨ ∀ (w : W), r w → ¬q w)
Instances For
The model #
A PRIOR-PQ model: the propositions questions and responses denote, the questioner's decision problems, and the cost of responses.
- question : Q → W → Prop
The proposition a polar question asks about.
- response : R → W → Prop
The proposition a response asserts.
- utility : D → W → A → ℝ
The utility function of a decision problem.
- prior : D → W → ℝ
The questioner's prior over worlds under a decision problem.
- cost : R → ℝ
The production cost of a response.
Instances For
A response is admissible at a world and question when it is true there and safe.
Equations
- m.Admissible w q r = (m.response r w ∧ HawkinsEtAl2025.Safe (m.question q) (m.response r))
Instances For
Equations
(2.1): the base-level respondent, uniform over the true and safe responses.
Equations
- m.R0 = { score := fun (wq : W × Q) (r : R) => if m.Admissible wq.1 wq.2 r then 1 else 0, score_nonneg := ⋯ }
Instances For
§2c: the truth-only relaxation of the base respondent, uniform over the true responses.
Equations
Instances For
The number of true and safe responses at a world and question.
Equations
- m.admissibleCard w q = (Finset.filter (m.Admissible w q) Finset.univ).card
Instances For
The base respondent gives a response positive probability iff it is true and safe.
The base respondent as an observation model, with questions as experiments and responses as observations, given that every world admits a true and safe response.
Equations
Instances For
The truth-only base respondent as an observation model, given that every world makes some response true.
Equations
Instances For
The marginal of a response is positive when some world of positive prior admits it.
Under positive priors a world has positive posterior after a response iff the response is true and safe there.
The size principle (§2b): between two worlds of equal prior at which a response is true and safe, the posterior favours the world with fewer true and safe alternatives.
The questioner (§2b) #
(2.2): the policy of a decision problem under beliefs π, a softmax over expected
utility with rationality αℵ.
Equations
- HawkinsEtAl2025.policy U αℵ π = Real.softmax fun (a : A) => αℵ * ∑ w : W, π w * U w a
Instances For
The value V(D) of a decision problem: the expected utility of following its policy.
Equations
- HawkinsEtAl2025.value U αℵ π = ∑ a : A, HawkinsEtAl2025.policy U αℵ π a * ∑ w : W, π w * U w a
Instances For
Beliefs whose support sees a constant utility profile have that profile as expected utility.
Two beliefs seeing the same constant utility profile have the same value.
The expected value to the questioner of asking q (2.3): the expected value of the
updated decision problem after the base respondent's answer, less the weighted cost.
Equations
- m.questionScore om αℵ wc d q = ∑ r : R, om.marginal (m.prior d) q r * (HawkinsEtAl2025.value (m.utility d) αℵ (om.posterior (m.prior d) q r) - wc * m.cost r)
Instances For
The question score is [Lin56]'s expected information gain of the question under the policy value, plus the value of the prior, less the expected cost.
(2.3): the questioner, a softmax over question scores with rationality αQ.
Equations
- m.questioner om αℵ wc αQ = Core.RationalAction.fromSoftmax (m.questionScore om αℵ wc) αQ
Instances For
The pragmatic respondent (§2c) #
The respondent's posterior over decision problems after hearing q: Bayesian theory of
mind through the questioner, π(D ∣ q) ∝ Q(q ∣ D) π(D).
Equations
- One or more equations did not get rendered due to their size.
Instances For
A question is a signal about the goal: with equal priors, the decision problem under which the question was the more probable is the more probable after it.
The finite Kullback–Leibler divergence of beliefs, in the direction of (2.5).
Equations
- HawkinsEtAl2025.kl p q = ∑ w : W, p w * Real.log (p w / q w)
Instances For
The utility of a response under one decision problem (2.5): informativity weighted
1 − β, action relevance weighted β, less the weighted cost.
Equations
- One or more equations did not get rendered due to their size.
Instances For
(2.5): the pragmatic respondent's score, the expected utility of a response over the inferred decision problem.
Equations
- m.respondentScore om om' αℵ wc αQ β πD πW q r = ∑ d : D, m.respondentPosterior om αℵ wc αQ πD q d * m.singleScore om om' αℵ wc β πW d q r
Instances For
(2.5): the pragmatic respondent, a softmax over response scores with rationality αR.
Equations
- m.respondent om om' αℵ wc αQ β αR πD πW = Core.RationalAction.fromSoftmax (m.respondentScore om om' αℵ wc αQ β πD πW) αR
Instances For
At β = 1 the respondent weighs only action relevance and cost.
At β = 0 the respondent weighs only informativity and cost.
Case study 1: credit cards (§3a) #
Equations
- HawkinsEtAl2025.instDecidableEqCard x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
- HawkinsEtAl2025.instFintypeCard = { elems := { val := ↑HawkinsEtAl2025.Card.enumList, nodup := HawkinsEtAl2025.Card.enumList_nodup }, complete := HawkinsEtAl2025.instFintypeCard._proof_1 }
Equations
- One or more equations did not get rendered due to their size.
- HawkinsEtAl2025.instReprCard.repr HawkinsEtAl2025.Card.amex prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "HawkinsEtAl2025.Card.amex")).group prec✝
Instances For
Equations
- HawkinsEtAl2025.instReprCard = { reprPrec := HawkinsEtAl2025.instReprCard.repr }
Equations
- HawkinsEtAl2025.instDecidableEqAct x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
- HawkinsEtAl2025.instFintypeAct = { elems := { val := ↑HawkinsEtAl2025.Act.enumList, nodup := HawkinsEtAl2025.Act.enumList_nodup }, complete := HawkinsEtAl2025.instFintypeAct._proof_1 }
Equations
- HawkinsEtAl2025.instReprAct = { reprPrec := HawkinsEtAl2025.instReprAct.repr }
Equations
- HawkinsEtAl2025.instReprAct.repr HawkinsEtAl2025.Act.stay prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "HawkinsEtAl2025.Act.stay")).group prec✝
- HawkinsEtAl2025.instReprAct.repr HawkinsEtAl2025.Act.go prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "HawkinsEtAl2025.Act.go")).group prec✝
Instances For
Equations
- HawkinsEtAl2025.instInhabitedAct = { default := HawkinsEtAl2025.instInhabitedAct.default }
Equations
- One or more equations did not get rendered due to their size.
- HawkinsEtAl2025.instDecidableEqResp.decEq (HawkinsEtAl2025.Resp.polar S b) (HawkinsEtAl2025.Resp.mention T) = isFalse ⋯
- HawkinsEtAl2025.instDecidableEqResp.decEq (HawkinsEtAl2025.Resp.polar S b) (HawkinsEtAl2025.Resp.exhaustive T) = isFalse ⋯
- HawkinsEtAl2025.instDecidableEqResp.decEq (HawkinsEtAl2025.Resp.mention T) (HawkinsEtAl2025.Resp.polar S b) = isFalse ⋯
- HawkinsEtAl2025.instDecidableEqResp.decEq (HawkinsEtAl2025.Resp.mention a) (HawkinsEtAl2025.Resp.mention b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- HawkinsEtAl2025.instDecidableEqResp.decEq (HawkinsEtAl2025.Resp.mention T) (HawkinsEtAl2025.Resp.exhaustive T_1) = isFalse ⋯
- HawkinsEtAl2025.instDecidableEqResp.decEq (HawkinsEtAl2025.Resp.exhaustive T) (HawkinsEtAl2025.Resp.polar S b) = isFalse ⋯
- HawkinsEtAl2025.instDecidableEqResp.decEq (HawkinsEtAl2025.Resp.exhaustive T) (HawkinsEtAl2025.Resp.mention T_1) = isFalse ⋯
- HawkinsEtAl2025.instDecidableEqResp.decEq (HawkinsEtAl2025.Resp.exhaustive a) (HawkinsEtAl2025.Resp.exhaustive b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
Instances For
Equations
- HawkinsEtAl2025.instFintypeResp = Fintype.ofEquiv ((_ : Finset HawkinsEtAl2025.Card) × Bool ⊕ Finset HawkinsEtAl2025.Card ⊕ Finset HawkinsEtAl2025.Card) HawkinsEtAl2025.Resp.proxyTypeEquiv
Equations
- HawkinsEtAl2025.instDecidableEqGoal.decEq (HawkinsEtAl2025.Goal.ownCards a) (HawkinsEtAl2025.Goal.ownCards b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- HawkinsEtAl2025.instDecidableEqGoal.decEq (HawkinsEtAl2025.Goal.ownCards C) HawkinsEtAl2025.Goal.anyCard = isFalse ⋯
- HawkinsEtAl2025.instDecidableEqGoal.decEq HawkinsEtAl2025.Goal.anyCard (HawkinsEtAl2025.Goal.ownCards C) = isFalse ⋯
- HawkinsEtAl2025.instDecidableEqGoal.decEq HawkinsEtAl2025.Goal.anyCard HawkinsEtAl2025.Goal.anyCard = isTrue ⋯
Instances For
Equations
- HawkinsEtAl2025.instFintypeGoal = Fintype.ofEquiv (Finset HawkinsEtAl2025.Card ⊕ Unit) HawkinsEtAl2025.Goal.proxyTypeEquiv
The utility of §3a: 5 for going when a relevant card is accepted or staying when none is, 0 otherwise.
Equations
- HawkinsEtAl2025.cardUtility (HawkinsEtAl2025.Goal.ownCards C) x✝ HawkinsEtAl2025.Act.go = if (C ∩ x✝).Nonempty then 5 else 0
- HawkinsEtAl2025.cardUtility (HawkinsEtAl2025.Goal.ownCards C) x✝ HawkinsEtAl2025.Act.stay = if (C ∩ x✝).Nonempty then 0 else 5
- HawkinsEtAl2025.cardUtility HawkinsEtAl2025.Goal.anyCard x✝ HawkinsEtAl2025.Act.go = if x✝.Nonempty then 5 else 0
- HawkinsEtAl2025.cardUtility HawkinsEtAl2025.Goal.anyCard x✝ HawkinsEtAl2025.Act.stay = if x✝.Nonempty then 0 else 5
Instances For
The proposition a response asserts.
Equations
- HawkinsEtAl2025.respProp (HawkinsEtAl2025.Resp.polar S b) x✝ = ((S ∩ x✝).Nonempty ↔ b = true)
- HawkinsEtAl2025.respProp (HawkinsEtAl2025.Resp.mention T) x✝ = (T ⊆ x✝)
- HawkinsEtAl2025.respProp (HawkinsEtAl2025.Resp.exhaustive T) x✝ = (T = x✝)
Instances For
Equations
- HawkinsEtAl2025.instDecidablePredFinsetCardRespProp (HawkinsEtAl2025.Resp.polar S b) x✝ = HawkinsEtAl2025.instDecidablePredFinsetCardRespProp._aux_1 S b x✝
- HawkinsEtAl2025.instDecidablePredFinsetCardRespProp (HawkinsEtAl2025.Resp.mention T) x✝ = HawkinsEtAl2025.instDecidablePredFinsetCardRespProp._aux_3 T x✝
- HawkinsEtAl2025.instDecidablePredFinsetCardRespProp (HawkinsEtAl2025.Resp.exhaustive T) x✝ = HawkinsEtAl2025.instDecidablePredFinsetCardRespProp._aux_5 T x✝
The credit-card model: a question asks whether any card of a set is accepted, worlds are the sets of accepted cards, priors are uniform over the eight worlds, and a response costs the cards it mentions.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Polar answers to the question asked are safe, as are exhaustive lists.
Mentioning accepted cards is safe for a question exactly when one of them was asked about: in (2), naming a third card after a question about two others is not.
Every world admits a true and safe response to every question: the true polar answer.
The base respondent as an observation model for the credit cards.
Equations
Instances For
(3): for a questioner holding the card asked about, after the answer "yes" the value of the decision problem already equals its value after the exhaustive list, since every world compatible with either answer accepts a card the questioner holds; only the cost separates the two answers.
(5): after "yes" to the general question, a world accepting only MasterCard keeps positive posterior, so a questioner holding American Express remains uncertain; after "yes" to the question about American Express it does not.