/* The stack ADT. From Luger & Stubblefield */

empty_stack([]).

stack(Top, Stack, [Top|Stack]).   /* used for push, pop and peek */

member_stack(Element, Stack) :- 
	member(Element,Stack).

add_list_to_stack(List,Stack,Result) :- 
	append(List,Stack,Result).

reverse_print_stack(S) :- empty_stack(S).
reverse_print_stack(S) :- 
	stack(E,Rest,S),
	reverse_print_stack(Rest),
	write(E),nl.

member(H,[H|T]).
member(X,[_|T]) :-
	member(X,T).
