:- use_module(library(clpr)). solve(I1, I2, I3, R1, R2, V) :- {I1 + I3 = I2}, {V = - I3 * R1}, {V = I2 * R2}. mystery2([], []). mystery2([X | Xs], Ys) :- is_list(X), mystery2(X, Xpanded), mystery2(Xs, Rest), append(Xpanded, Rest, Ys). mystery2([X | Xs], [X | Ys]) :- not(is_list(X)), mystery2(Xs, Ys). :- op(610,xfx,\). dflatten(S,F) :- flatten_dl(S, F\[]). flatten_dl([], X\X). flatten_dl([X|Xs], Y\Z) :- flatten_dl(X, Y\T), flatten_dl(Xs, T\Z). flatten_dl(X, [X|Z]\Z). starts_with(_, []). starts_with([X|Xs], [X|Ys]) :- starts_with(Xs, Ys).