Redefinable predicates exist to enable you to embed Prolog code
within a program in another language. They have default definitions
that are fairly complex. Source is provided for them. They are all
in modules beginning with QU
. Sophisticated users may wish to
provide alternative definitions of these modules. You can redefine
embeddable predicates at run-time too, by simply compiling new
versions of the QU_ module-file (see fli-emb).
The key distinction is that it only makes sense to redefine embeddable predicates totally and globally. Hook predicates, on the other hand, can be extended piecemeal, and need not have any definition at all.