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/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/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
.