a(A,B) :- B is asin(A). fit(Points,A,B,C,D) :- value(A), value(B), value(C), value(D), fitpoints(Points,A,B,C,D),!. value(1). value(2). value(0.5). fitpoints([],_,_,_,_). fitpoints([[X,Y]|Points],A,B,C,D) :- fit(X,Y,A,B,C,D), fitpoints(Points,A,B,C,D). fit(X,Y,A,B,C,D) :- Y1 is A*sin(B*X)+C*sin(D*X), Y-0.01