The algorithm uses a qualitative description of a system. The description includes constraints that describe how different values in the system interact with other values. For example, the change of the water level in a tank is equal to inflow minus outflow. Starting from an initial state, the algorithm determines all possible future states that are compatible with the system constraints. The algorithm is described in the book Qualitative Reasoning (ISBN 026211190X).