En lógica , la negación , también llamada no lógico o complemento lógico , es una operación que convierte una proposición en otra proposición "no ", que significa " no es verdadero", escrita o . Se interpreta intuitivamente como verdadera cuando es falsa y falsa cuando es verdadera. [1] [2] La negación es, por lo tanto, un conectivo lógico unario . Puede aplicarse como una operación sobre nociones , proposiciones , valores de verdad o valores semánticos de manera más general. En lógica clásica , la negación se identifica normalmente con la función de verdad que convierte la verdad en falsedad (y viceversa). En lógica intuicionista , según la interpretación de Brouwer-Heyting-Kolmogorov , la negación de una proposición es la proposición cuyas pruebas son las refutaciones de .
Un operando de una negación es un negando , [3] o negatum . [3]
La negación clásica es una operación sobre un valor lógico , típicamente el valor de una proposición , que produce un valor verdadero cuando su operando es falso, y un valor falso cuando su operando es verdadero. Por lo tanto, si la proposición es verdadera, entonces (pronunciado "no P") sería falsa; y a la inversa, si es verdadera, entonces sería falsa.
La tabla de verdad de es la siguiente:
La negación se puede definir en términos de otras operaciones lógicas. Por ejemplo, se puede definir como (donde es consecuencia lógica y es falsedad absoluta ). A la inversa, se puede definir como para cualquier proposición Q (donde es conjunción lógica ). La idea aquí es que cualquier contradicción es falsa, y aunque estas ideas funcionan tanto en la lógica clásica como en la intuicionista, no funcionan en la lógica paraconsistente , donde las contradicciones no son necesariamente falsas. En la lógica clásica, también obtenemos otra identidad, se puede definir como , donde es disyunción lógica .
Algebraicamente, la negación clásica corresponde a la complementación en un álgebra de Boole , y la negación intuicionista a la pseudocomplementación en un álgebra de Heyting . Estas álgebras proporcionan una semántica para la lógica clásica e intuicionista.
La negación de una proposición p se expresa de distintas maneras, en distintos contextos de discusión y campos de aplicación. La siguiente tabla documenta algunas de estas variantes:
La notación es notación polaca .
En teoría de conjuntos , también se utiliza para indicar 'no está en el conjunto de': es el conjunto de todos los miembros de U que no son miembros de A.
Independientemente de cómo se escriba o simbolice , la negación puede leerse como "no es el caso que P ", "no es que P " o, normalmente, de forma más sencilla, como "no P ".
Como forma de reducir el número de paréntesis necesarios, se pueden introducir reglas de precedencia : ¬ tiene mayor precedencia que ∧, ∧ mayor que ∨ y ∨ mayor que →. Por ejemplo, es la abreviatura de
A continuación se muestra una tabla que muestra una precedencia de operadores lógicos comúnmente utilizada. [5]
En un sistema de lógica clásica , la doble negación, es decir, la negación de la negación de una proposición , es lógicamente equivalente a . Expresado en términos simbólicos, . En lógica intuicionista , una proposición implica su doble negación, pero no a la inversa. Esto marca una diferencia importante entre la negación clásica y la intuicionista. Algebraicamente, la negación clásica se denomina involución de período dos.
Sin embargo, en la lógica intuicionista , la equivalencia más débil sí se cumple. Esto se debe a que en la lógica intuicionista, es solo una abreviatura de , y también tenemos . Componer esa última implicación con la triple negación implica que .
Como resultado, en el caso proposicional, una oración es demostrable clásicamente si su doble negación es demostrable intuicionistamente. Este resultado se conoce como teorema de Glivenko .
Las leyes de De Morgan proporcionan una forma de distribuir la negación sobre la disyunción y la conjunción :
Sea la operación lógica xor . En álgebra de Boole , una función lineal es aquella que:
Si existe , , para todos .
Otra forma de expresarlo es que cada variable siempre hace una diferencia en el valor de verdad de la operación, o nunca hace una diferencia. La negación es un operador lógico lineal.
En álgebra de Boole , una función autodual es una función tal que:
para todos . La negación es un operador lógico dual.
En la lógica de primer orden , hay dos cuantificadores, uno es el cuantificador universal (significa "para todos") y el otro es el cuantificador existencial (significa "existe"). La negación de un cuantificador es el otro cuantificador ( y ). Por ejemplo, con el predicado P como " x es mortal" y el dominio de x como la colección de todos los humanos, significa "una persona x en todos los humanos es mortal" o "todos los humanos son mortales". La negación de este es , es decir "existe una persona x en todos los humanos que no es mortal", o "existe alguien que vive para siempre".
Hay varias formas equivalentes de formular reglas para la negación. Una forma habitual de formular la negación clásica en un contexto de deducción natural es tomar como reglas primitivas de inferencia la introducción de la negación (a partir de una derivación de a ambos y , inferir ; esta regla también se llama reductio ad absurdum ), la eliminación de la negación (a partir de y inferir ; esta regla también se llama ex falso quodlibet ), y la eliminación de la doble negación (a partir de inferir ). Las reglas para la negación intuicionista se obtienen de la misma manera, pero excluyendo la eliminación de la doble negación.
La introducción de la negación establece que si se puede extraer un absurdo como conclusión de entonces no debe ser el caso (es decir, es falso (clásicamente) o refutable (intuicionistamente) o etc.). La eliminación de la negación establece que cualquier cosa se sigue de un absurdo. A veces, la eliminación de la negación se formula utilizando un signo de absurdo primitivo . En este caso, la regla dice que de y se sigue un absurdo. Junto con la eliminación de la doble negación, se puede inferir nuestra regla formulada originalmente, es decir, que cualquier cosa se sigue de un absurdo.
Por lo general, la negación intuicionista de se define como . Entonces, la introducción y eliminación de la negación son simplemente casos especiales de introducción de implicación ( prueba condicional ) y eliminación ( modus ponens ). En este caso, también se debe agregar como regla primitiva ex falso quodlibet .
Al igual que en matemáticas, la negación se utiliza en informática para construir enunciados lógicos.
if ( ! ( r == t )) { /*...declaraciones ejecutadas cuando r NO es igual a t...*/ }
El signo de exclamación " !
" significa NOT lógico en B , C y lenguajes con una sintaxis inspirada en C como C++ , Java , JavaScript , Perl y PHP . " NOT
" es el operador utilizado en ALGOL 60 , BASIC y lenguajes con una sintaxis inspirada en ALGOL o BASIC como Pascal , Ada , Eiffel y Seed7 . Algunos lenguajes (C++, Perl, etc.) proporcionan más de un operador para la negación. Algunos lenguajes como PL/I y Ratfor lo utilizan ¬
para la negación. La mayoría de los lenguajes modernos permiten que la declaración anterior se acorte de if (!(r == t))
a if (r != t)
, lo que permite a veces, cuando el compilador/intérprete no puede optimizarla, programas más rápidos.
En informática también existe la negación bit a bit . Esta toma el valor dado y cambia todos los 1 binarios a 0 y los 0 a 1. Véase operación bit a bit . Esto se utiliza a menudo para crear complemento a uno o " ~
" en C o C++ y complemento a dos (simplemente simplificado a " -
" o el signo negativo ya que esto es equivalente a tomar el valor negativo aritmético del número) ya que básicamente crea el opuesto (valor negativo equivalente) o complemento matemático del valor (donde ambos valores se suman crean un todo).
Para obtener el valor absoluto (equivalente positivo) de un entero dado, lo siguiente funcionaría ya que " -
" lo cambia de negativo a positivo (es negativo porque " x < 0
" da como resultado verdadero)
unsigned int abs ( int x ) { si ( x < 0 ) devuelve - x ; de lo contrario devuelve x ; }
Para demostrar la negación lógica:
unsigned int abs ( int x ) { if ( ! ( x < 0 )) devuelve x ; de lo contrario devuelve - x ; }
Invertir la condición y revertir los resultados produce un código que es lógicamente equivalente al código original, es decir, tendrá resultados idénticos para cualquier entrada (dependiendo del compilador utilizado, las instrucciones reales realizadas por la computadora pueden diferir).
En C (y algunos otros lenguajes derivados de C), la doble negación ( !!x
) se utiliza como expresión idiomática para convertir x
un valor booleano canónico, es decir, un entero con un valor de 0 o 1 y ningún otro. Aunque cualquier entero distinto de 0 es lógicamente verdadero en C y 1 no es especial en este sentido, a veces es importante asegurarse de que se utilice un valor canónico, por ejemplo, para imprimir o si el número se utiliza posteriormente para operaciones aritméticas. [6]
La convención de usar para significar negación aparece ocasionalmente en el lenguaje escrito común, como la jerga!
informática para no . Por ejemplo, la frase significa "no votar". Otro ejemplo es la frase que se usa como sinónimo de "no tener ni idea" o "desorientado". [7] [8]!voting
!clue
En la semántica de Kripke, donde los valores semánticos de las fórmulas son conjuntos de mundos posibles , la negación puede interpretarse como complementación teórica de conjuntos [ cita requerida ] (véase también semántica de mundos posibles para más información).