% ILP-503 (Prof. Dr. Silvio do Lago Pereira)

inicial([v,b,a,v,a]).

meta([a,a,b,v,v]).

ação(m21, [b,A,B,C,D], [A,b,B,C,D], 1).
ação(m31, [b,A,B,C,D], [B,A,b,C,D], 2).
ação(m41, [b,A,B,C,D], [C,A,B,b,D], 4).
ação(m51, [b,A,B,C,D], [D,A,B,C,b], 6).

ação(m12, [A,b,B,C,D], [b,A,B,C,D], 1).
ação(m32, [A,b,B,C,D], [A,B,b,C,D], 1).
ação(m42, [A,b,B,C,D], [A,C,B,b,D], 2).
ação(m52, [A,b,B,C,D], [A,D,B,C,b], 4).

ação(m13, [A,B,b,C,D], [b,B,A,C,D], 2).
ação(m23, [A,B,b,C,D], [A,b,B,C,D], 1).
ação(m43, [A,B,b,C,D], [A,B,C,b,D], 1).
ação(m53, [A,B,b,C,D], [A,B,D,C,b], 2).

ação(m14, [A,B,C,b,D], [b,B,C,A,D], 4).
ação(m24, [A,B,C,b,D], [A,b,C,B,D], 2).
ação(m34, [A,B,C,b,D], [A,B,b,C,D], 1).
ação(m54, [A,B,C,b,D], [A,B,C,D,b], 1).

ação(m15, [A,B,C,D,b], [b,B,C,D,A], 6).
ação(m25, [A,B,C,D,b], [A,b,C,D,B], 4).
ação(m35, [A,B,C,D,b], [A,B,b,D,C], 2).
ação(m45, [A,B,C,D,b], [A,B,C,b,D], 1).

h(S, H) :- meta(G), dif(S, G, H).

dif([], [], 0).
dif([X|A], [X|B], D) :- dif(A, B, D), !.
dif([_|A], [_|B], D) :- dif(A, B, C), D is C + 1.
