replace('',_,[]) :- !.
replace(Atom,Divs,X) :-
    sa(Atom,AtomL,Divs,Div,AtomR),
    replace(AtomL,Divs,LL),
    replace(AtomR,Divs,LR),
    append(LL,[Div|LR],X).
 Atom,Divs,[Atom]) :-
    not(sa_1(Atom,AtomL,Divs,Div,AtomR)).

sa_1(Atom,AtomL,Divs,Div2,AtomR) :-
    member([Div,Div2],Divs),
    sub_atom(Atom,Sp,Len,RLen,Div),
    sub_atom(Atom,0,Sp,_,AtomL),
    sub_atom(Atom,Sp + Len,RLen,_,AtomR).
これで置換の定義ができました。