A declaration of the form
:- pragma no_determinism_warning(Name/Arity).
tells the compiler not to generate any warnings that the determinism declarations of procedures of the predicate or function with name Name and arity Arity are not as tight as they could be.
‘pragma no_determinism_warning’ declarations are intended for use
in situations in which the code of a predicate has one determinism,
but the declared determinism of the procedure must be looser
due to some outside requirement.
One such situation is when a set of procedures are all possible values
of the same higher-order variable,
which requires them to have the same argument types, modes, and determinisms.
If (say) most of the procedures are
but some are
erroneous (that is, they always throws an exception),
the procedures that are declared
but whose bodies have determinism
will get a warning saying their determinism declaration could be tighter,
unless the programmer specifies this pragma for them.