nchairs(4). npersons(16). table(1..4). person(a). person(b). person(c). person(d). person(e). person(f). person(g). person(h). person(i). person(j). person(k). person(l). person(m). person(n). person(o). person(p). like(a,b). like(c,b). dislike(b,d). like(e,d). dislike(f,e). like(i,f). like(g,h). dislike(k,l). like(k,m). dislike(p,o). like(o,n). at(P,T):- person(P), table(T), not not_at(P,T). not_at(P,T):- person(P), table(T), not at(P,T). :- table(T), nchairs(C), count({X,at(X,T)})>C. :- person(P), count({X,at(P,X)})!=1. :- table(T), like(P1,P2), at(P1,T), not at(P2,T). :- table(T), dislike(P1,P2), at(P1,T), at(P2,T).