The next transformation step transforms clauses represented as
into
clauses (only information contained
in
is needed).
clauses are
RELFUN
clauses with the following features:
For our example, the following clauses created:
fac/2-1(Arg#1) :- equal(0, Arg#1) & 1. fac/2-1(Arg#1) :-& *(Arg#1, fac/2-1(-(Arg#1, 1))). f/2-1(Arg#1) :- structp(Arg#1), equal(s, functor(Arg#1)), equal(2, arity(Arg#1)), X is elt(Arg#1, 0), equal(X, fac/2-1(X)), Y is elt(Arg#1, 1), equal(X, -(Y, X)), equal(Y, fac/2-1(Y)) & struct(u, Arg#1, Arg#1). f/2-1(Arg#1) :-& cons(Arg#1, cons(Arg#1, nil)).