replaceall(_置換候補述語名,Atom,X) :-
  decompcons(Atom,Chars),
  replaceall_1(_置換候補述語名,Chars,Y),
  concat_atom(Y,X).
replaceall_1(_,[],[]) :- !.
replaceall_1(_置換候補述語名,Chars,X) :-
  functor(Q,_置換候補述語名,3),
  arg(1,Q,Chars),
  arg(2,Q,CharsR),
  arg(3,Q,CharsS),
  call(Q),!,
  replaceall_1(_置換候補述語名,CharsR,Y),
  append(CharsS,Y,X).
replaceall_1(_置換候補述語名,[A|R1],[A|R2]) :-
  replaceall_1(_置換候補述語名,R1,R2).
遅いけれどこれは便利。以下のように定義(consult)する。mysという名前は任意。
mys([な,ら,び|R],R,[リ,ス,ト]).
mys([l,i,s,t|R],R,[小,文,字,で,l,i,s,t]).

?- replaceall(mys,ならびとかlistと書いてある,X).
X = 'リストとか小文字でlistと書いてある'