m1 and it has already imported a predicate with the same name and
arity from a module m2;
m1 and it already contains a definition of a predicate with the
same name and arity; or
Whenever a name clash arises, a message is displayed beginning with the words `NAME CLASH'. The user is asked to choose from one of several options; for example,
NAME CLASH: f/3 is already imported into module user
from module m1;
do you want to override this definition with
the one in m2? (y,n,p,s,a or ?)
The meanings of the four recognized replies are as follows:
f/3 from m1 and use
the new definition of f/3 from m2 instead.
f/3 from m1 and ignore the
new definition of f/3 from m2.
f/3 and of
all subsequent predicate definitions in m1 that clash during the current load of m2.
Instead, use the new definitions in m2. When the p option is chosen,
predicates being loaded from m1 into m2 will cause
no `NAME CLASH' messages for the remainder of the load, though
clashes with predicates from other modules will still generate such messages.
f/3 and of
all subsequent predicate definitions in m1 that clash during the current load of m2.
Instead, use the old definitions in m2. When the s option is chosen,
predicates being loaded from m1 into m2 will cause
no `NAME CLASH' messages for the remainder of the load, though
clashes with predicates from other modules will still generate such messages.