In computer programming
, an opaque predicate
is a predicate
—an expression that evaluates to either "true" or "false"—for which the outcome is known by the programmer a priori
, but which, for a variety of reasons, still needs to be evaluated at run time
. Opaque predicates have can be used as watermarks
, as it will be identifiable in a program's executable. They can also be used to prevent an overzealous optimizer
from optimizing away a portion of a program.