SWI-Prolog 7.4.2 Reference Manual: Section 6.10

## 6.10 Reserved Modules and using the `user' module

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.