% gprolog: nth % swi prolog: nth0 vicino(List, A, B) :- nth(IndexA, List, A), nth(IndexB, List, B), abs(IndexA - IndexB) =:= 1. chi(Luca, Aldo, Berto) :- vicino([4, 0, 2, 1, 3], Luca, Aldo), vicino([1, 2, 3, 0, 4], Berto, Aldo), \+ vicino([4, 0, 2, 1, 3], Luca, Berto), Luca =\= 0, Aldo =\= 0, Berto =\= 0, Luca =\= Aldo, Luca =\= Berto, Aldo =\= Berto.