:- use_module(library(lists), [member/2]). :- use_module(contestlib, [sublist/2]). base(Elements,Base) :- findall(X,is_base(Elements,X),Base). is_base(Elements,X) :- member(X,Elements), \+ is_no_base(Elements,X). is_no_base(Elements,X) :- sublist(Elements,Sub), \+ member(X,Sub), luball(Sub,X). luball([X],X). luball([X|Y],Z) :- luball(Y,O), lub(O,X,Z).