En programación informática , un predicado opaco es un predicado , una expresión que se evalúa como "verdadero" o "falso", para el cual el programador conoce el resultado a priori , pero que, por diversas razones, aún necesita evaluarse en tiempo de ejecución . [1] Los predicados opacos se han utilizado como marcas de agua , ya que serán identificables en el ejecutable de un programa. [2] También se pueden utilizar para evitar que un optimizador demasiado entusiasta optimice una parte de un programa. Otro uso es ofuscar el control o el flujo de datos de un programa para dificultar la ingeniería inversa .