Question en Prolog

Fermé
AX - Modifié le 20 mai 2017 à 18:42
Bonsoir,
je cherche a ecrire un predicat (prolog) qui supprime
tous les occurences A TOUS LES NIVEAUX d'une liste
(bien sure apres avoir reussir de le supprimer a un seul niveau...)

mais malheureusement le code me retourne un boolean

voici le code :

supp_all([],E,[]).
supp_all([E|Q],E,Q1):-supp_all(Q,E,Q1).
supp_all([T|Q],E,[T|Q1]):-atomic(T),supp_all(Q,E,Q1).
supp_all([T|Q],E,Q1):-supp_all(T,E,Q1),supp_all(Q,E,Q1).

avec E l'element , le premier parametre est la liste originale ,
le troisieme est la liste resultat.

Je pense que l'erreur vient du quatrieme ligne,
quelqu'un peut m'aider avec une petite explication ?
Et merci beaucoup.