% 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.