/* リスト Ys が、リスト Xs 内のすべての X の出現を Y に置換した結果である場合、substitute(X,Y,Xs,Ys) は真です。
これは私がこれまでに持っているものです:
subs(_,_,[],[]).
subs(X,Y,[X|L1],[Y|L2]):- subs(X,Y,L1,L2).
subs(X,Y,[H|L1],[H|L2]):- X\=H, not(H=[_|_]), subs(X,Y,L1,L2).
subs(X,Y,[H|_],[L2]):- X\=H, H=[_|_], subs(X,Y,H,L2).
私のコードは、ネストされたリストに続く要素を省略することを除いて機能します。例えば:
?- subs(a,b,[a,[a,c],a],Z).
Z = [b, [b, c]] .
このプログラムには何を追加すればよいですか?