The library(explain) describes prolog-terms. The most useful functionality is its cross-referencing function.
?- explain(subset(_,_)). "subset(_, _)" is a compound term Referenced from 2-th clause of lists:subset/2 Referenced from 46-th clause of prolog_xref:imported/3 Referenced from 68-th clause of prolog_xref:imported/3 lists:subset/2 is a predicate defined in /staff/jan/lib/pl-5.6.17/library/lists.pl:307 Referenced from 2-th clause of lists:subset/2 Possibly referenced from 2-th clause of lists:subset/2
Note that the help-tool for XPCE provides a nice graphical cross-referencer.
- explain(@Term) is det
- Write all information known about Term to the current output.
- explain(@Term, -Explanation) is nondet
- Explanation describes information about Term.
- Succeeds if we know anything about this predicate. Undefined predicates are considered `known' for this purpose, so we can provide referenced messages on them.
- explain_predicate(:Head, -Explanation) is det[private]