i working on prolog program take 2 lists, calculates average of elements @ corresponding indices , returns averages list. this code. i'm getting is/2: arguments not sufficiently instantiated error. sum(h,t,s) :- s h + t. avelists([],[],_). avelists([head|tail],[head2|tail2],[x|tail3) :- x sum(head,head2,a)/2, avelists(tail,tail2,tail3). for example: ?- avelists([1,4,3],[3,6,5],xs]). xs = [2,5,4]. % expected result why not working , giving me error? looks me should work. if use separate predicate calculate sum, need evaluate before using answer: sum(a, b, sum), mean sum / 2 there problem pointed out in other answer . what want: list1_list2_means([], [], []). list1_list2_means([x|xs], [y|ys], [m|ms]) :- m (x + y) / 2, list1_list2_means(xs, ys, ms). you save typing writing helper predicate finds mean of 2 numbers: x_y_mean(x, y, m) :- m (x + y) / 2. then, can use maplist : ?- maplist(x_y_mean, l1, l2, ...