There are two main problems here:
1 You have problems with combining and arithmetic operations in the right places.
2- You are not validating your input enough
1- (is)/2 , , , 1 Limit. (is)/2 , . (=)/2 ().
2-, , . .
, , :
numberList([], 0).
numberList([Limit|T], Limit) :-
NewLimit is Limit - 1,
numberList(T, NewLimit).
, , :
numberList([], 0).
numberList([H|T], Limit) :-
H = Limit,
NewLimit is Limit - 1,
numberList(T, NewLimit).
, , , , , ;.
: Prolog , , , . , Limit - 0. , NegativeInfinity. , , , . , , , Limit , 0, : . , !