Естественно начать с двух предложений для пустых и непустых списков, и фактически вы можете сохранить этот шаблон! Вы можете легко решить это с помощью отдельного предиката , который имеет значение true, если его аргумент является списком хотя бы с одним элементом.
Например:
not_empty([_|_]).
Затем опубликуйте соединение этого предиката и того, что вы уже успешно реализовали.
Если вы хотите, вы также можете объединить это в третий предикат, который состоит только из этого соединения.
Кроме того, проверьте это:
?- maplist(=(a), Ls).
Объединив эти цели, вы можете - чисто алгебраическим резонансом - найти еще более короткое решение!