Decision problems and the value of information #
Finite decision problems over an arbitrary LinearOrdered Field K and
[vR03a]'s decision-theoretic values of propositions and questions:
expected utility, utility value UV, question utility EUV, value of sample
information VSI/EVSI, and the maximin analogues. Theory-neutral: no
question-semantic imports, so any module (RSA, causal decision theory,
explanation models) can use decision problems without pulling in the
Question cone.
Main definitions #
DecisionProblem: a utility functionW → A → Kwith a priorW → K. The structure itself is constraint-free; theorems assume[Field K] [LinearOrder K] [IsStrictOrderedRing K]. Studies instantiateK := ℚfor exact,decide-friendly arithmetic;Core.Probability.Decision.ExperimentDesignusesK := ℝagainsteig.DecisionProblem.expectedUtility,.value,.condExpectedUtility,.condValue,.utilityValue:EU(a),V(D),EU(a ∣ C),V(D ∣ C), andUV(C) = V(D ∣ C) − V(D).DecisionProblem.questionUtility:EUV(Q) = ∑_{q ∈ Q} P(q) · UV(q).DecisionProblem.valueSampleInfo,.expectedValueSampleInfo: [vR03a]'sVSI/EVSI(p. 742).DecisionProblem.securityLevel,.maximinValue,.maximinUtilityValue,.questionMaximin: the maximin (worst-case) analogues.DecisionProblem.IsResolved: [vR03a]'s resolution of a decision problem (p. 736).
Main results #
DecisionProblem.questionUtility_eq_expectedValueSampleInfo:EUV(Q) = EVSI(Q)([vR03a], p. 742).DecisionProblem.questionUtility_mono_of_refines:EUVis monotone under partition refinement — the⟹direction of [vR03a]'s §4.1 Fact (p. 743).DecisionProblem.binary_question_value_decomposition: the yes/no-question instance.
Design: Fintype + Finset #
Functions that sum over the full universe use [Fintype W] with ∑ w : W.
Functions that operate over action sets or world subsets use Finset.
questionUtility and expectedValueSampleInfo take Finset (Finset W)
(cells as sets); questionMaximin takes a List (Finset W) of cells.
Empty action sets get the junk value 0 (the Real.sSup convention), with
_of_nonempty characterization lemmas as the working API.
A decision problem D = (W, A, U, π) with utility and prior.
- utility : W → A → K
Utility of action
ain worldw. - prior : W → K
Prior beliefs over worlds (should sum to 1 for proper probability).
Instances For
The uniform prior over a Fintype of worlds (0 when W is empty,
since 1 / 0 = 0 in a field).
Equations
- Core.DecisionTheory.DecisionProblem.uniformPrior x✝ = 1 / ↑(Fintype.card W)
Instances For
Create a decision problem with uniform prior.
Equations
- Core.DecisionTheory.DecisionProblem.withUniformPrior utility = { utility := utility, prior := Core.DecisionTheory.DecisionProblem.uniformPrior }
Instances For
Expected utility #
Expected utility of action a given the prior.
Equations
- dp.expectedUtility a = ∑ w : W, dp.prior w * dp.utility w a
Instances For
Value of a decision problem: max EU over actions, or 0 if empty.
Equations
- dp.value actions = if h : actions.Nonempty then actions.sup' h dp.expectedUtility else 0
Instances For
Conditional expected utility of action a given cell membership
(0 on zero-mass cells).
Equations
- dp.condExpectedUtility cell a = if cell.sum dp.prior = 0 then 0 else ∑ w ∈ cell, dp.prior w / cell.sum dp.prior * dp.utility w a
Instances For
Value of the decision problem after learning cell: best conditional EU
among actions.
Equations
- dp.condValue actions cell = if h : actions.Nonempty then actions.sup' h (dp.condExpectedUtility cell) else 0
Instances For
UV(C) = V(D ∣ C) − V(D), the utility value of learning proposition C.
Equations
- dp.utilityValue actions cell = dp.condValue actions cell - dp.value actions
Instances For
Probability of a cell of the partition.
Equations
- dp.cellProbability cell = cell.sum dp.prior
Instances For
Maximin #
S(a) = min_w U(w, a), the security level of action a.
Equations
- dp.securityLevel worlds a = if h : worlds.Nonempty then worlds.inf' h fun (w : W) => dp.utility w a else 0
Instances For
MV = max_a min_w U(w, a), the maximin value.
Equations
- dp.maximinValue worlds actions = if h : actions.Nonempty then actions.sup' h (dp.securityLevel worlds) else 0
Instances For
Conditional security level: worst case within cell c.
Equations
- dp.condSecurityLevel worlds a c = dp.securityLevel (worlds ∩ c) a
Instances For
Maximin value after learning c.
Equations
- dp.condMaximinValue worlds actions c = dp.maximinValue (worlds ∩ c) actions
Instances For
Maximin utility value of learning c.
Equations
- dp.maximinUtilityValue worlds actions c = dp.condMaximinValue worlds actions c - dp.maximinValue worlds actions
Instances For
Resolution #
c resolves decision problem (dp, acts): some action in acts
weakly dominates every other action on every world in c
([vR03a], p. 736).
Equations
- dp.IsResolved acts c = ∃ a ∈ acts, ∀ b ∈ acts, ∀ w ∈ c, dp.utility w b ≤ dp.utility w a
Instances For
Decidability of IsResolved under finite, decidable carriers — the
prerequisite for decide-based evaluation in worked study examples.
Equations
- Core.DecisionTheory.DecisionProblem.IsResolved.instDecidable dp acts c = id inferInstance
Question utility #
EUV(Q) = ∑_{q ∈ Q} P(q) · UV(q), the expected utility value of
question Q.
Equations
- dp.questionUtility actions cells = ∑ cell ∈ cells, dp.cellProbability cell * dp.utilityValue actions cell
Instances For
MV(Q) = min_{q ∈ Q} MV(q), the maximin question value.
Equations
- dp.questionMaximin worlds actions [] = 0
- dp.questionMaximin worlds actions (c :: cs) = List.foldl (fun (m : K) (cell : Finset W) => min m (dp.maximinUtilityValue worlds actions cell)) (dp.maximinUtilityValue worlds actions c) cs
Instances For
Value of sample information #
Optimal action: the one with highest expected utility.
Noncomputable because it extracts a witness from an existential
(Finset.exists_max_image via Classical.choice).
Equations
- dp.optimalAction actions = if h : actions.Nonempty then some ⋯.choose else none
Instances For
VSI(C) = V(D ∣ C) − EU(a⁰ ∣ C): the value of sample information from
learning proposition C, where a⁰ is the current optimal action.
Unlike UV(C) = V(D ∣ C) − V(D), VSI is always non-negative: learning
C before choosing can never hurt relative to the current best action
applied within C ([vR03a], p. 742).
Equations
- dp.valueSampleInfo actions cell = dp.condValue actions cell - match dp.optimalAction actions with | some a => dp.condExpectedUtility cell a | none => 0
Instances For
EVSI(Q) = ∑ P(C) · VSI(C): the expected value of sample information
from asking question Q ([vR03a], p. 742).
Equations
- dp.expectedValueSampleInfo actions cells = ∑ cell ∈ cells, dp.cellProbability cell * dp.valueSampleInfo actions cell
Instances For
EUV(Q) = EVSI(Q): the expected utility value of a question equals its
expected value of sample information.
[vR03a], p. 742: "The expected utility value of a question is equal to its expected value of sample information."
The two hypotheses are the law of total expectation
(∑ P(C) · EU(a ∣ C) = EU(a) for all actions) and cell probability
normalization (∑ P(C) = 1).
Refinement monotonicity (Blackwell forward direction / [vR03a] §4.1) #
[vR03a] p. 743 states that Q ⊑ Q' ↔ ∀ DP, EUV(Q) ≥ EUV(Q') is "a special
case of [Bla53]". The ⟹ ("only if") direction is the data-processing /
Jensen inequality: a finer question can only raise question utility. We prove it
directly at the questionUtility level; the kernel-level fact it specializes —
coarsening a deterministic classifier is a Markov garbling, so the finer partition
has lower Bayes risk in every decision problem — is
ProbabilityTheory.bayesRisk_deterministic_le_deterministic_comp in
Core.Probability.Decision.Blackwell, and eig_deterministicObs_eq_euv in
Core.Probability.Decision.ExperimentDesign identifies questionUtility with the
expected value of the corresponding deterministic experiment.
The mathematical core is the unnormalized cell value maxₐ ∑_{w∈c} P(w)·U(w,a),
which equals P(c)·V(D|c) (cellProbability_mul_condValue_eq_uValue) and is
superadditive under splitting a cell into disjoint pieces
(uValue_union_le): the max of a sum is at most the sum of the maxes. Summed over a
partition, this gives questionUtility (finer) ≥ questionUtility (coarser).
Splitting a cell never decreases its decision value: for disjoint cells c₁, c₂
and a nonnegative prior,
P(c₁ ∪ c₂)·V(D|c₁ ∪ c₂) ≤ P(c₁)·V(D|c₁) + P(c₂)·V(D|c₂).
This is [Bla53]'s data-processing inequality for a single binary refinement, the
building block of [vR03a]'s §4.1 question-utility monotonicity (p. 743).
Question utility rises under refinement (binary split) — the ⟹ ("only if")
direction of [vR03a]'s §4.1 Fact (p. 743), in its elementary case. Splitting one
cell c₁ ∪ c₂ of a question into the two disjoint cells c₁, c₂ can only increase the
expected utility value EUV. This is the finite-partition instance of [Bla53]'s
data-processing inequality; any finite refinement of one partition by another is a
composition of such binary splits, so iterating gives the full §4.1 monotonicity.
General partition refinement #
The binary questionUtility_split_ge lifts to an arbitrary refinement of one partition by
another, via general superadditivity of uValue and a fiberwise regrouping. The refinement
is presented by a map assign sending each finer cell to the coarser cell containing it,
with each coarser cell the union (Finset.sup) of its fiber.
Question utility is monotone under partition refinement — the ⟹ direction of
[vR03a]'s §4.1 Fact (p. 743), in full generality. A finer partition fine
(presented as a refinement of coarse via assign, with each coarse cell the disjoint
union of its fiber) has EUV ≥ the coarser one. By [Bla53]: post-processing the
finer experiment cannot raise the convex value. Generalizes questionUtility_split_ge.
Maximin monotonicity #
Security level and maximin value are antitone in the world set: restricting to a subset can only improve worst-case guarantees.
The security level is at most the utility of any world in the set.
The security level is antitone in the world set: a min over fewer elements is at least the min over more.
The maximin value is antitone in the world set.
Maximin utility value is antitone in the cell: learning a more specific proposition (subset of worlds) gives a higher MUV.
Maximin value of information is non-negative for nonempty cells: the maximin
over worlds ∩ c ⊆ worlds considers fewer worst cases.
List minimum helpers #
The question maximin value is at most the MUV of each cell in the question.
Special decision problems #
An epistemic DP where the agent wants to know the exact world state.
Equations
- Core.DecisionTheory.DecisionProblem.epistemic target = { utility := fun (w : W) (x : A) => if w = target then 1 else 0, prior := fun (x : W) => 1 }
Instances For
A complete-information DP where only exact-state knowledge is useful.
Equations
- Core.DecisionTheory.DecisionProblem.completeInformation = { utility := fun (w a : W) => if a = w then 1 else 0, prior := fun (x : W) => 1 }
Instances For
A mention-some DP: any satisfier resolves the problem.
Equations
- Core.DecisionTheory.DecisionProblem.mentionSome satisfies = { utility := fun (w : W) (a : Bool) => if a = true ∧ satisfies w then 1 else 0, prior := fun (x : W) => 1 }
Instances For
Binary question value decomposition #
For a binary partition {P, ¬P}, the probability-weighted sum of conditional
DP values equals Van Rooy's question utility plus the baseline DP value.
This is the structural identity connecting "the value of asking a yes/no
question" to the decision-theoretic question framework of [vR03a].
Cell probabilities of a binary partition {P, ¬P} sum to 1 when the
prior is a proper distribution.
Binary question value decomposition: for a binary partition {P, ¬P},
`∑ P(cell) · V(D|cell) = EUV({P, ¬P}, D) + V(D)`
where the LHS is the probability-weighted sum of conditional DP values,
EUV is questionUtility, and V(D) is value.