Вам необходимо добавить базовый вариант (когда N = 0). И вам также нужно создать новую свежую переменную, чтобы назначить предшественник N, и, наконец, вам также нужно вернуть результат рекурсии ([H | L] в начале класса):
first_three(0,_,[).
first_three(N,[H|T],[H|L]):-
N\=0,
N1 is N-1,
first_three(N,T,L).
Конечно, вы также можете написать что-то вроде этого:
first_three([One,Two, Three|_], [One,Two, Three]).
и назовите его:
first_three(Path, Y).