agregado / 3 em swi-prolog

Eu preciso contar tudoX, aquelesome_predicate(X) e realmente existem muitos dessesX. Qual o melhor jeito pra fazer isso

primeira pista é encontrar tudo, acumular em uma lista e retornar o compriment

countAllStuff( X ) :-
    findall( Y
           , permutation( [1,2,3,4,5,6,7,8,9,10], Y )
           , List
           ),
    length( List, X ).

(permutation/2 é apenas um exemplo que mostra que existem muitas variantes e é uma maneira ruim de coletar tudo)

Obviamente, tenho excesso de pilha.

?- countAllStuff( X ).
ERROR: Out of global stack

Estou tentando substituirfindall parasetof e nada muda.

Finalmente, eu fundeiaggregateredicados (clicáveis) e tentando usá-l

?- aggregate(count, permutation([1,2,3,4], X), Y ).
X = [1, 2, 3, 4],
Y = 1 .

?- aggregate(count, [1,2,3,4], permutation([1,2,3,4], X), Y ).
X = [1, 2, 3, 4],
Y = 1 ;
X = [1, 2, 4, 3],
Y = 1 ;

Está tudo errado, eu acho. Prefiro obter algo como

?- aggregate(count, permutation([1,2,3,4], X), Y ).
Y = 24 .

1) O que estou fazendo de errado?

2) Como posso declarar o predicado para obter a resposta cert

questionAnswers(3)

yourAnswerToTheQuestion