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.