Geometric constraints and reasoning for geometrical CAD systems