The built-in predicate predicate_property/2 can be used to find the
properties of any predicate that is visible to a particular module.
To backtrack through all of the predicates imported by module m, use
| ?- predicate_property(m:Goal, imported_from(_)).
To backtrack through all of the predicates imported by module m1
from module m2, use
| ?- predicate_property(m1:Goal, imported_from(m2)).
For example, you can load the basics
module from the library and then remind yourself of
what predicates it defines like this:
| ?- compile(library(basics)).
% ... loading messages ...
yes
| ?- predicate_property(P, imported_from(basics)).
P = member(_2497,_2498) ;
P = memberchk(_2497,_2498) ;
.
.
.
This tells you what predicates are imported into the type-in module
from basics.
You can also find all imports into all modules using
| ?- predicate_property(M1:G, imported_from(M2)).
To backtrack through all of the predicates exported by module m, use
| ?- predicate_property(m:Goal, exported).