Member/2 it's the most basic relation in Prolog between a list and its elements. Here it shows the ability of the underlying engine to bind variables while searching for a solution.
Your data yields
?- predicate((einstein,_,_),(_,87,_),(_,23,_), [E]).
E = (einstein, 87, _G3908) ;
E = (einstein, 23, _G3908).
you say "it says that M1 is either M2 or M3, but not both" but I think that's your responsibility, as a caller of this predicate. If you've supplied equal M2 and M3, evidently you wanted them equal. And if you've supplied them different, well, that's what they are.
Prolog is very different from other programming languages. Your attempt is not unreasonable, but would read better as:
This says the same thing, really, but this version draws attention to the fact that we're not doing anything with the fourth argument, which in this formulation could be any single-element list. Odds are good this isn't what you meant.