I proposed the ``sliding problem'' as an initial case study to test the power
of the ASSF shape representation. The two dimensional scene in which the task
is carried out includes a number of stationary obstacles, and one moving
object. The task for the program is to list the contacts that might occur if
the moving object were sliding around the obstacles (the only constraint on
motion in sliding is that the moving object must stay in contact with at least
one of the obstacles at all times).

The possible contacts which the program must find are qualitatively described
in terms of the pair of features which are in contact: one on the moving
object, and one on an obstacle. The moving object might be in contact with
more than one obstacle at one time, so one entry in the set of possible
contacts might include several of these feature pairs.

The sliding problem is not an especially difficult one when compared to human
performance in spatial reasoning, or even when compared to some robot
reasoning systems. It is, however, a problem which would not be trivial to
solve using computational methods based on numerical geometry. The main point
of interest as a problem in qualitative reasoning is that the solution must be
expressed in terms of qualitative state; the definition of a ``contact''
implies a particular qualitative state, whereas a numeric system could provide
only a range of coordinate values over which the position constraints of the
problem are met.

The overall method described below for solving this problem could be
implemented equally well using any qualitative shape description that includes
a description of boundary features. The last part of this section discusses
some technical details of my implementation using the ASSF representation, but
a number of these points would apply to any representation.

The main challenge in this problem lies in the need to qualitatively describe
the process of sliding, and the state of contact. Both involve interaction
between objects that takes place on the boundaries of those objects. The two
are closely related by the formulation of the problem, which defines the
constraint on sliding motion in terms of contact, and asks for a set of
contacts which can occur through sliding. It is therefore natural to
conversely describe the process of sliding as a change in contact state over
time.

In order to solve the problem, a program must therefore be capable of
remembering more than one state of the system under analysis, and it must be
capable of ordering these states with respect to the times at which they
occur. It must also be capable of representing and analysing state transition.
The following sections discuss the representation of contact state, the
analysis of state transition, and finally the overall reasoning strategy
followed by the program.