:- module(subst_vars, [subst_vars/2]).

subst_vars([A, B], _C) :-
    A = f(B),
    true.

subst_vars((A, B), _C) :-
    A = B,
    true.

subst_vars(A, B) :-
    A = f([/**/B, _C]),
    true.

subst_vars(A, B) :-
    f(A, 'b') = f(a, B),
    \+ A,
    \+ B.

subst_vars(A, B) :-
    B = [x|T],
    subst_vars(A, T).

a.

b.