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 comes from a scenario proposed by 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):
alive
loaded
0
1
2
3
alive
alive(t)
alive(0)
\negloaded(0)
true → loaded(1)
loaded(2) → \negalive(3)
The first two formulae represent the initial state. The third formula formalizes the effect of loading the gun at time
0
2
The formulae above, while being direct formalizations of the known facts, do not suffice to correctly characterize the domain. Indeed,
\negalive(1)
alive(0)\equivalive(1)
loaded
alive
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.
alive(0) | alive(1) | alive(2) | \negalive(3) | |
\negloaded(0) | loaded(1) | loaded(2) | loaded(3) |
This is the expected solution. It contains two fluent changes:
loaded
alive
alive(0) | alive(1) | alive(2) | alive(3) | |
\negloaded(0) | loaded(1) | \negloaded(2) | \negloaded(3) |
In this evaluation, there are still two changes only:
loaded
loaded
While the Yale shooting problem has been considered a severe obstacle to the use of logic for formalizing dynamical scenarios, solutions to it have been known since the late 1980s. One solution involves the use of predicate completion in the specification of actions: in 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.