anglais([an1|L]):-aux(L). anglais([an2|L]):-aux(L). anglais([X|L]):-X\==an1,X\==an2,anglais(L). aux([]). aux([X|L]):-X\==an1,X\==an2,aux(L). fin_etudes([se|_]). fin_etudes([pp|_]). fin_etudes([tr|_]). fin_etudes([_|L]):-fin_etudes(L). ects_sem(X,[],0). ects_sem(X,[Y|G],N):-ue(Y,M,X),ects_sem(X,G,K), N is M+K. ects_sem(X,[Y|G],N):-ue(Y,M,Z), X=\=Z, ects_sem(X,G,N). coherent(L):- anglais(L), fin_etudes(L),ects_sem(1,L,N1), N1>=30,ects_sem(2,L,N2),N2>=30. inclus([],Y). inclus([A|G],Y):-member(A,Y),inclus(G,Y). inter([],T,[]). inter([C|G],T,[C|P]):- member(C,T),inter(G,T,P). inter([C|G],T,R):- not(member(C,T)),inter(G,T,R). compte([],0). compte([P|L],N):-ue(P,M,_),compte(L,Q), N is M+Q. (pas fini...)