Skip to content

Instantly share code, notes, and snippets.

@ejamesc
Created September 13, 2011 21:01
Show Gist options
  • Save ejamesc/1215160 to your computer and use it in GitHub Desktop.
Save ejamesc/1215160 to your computer and use it in GitHub Desktop.
Differentiation in Prolog
/* 6 differentiation rules */
derive(X, X, 1).
derive(In, X, 0) :- atomic(In).
derive(In1+In2, X, Res1 + Res2) :- derive(In1, X, Res1), derive(In2, X, Res2).
derive(In1-In2, X, Res1 - Res2) :- derive(In1, X, Res1), derive(In2, X, Res2).
derive(In1*In2, X, In1 * Res1 + Res2 * In2) :- derive(In1, X, Res2), derive(In2, X, Res1).
derive(In1/In2, X, (In2 * Res1 - In1 * Res2)/In2*In2 ) :- derive(In1, X, Res1), derive(In2, X, Res2).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment