The boot compiler (see -b option) does not support
the module system (yet). As large parts of the system are written in
Prolog itself we need some way to avoid name clashes with the user's
predicates, database keys, etc. Like Edinburgh C-Prolog Pereira,
1986 all predicates, database keys, etc. that should be
hidden from the user start with a dollar ($
) sign (see style_check/1).
The compiler uses the special functor $VAR$/1
while
analysing the clause to compile. Using this functor in a program causes
unpredictable behaviour of the compiler and resulting program.