Constraint Based Reasoning