As mentioned above, SWI-Prolog contains two special modules. The
first one is the module system
. This module contains all
built-in predicates. Module system
has no import module.
The second special module is the module user
. This module
forms the initial working space of the user. Initially it is empty. The
import module of module user
is system
, making
all built-in predicates available.
All other modules import from the module user
. This
implies they can use all predicates imported into user
without explicitly importing them. If an application loads all modules
from the
user
module using use_module/1,
one achieves a scoping system similar to the C-language, where every
module can access all exported predicates without any special
precautions.