Skip to main content

Hal & Carla

Hal, a diabetic, loses his insulin. Before collapsing, he enters Carla's house and uses some of her insulin. Carla is another diabetic, not home. Should Hal be punished?

— Trevor Bench-Capon, introducing value-based argumentation frameworks (2003). A widely-used worked example for reasoning about values.

The arguments

Hal & Carla — value-based attacks
attacksdrag nodes · scroll to pan
H1 and C1 attack each other symmetrically. C2 neutralises Hal's compensation argument H2 by showing Carla was also endangered. H2 in turn attacks C1 — if Hal cannot pay, property-rights-as-remedy dissolves. Notice that C2 has no in-edges: nothing in the framework attacks Carla's claim that this is her only dose.

Drag β to see how the framework resolves

Loading…

Watch C2 — it stays credulously accepted at every β, because nothing in the framework attacks it. As β rises, the H2 → C1 attack (weight 0.4) becomes droppable around β = 0.4, and the symmetric H1 ↔ C1 pair (both weight 0.5) becomes droppable around β = 0.5. But no β setting yields Hal as the sole winner: Carla's C2 is structurally unkillable in this graph, and the symmetric H1 ↔ C1 leaves both sides credulously accepted (multiple preferred extensions) rather than picking a winner.

A pre-recorded multi-beat trace at four discrete β

Hal & Carla across β
β:0.00
Loading…

The traces tell a stark story: in every beat at every β, Carla's proposal is accepted and Hal's is rejected. At β = 1.0 Hal pivots from arguing life_over_property to arguing too_poor_to_compensate — the scorer notices the H2 → C1 attack has dropped — but the rejection persists because Carla's C2 still defeats H2 (weight 0.6, too heavy to drop even at β = 1.0; in fact that edge would need β > 0.6 to fall).

This is the limit of the abstract weighted framework. Tuning β changes which Hal-claim gets put forward, but never changes who wins. To get a different outcome, the framework would need to encode the moral preference itself — life > property — as a first-class part of the resolution. That's what value-based argumentation does.

With values: the audience flips the outcome

The abstract weighted framework above can't prefer Hal — but argumentation-values can. Below, the same four arguments and four attacks, but with values attached: H1 promotes life, C1 promotes property, H2 promotes fairness, C2 promotes life. Each side panel shows the audience-conditioned defeat graph under one audience.

Audience: life > property

Defeat graph — life ≻ property
attacksdrag nodes · scroll to pan
C1's attack on H1 is filtered out (life is preferred over property). Grounded extension: {H1, C2}. Hal goes free.

Audience: property > life

Defeat graph — property ≻ life
attacksdrag nodes · scroll to pan
H1's attack on C1 is filtered out (property is preferred over life). Grounded extension: {C1, C2}. Hal punished.

The framework hasn't changed; the audience has. Same four arguments, same four attacks, opposite outcome. This is the formal machinery of value-based argumentation.

Why values matter

Pure Dung semantics — the engine you just played with — can't prefer Hal in the way humans intuitively do, because the framework treats H1 and C1 as ordinary attacks on each other (or on C1's targets). The preference "life is more important than property" is not encodable as an attack weight or a β setting. That's a value preference, not a scene-intensity setting.

Bench-Capon's solution: attach values to arguments. H1 promotes life; C1 promotes property; H2 promotes fairness; C2 promotes life (Carla's life, in this case). An audience is an ordering over values. Different audiences with different orderings reach different stable positions rationally:

  • An audience that ranks life > property → H1 and C2 accepted, C1 and H2 rejected. Hal goes free.
  • An audience that ranks property > life → the opposite. Hal is punished.

The framework hasn't changed; the audience has. This is the formal machinery that makes "different audiences, same arguments, different conclusions" precise rather than vague.

In our library

Value-based argumentation is implemented in the argumentation-values crate. The audience-flip demonstration above uses the actual library to derive the defeat graphs shown. For full API details, types, and the Hal & Carla integration test that pins this exact behaviour, see the VAF concepts page.

For multi-character scene wiring (per-character audiences flowing into the encounter bridge), see the wiring per-character values how-to.

Further reading