The description of a spatial problem includes a section in which the known relationships existing between the objects are expressed. The system recognizes six types of constraint: isWithin, isnotWithin, isSubset, isnotSubset, isEquals and isnotEquals. ``i sWithin" and ``isnotWithin" are functions which deliver alternative sets of addresses. Each of the remaining four constraints is interpreted as a Boolean constraint, so that a question such as ``Is area1 equal to area2" can be expressed as constraint: area1 equals area2.
Operands for constraints are comprised of sets of tesseral addresses. In order to be able to express all possible relations which exist in 2-dimensional space, there are two mechanisms for defining sets of addresses:
object: A [002]
object: B [033]
object: C [0] [000..003]
Object A occupies a tile at address 002, object B at 033 and C occupies a tile which may be at any of the tiles 000..003.
The constraint: constraint: A isSubset C would translate to: 002
000..003 so the predicate would return ``true".
constraint: B isSubset A offsetBy [box 003 031]
states that an offset, [box 003 031] is first to be applied to the addresses of the location associated with object A before implementing the test for isSubset, i.e. adding (tesserally) the addresses of the box, which are 003, 012..013, 021, 030..
031 to the location of A, which is 002, results in the set 021, 023..033. The constraint is then interpreted as: 033
021, 023..033
which in this case returns ``true".