# Yale shooting problem

The Yale shooting problem is a conundrum or scenario in formal situational logic on which early logical solutions to the frame problem fail. The name of this problem derives from its inventors, Steve Hanks and Drew McDermott, working at Yale University when they proposed it. In this scenario, Fred (later identified as a turkey) is initially alive and a gun is initially unloaded. Loading the gun, waiting for a moment, and then shooting the gun at Fred is expected to kill Fred. However, if inertia is formalized in logic by minimizing the changes in this situation, then it cannot be uniquely proved that Fred is dead after loading, waiting, and shooting. In one solution, Fred indeed dies; in another (also logically correct) solution, the gun becomes mysteriously unloaded and Fred survives.

Technically, this scenario is described by two fluents (a fluent is a condition that can change truth value over time): ${\displaystyle alive}$ and ${\displaystyle loaded}$. Initially, the first condition is true and the second is false. Then, the gun is loaded, some time passes, and the gun is fired. Such problems can be formalized in logic by considering four time points ${\displaystyle 0}$, ${\displaystyle 1}$, ${\displaystyle 2}$, and ${\displaystyle 3}$, and turning every fluent such as ${\displaystyle alive}$ into a predicate ${\displaystyle alive(t)}$ depending on time. A direct formalization of the statement of the Yale shooting problem in logic is the following one:

${\displaystyle alive(0)}$
${\displaystyle \neg loaded(0)}$
${\displaystyle true\rightarrow loaded(1)}$
${\displaystyle loaded(2)\rightarrow \neg alive(3)}$

The first two formulae represent the initial state. The third formula formalizes the effect of loading the gun at time ${\displaystyle 0}$. The fourth formula formalizes the effect of shooting at Fred at time ${\displaystyle 2}$. This is a simplified formalization in which action names are neglected and the effects of actions are directly specified for the time points in which the actions are executed. See situation calculus for details.

The formulae above, while being direct formalizations of the known facts, do not suffice to correctly characterize the domain. Indeed, ${\displaystyle \neg alive(1)}$ is consistent with all these formulae, although there is no reason to believe that Fred dies before the gun has been shot. The problem is that the formulae above only include the effects of actions, but do not specify that all fluents not changed by the actions remain the same. In other words, a formula ${\displaystyle alive(0)\equiv alive(1)}$ must be added to formalize the implicit assumption that loading the gun only changes the value of ${\displaystyle loaded}$ and not the value of ${\displaystyle alive}$. The necessity of a large number of formulae stating the obvious fact that conditions do not change unless an action changes them is known as the frame problem.

An early solution to the frame problem was based on minimizing the changes. In other words, the scenario is formalized by the formulae above (that specify only the effects of actions) and by the assumption that the changes in the fluents over time are as minimal as possible. The rationale is that the formulae above enforce all effect of actions to take place, while minimization should restrict the changes to exactly those due to the actions.

In the Yale shooting scenario, one possible evaluation of the fluents in which the changes are minimized is the following one.

 ${\displaystyle alive(0)}$ ${\displaystyle alive(1)}$ ${\displaystyle alive(2)}$ ${\displaystyle \neg alive(3)}$ ${\displaystyle \neg loaded(0)}$ ${\displaystyle loaded(1)}$ ${\displaystyle loaded(2)}$ ${\displaystyle loaded(3)}$

This is the expected solution. It contains two fluent changes: ${\displaystyle loaded}$ becomes true at time 1 and ${\displaystyle alive}$ becomes false at time 3. The following evaluation also satisfies all formulae above.

 ${\displaystyle alive(0)}$ ${\displaystyle alive(1)}$ ${\displaystyle alive(2)}$ ${\displaystyle alive(3)}$ ${\displaystyle \neg loaded(0)}$ ${\displaystyle loaded(1)}$ ${\displaystyle \neg loaded(2)}$ ${\displaystyle \neg loaded(3)}$

In this evaluation, there are still two changes only: ${\displaystyle loaded}$ becomes true at time 1 and false at time 2. As a result, this evaluation is considered a valid description of the evolution of the state, although there is no valid reason to explain ${\displaystyle loaded}$ being false at time 2. The fact that minimization of changes leads to wrong solution is the motivation for the introduction of the Yale shooting problem.

While the Yale shooting problem has been considered a severe obstacle to the use of logic for formalizing dynamical scenarios, solutions to it are known since the late 1980s. One solution involves the use of predicate completion in the specification of actions: according to this solution, the fact that shooting causes Fred to die is formalized by the preconditions: alive and loaded, and the effect is that alive changes value (since alive was true before, this corresponds to alive becoming false). By turning this implication into an if and only if statement, the effects of shooting are correctly formalized. (Predicate completion is more complicated when there is more than one implication involved.)

A solution proposed by Erik Sandewall was to include a new condition of occlusion, which formalizes the “permission to change” for a fluent. The effect of an action that might change a fluent is therefore that the fluent has the new value, and that the occlusion is made (temporarily) true. What is minimized is not the set of changes, but the set of occlusions being true. Another constraint specifying that no fluent changes unless occlusion is true completes this solution.

The Yale shooting scenario is also correctly formalized by the Reiter version of the situation calculus, the fluent calculus, and the action description languages.

In 2005, the 1985 paper in which the Yale shooting scenario was first described received the AAAI Classic Paper award. In spite of being a solved problem, that example is still sometimes mentioned in recent research papers, where it is used as an illustrative example (e.g., for explaining the syntax of a new logic for reasoning about actions), rather than being presented as a problem.