Zastępowanie Prologu

Jak mogę zastąpić listę inną listą zawierającą zmienną do zastąpienia. na przykład

rep([x, d, e, z, x, z, p], [x=z, z=x, d=c], R).
R = [z, c, e, x, z, x, p]

x do z i z nie zmienia się po jego zastąpieniu.

jak dotąd zrobiłem tylko ten bez listy

rep([], _, []).
rep(L1, H1=H2, L2) :-
   rep(L1, H1, H2, L2).

rep([],_,_,[]).
rep([H|T], X1, X2, [X2|L]) :-
   H=X1,
   rep(T,X1,X2,L),
   !.
rep([H|T],X1,X2,[H|L]) :-
   rep(T,X1,X2,L).

questionAnswers(6)

yourAnswerToTheQuestion