>>105
replaceall/1の中にでてくる任意述語名だが、3引数の所を
4引数にして
   ......
  functor(Q,_置換候補述語名,4),
  arg(1,Q,Chars),
  arg(2,Q,CharsR),
  arg(3,Q,CharsS0),
  arg(4,Q,CharsS),
  ....
とするべきだろう。mys/3はmys/4となり、置換対象文字列のリストが
第三引数にくる。履歴などを残すためにこのような情報が必要になることがある。

mys([な,ら,び|R],R,[な,ら,び],[リ,ス,ト]).
....