%		Differentiation program.

d(U + V, X, DU + DV) :- !,
	d(U, X, DU),
	d(V, X, DV).
d(U - V, X, DU - DV) :- !,
	d(U, X, DU),
	d(V, X, DV).
d(U * V, X, U * DV + V * DU) :- !,
	d(U, X, DU),
	d(V, X, DV).
d(U / V, X, (DU * V - U * DV) / V ^ 2) :- !,
	d(U, X, DU),
	d(V, X, DV).
d(U ^ N, X, DU * N * U ^ N1) :-
	integer(N), !,
	N1 is N - 1,
	d(U, X, DU).
d(- U, X, - DU) :- !,
	d(U, X, DU).
d(e ^ U, X, DU * e ^ U) :- !,
	d(U, X, DU).
d(sin(U), X, DU * cos(U)) :- !,
	d(U, X, DU).
d(cos(U), X, - DU * sin(U)) :- !,
	d(U, X, DU).
d(ln(U), X, DU / U) :- !,
	d(U, X, DU).
d(X, X, 1) :-  !.
d(C, X, 0).
