Operators (section 4.25) 
are local to modules, where the initial table behaves as if it is copied 
from the module user (see
section 6.10). A 
specific operator can be disabled inside a module using :- op(0, 
Type, Name). Inheritance from the public table can be restored 
using :- op(-1, Type, Name).
In addition to using the op/3 
directive, operators can be declared in the module/2 
directive as shown below. Such operator declarations are visible inside 
the module, and importing such a module makes the operators visible in 
the target module. Exporting operators is typically used by modules that 
implement sub-languages such as chr (see
chapter 8). The example below 
is copied from the library
library(clpfd).
:- module(clpfd,
          [ op(760, yfx, #<==>),
            op(750, xfy, #==>),
            op(750, yfx, #<==),
            op(740, yfx, #\/),
            ...
            (#<==>)/2,
            (#==>)/2,
            (#<==)/2,
            (#\/)/2,
            ...
          ]).