%member( X, [X | _ ] ).
%member( X, [_ | Y]) :- member(X, Y).

notadjacent(X, Y) :- X > Y+1.
notadjacent(X, Y) :- X < Y-1.

adjacent(X, Y) :- X =:= Y+1.
adjacent(X, Y) :- X =:= Y-1.

floors( [ floor(_, 5), 
					floor(_, 4), 
					floor(_, 3), 
					floor(_, 2),
					floor(_, 1) ] ).

building( Floors ) :- floors( Floors ), 
	member( floor(baker, B), Floors ), B \= 5,
	member( floor(cooper, C), Floors ), C \= 1,
	member( floor(fletcher, F), Floors ), F \= 1, F \= 5,
	member( floor(miller, M), Floors ), M > C,
	member( floor(smith, S), Floors ), notadjacent(S, F),
	notadjacent(F, C ).

