Thanks to the module system, the user can normally redefine every global system built-in at any time. However, some built-ins are treated specially by the compiler. They are classified as protected and listed below. The compiler has to be informed of their redefinition before compiling the first call to such a predicate. A local-declaration at the beginning of the module is sufficient for this purpose. Otherwise, an attempt to redefine one of the following predicates results in an error message.
!/0
,/2 ->/2 :/2 ;/2 </2 =/2 =:=/2 =</2 ==/2 =\= /2
>/2 >=/2 \+ /1
\= /2
\== /2
add_attribute/2
|