Ну, у вас могут быть и другие вещи, помимо атомов, например, у вас могут быть списки. Как только вы это сделаете, вы можете захотеть узнать об одноэлементном списке, и вы можете получить
oneelement([X]).
Точно так же, скажем, вы хотите сравнить последний элемент в списке
lastelement([X],X).
lastelement([_|Remainder],X) :- lastelement(Remainder,X).
Очень полезный предикат member
определяется как
member([X|_],X).
member([_|Remainder],X) :- member(Remainder,X).
Каждый из них использует необоснованный факт в качестве базового случая, сопоставляя специальную форму, которая более конкретна, чем просто lost(X)