Imported dynamic predicates may be asserted and retracted. For
example, suppose the following file is loaded via
:- module(m1, [f/1]). :- dynamic f/1. f(0).
f/1 can be manipulated as if it were defined in the current module.
| ?- 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).
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