MODULE DragResponse; (* This is a simple module to show how dragging sometimes tracks the mouse well and sometimes does not, even when the two cases seem symmetric. *) PROC Quad(a, b, c, d) IS IF PS.MoveTo(a); PS.LineTo(b); PS.LineTo(c); PS.LineTo(d); PS.Close() FI END; (* Without any constraints on "g", the point "e" is easy to drag, but the symmetric point "f" is not. If we add the constraint "f HOR g", we can use "g" as a handle to drag "f". However, once this constraint is in force, it is no longer easy to drag "e", even if "g" is unfrozen. Surprisingly, *adjusting* "e" in this case works quite well. How come? *) PROC Cmd0() IS IF VAR a = (-170.41092, 132.14568), b = (-88.89553, 132.14568), c ~ (91.09341, 132.14568), d = (172.6088, 132.14568), e ~ (-39.658745, -144.57802), f ~ (41.856644, -144.57802), g ~ (83.312004, -142.93307) IN a HOR b AND a HOR c AND a HOR d AND e HOR f AND (a, e) PARA (b, f) AND (e, c) PARA (f, d) AND (a, e) CONG (f, d) -> Quad(a, e, f, b); Quad(e, f, d, c) END FI END;