Prolog notation [X,Y|Z ] indicates the same thing as X::Y::Z (in Cinnameg). It is a list that starts with X and Y, with the rest of the list being Z.
allsame([]). allsame([A]). allsame([A,A|R]) :- allsame([A|R]).
Notice that you only include axioms to say when a list makes the predicate true. You do not say what makes the predicate false.