Imported dynamic predicates may be asserted and retracted. For
example, suppose the following file is loaded via use_module/1:
:- module(m1, [f/1]).
:- dynamic f/1.
f(0).
Then f/1 can be manipulated as if it were defined in the current module.
For example,
| ?- clause(f(X), true).
X = 0
The built-in predicate listing/[0,1] distinguishes predicates that are
imported into the current source module by prefixing each clause with the
module name. Thus,
| ?- listing(f).
m1:f(0).
However, listing/[0,1] does not prefix clauses with their module if they are
defined in the source module itself. Note that
| ?- listing.
can be used to see all the dynamic predicates defined in or imported into the current type-in module. And
| ?- listing(m1:_).
can be used to see all such predicates that are defined in or imported
into module m1.
See mpg-ref-listing.