Spatial problem scenarios are presented to the system in the form of groups of constraints which the system will attempt to satisfy. The system first determines the arguments for the constraints, as described in section Constraints, and treats the relations as predicates, i.e. they either succeed or fail. Where a predicate succeeds, the locations associated with its two arguments represent a solution to the constraint and are stored in a solution space, S, represented as a predicate of the form: configuration(S) where S comprises a lis t, stored as a tree, of the objects under consideration together with their candidate sets of tesseral addresses. Initially this list will be empty. As each constraint is considered in turn this will result in information being added to, or updated in S. This process will continue until all constraints have been considered and all possible solutions for each constraint have been generated. The solution in S will represent a final solution.