print_list([]) :-!. print_list(L) :- L=[H|T], write(H),nl, print_list(T). rprint_list([]) :- !. rprint_list([H|T]) :- rprint_list(T), write(H),nl. exist(X,[H|_]) :- X=H ,!. exist(X,[_|T]) :- exist(X,T). add_to_front(X,L1,L2) :- not(exist(X,L1)), L2=[X|L1],!. add_to_front(X,L1,L1). list_length([],0):- !. list_length([_|T],R) :- list_length(T,V), R is V+1. max_element([H|T],R) :- max_element2([H|T],-1,R). max_element2([],V,V) :- !. max_element2([H|T],V,R) :- H > V, max_element2(T,H,R), !. max_element2([_|T],V,R) :- max_element2(T,V,R).