Availability:built-in
copy_predicate_clauses(From, To) :-
        head(From, MF:FromHead),
        head(To, MT:ToHead),
        FromHead =.. [_|Args],
        ToHead =.. [_|Args],
        forall(clause(MF:FromHead, Body),
               assertz(MT:ToHead, Body)).
head(From, M:Head) :-
        strip_module(From, M, Name/Arity),
        functor(Head, Name, Arity).