The program implemented to solve the sliding problem made use of many of the facilities provided in the ASSF proposal, but did not include some aspects. In particular, it omitted the description of axis relative object positions. The parts of the proposed representation which were important for solving this problem were the qualitative description of feature shape, including vertex angles, the relative position of features on an object by ``neighbour'' relationships, and the contact list associated with each feature.
The ASSF representation was implemented with extensive use of data types that support multiple attributes of different types. My implementation used the LISP ``defstruct'', but any method of relating data items of different types to an single reference could have been used. The shape elements described in this way included basic features (vertices, lines and curves), orientation and position, and functional groupings of features for generic part or object shape types.
The attributes of a feature vary between vertices, lines and curves. The attributes of a line feature include length, orientation, and position relative to the local object. The attributes of a vertex include its angle, the orientation of the angle bisector, and whether it is concave or convex. The attributes of a curve include orientation of the chord axis, length of the chord, position of the chord centre, bulge of the curve, and whether it is concave or convex. The ``wiggle'' feature type was not included in this implementation, since sliding over wiggles involves a different type of reasoning problem.
Position and orientation descriptions are also defined by defstructs, since position and orientation have several components. These components include major and minor axis positions, and local and global orientation. Although the facility for describing global orientation was included in the representation, it was not used for the solution of the sliding problem.
The use of groupings of features as generic shape types allowed common two dimensional shapes to be defined once, so that any given shape in a scene is simply an instance of the generic type. As an example, a generic square is defined as composed of four edge features, and four vertex features. There are certain attributes of each feature which can be defined as being true for all squares. The definition of the square includes information about where these features are on the boundary of the square, and how they are related to each other. The relationships described include sets of lines which are parallel and pairs of lines which are perpendicular to each other, as well as the requirement for right-angled vertices in a square.
Any reference to one part of a particular two dimensional shape in the scene is made using terms established in the generic shape definition. One side of a particular square, for example, might referred to as the second line segment in the third instance of generic shape number one.