Simple Prolog eliminar de la lista

(Esta NO es una pregunta de curso. Solo mi propio aprendizaje personal).

Estoy tratando de hacer un ejercicio en Prolog para eliminar elementos de una lista. Aquí está mi código:

deleteall([],X,[]).
deleteall([H|T],X,Result) :- 
    H==X,
    deleteall(T,X,Result).
deleteall([H|T],X,[H|Result]) :- deleteall(T,X,Result).

Cuando lo pruebo, primero obtengo una buena respuesta (es decir, con todas las X eliminadas). Pero luego el retroceso me ofrece todas las otras variantes de la lista con algunas o ninguna de las instancias de X eliminadas.

¿Por qué debería ser esto? ¿Por qué los casos en los que H == X nunca llegan a la última cláusula?

Respuestas a la pregunta(2)

Su respuesta a la pregunta