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
- Give an explanation on Term. The argument may be any Prolog data
object. If the argument is an atom, a term of the form
Name/Arityor a term of the form
Module:Name/Arity, explain/1 describes the predicate as well as possible references to it. See also gxref/0.
- explain(@Term, -Explanation) is nondet
- True when Explanation is an explanation of 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]