[Prolog] ET et OU, contraintes sur des des ensembles

Hello, ca faisait un bail que j’avais pas posté sur cette partie du forum B)

Je débute en Prolog et je me heurte à un problème soit de logique, soit de fonction utilisée (je joue avec GProlog sous windows).

J’ai une liste de variables [A,B,C,D,E,F,G,H,I] définies sur un domaine [0,15]. J’ai un ensemble de contraintes sur ma liste, par exemple je veux ABC tous différents, DEF idem et GHI idem; je ne veux également pas plus de 2 variables de la liste égales en même temps etc.

Je cherche à écrire une contrainte traduisant la combinaison de B, E et H égales à l’une des variables suivantes C,F ou I :

(B = C ou B = F ou B = I) et (E = C ou E = F ou E = I) et (H = C ou H = F ou H = I)

J’ai testé la fonction:

Qui signifie que je veux B égal a exactement 1 des valeur de la liste [C,F,I] mais je me bouffe l’erreur suivante:

Si je comprend bien l’erreur: je demande au système de constituer une paire de variables, mais il ne peut pas le faire vu que la variable considérée comme points de pivot B est un ensemble et non un entier.

Est ce qu’il y aurait un expert en Prolog dans les parages pour me corriger soit sur la logique soit sur l’utilisation de Prolog?

D’avance merci
JakeG