<div class="notebook"> <div class="nb-cell program" name="p2"> replace(Term,With,Term,With) :- !. replace(Find,Replacement,Term,Result) :- Term =.. [Functor|Args], maplist(replace(Find,Replacement),Args,ReplacedArgs), Result =.. [Functor|ReplacedArgs]. </div> <div class="nb-cell query" name="q1"> replace(->(A,B), not(\/(A,B)), f3( ->(->(->(x, z), ->(->(y, z), ->(\/(x, y), z))), ->(\/(x, y), z) )), Result ) </div> <div class="nb-cell program" name="p1"> replace(Find,Replacement,Term,With) :- \+ Find \= Term, !, copy_term(Find+Replacement, Term+With0), replace_args(Find,Replacement,With0,With). replace(Find,Replacement,Term,Result) :- replace_args(Find,Replacement,Term,Result). replace_args(Find,Replacement,Term,Result) :- Term =.. [Functor|Args], maplist(replace(Find,Replacement),Args,ReplacedArgs), Result =.. [Functor|ReplacedArgs]. </div> <div class="nb-cell query" name="q2"> replace(->(A,B), not(\/(A,B)), f3( ->(->(->(x, z), ->(->(y, z), ->(\/(x, y), z))), ->(\/(x, y), z) )), Result ) </div> </div>