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