is_a_member_of(X,[X| _ ]).  

is_a_member_of(X,[_|Tail]):-  is_a_member_of(X,Tail).

is_a_member_of(_,[]):-	write('Not a member'),nl.


append_to([ ],X,X).  

append_to([A|B],Second,[A|C]):-	append_to(B,Second,C).



single_del(X,[X|Final],Final).

single_del(X,[H|Tail],[H|Result]):- single_del(X,Tail,Result).



multiple_del(_,[],[]).

multiple_del(X,[X|Tail],Final):-	multiple_del(X,Tail,Final).

multiple_del(X,[H|Tail],[H|Result]):-	multiple_del(X,Tail,Result).



reverse_it([ ],[ ]).

reverse_it([A|B],C):- 	reverse_it(B,D),
			append_to(D,[A],C).


biggest([X],X).

biggest([H|T],H):-	biggest(T,Tbig),
			H >= Tbig.

biggest([H|T],Tbig):-	biggest(T,Tbig),
			H < Tbig.





sublist_of(A,B):-	append_to(_,A,C),
			append_to(C,_,B).




/*n_th_element(item_number,list,the_item */

n_th_element(1,[H| _ ],H).

n_th_element(N,[ _ |Tail],Item):-	NewN is N -1,
					n_th_element(NewN,Tail,Item).



/* fib(term number, term value) */
/* e.g. 6th. term is 8 is equal to fib(6,8)  */

fib(1,1).
fib(2,1).
fib(N, Result) :-  N1 is N - 1,
		       N2 is N - 2,
		       fib(N1, Result1),
		       fib(N2, Result2),
		       Result is Result1 + Result2.





