hanoi(s(0),A,B,C,M):-
	append(Z,[move(A,B)],M).
	
hanoi(s(N),A,B,C,M):-
	hanoi(N,A,C,B,M1),
	hanoi(N,C,B,A,M2),
	append(M1,[move(A,B)|M2],M).
	


/* un goal: abs(x,k(int),abs(y,k(char),x)) ha tipo? */
/* infer(empty,type(abs(x,k(int),x),X)) */
/* infer(G,type(x,int)) */	
/* 
una sessione:

| ?- infer(empty,type(abs(x,freccia(A,B),abs(y,k(char),app(x,y))),T)).

A = k(char)
T = freccia(freccia(k(char),B),freccia(k(char),B)) ? ;

no
*/

