'aX=bY+c'(A,X,B,Y,C) => 'aX=bY+c_forward'(A,X,B,Y,C). 'aX=bY+c_forward'(A,X,B,Y,C),var(X),var(Y),{ins(X),ins(Y)} => true. 'aX=bY+c_forward'(A,X,B,Y,C),var(X) => T is B*Y+C, Ex is T//A, (A*Ex=:=T->X = Ex; true). 'aX=bY+c_forward'(A,X,B,Y,C) => T is A*X-C, Ey is T//B, (B*Ey=:=T->Y is Ey;true).When both X and Y are variables, the propagator is suspended. When either variable is instantiated, the propagator computes the value for the other variable.