% Prolog program 'diff' from Section 9.5 (Figure 9.10) d(X, U + V, DU + DV) :- d(X, U, DU), d(X, V, DV). d(X, U - V, DU - DV) :- d(X, U, DU), d(X, V, DV). d(X, U * V, U*DV + V*DU) :- d(X, U, DU), d(X, V, DV). d(X, U / V, (V*DU - U*DV) / (V*V)) :- d(X, U, DU), d(X, V, DV). d(X, C, 0) :- atomic(C), C\=X. d(X, X, 1).