Disyunción

Disyunción
O

diagrama de Venn
Definición
mesa de la verdad
puerta lógica
formas normales
Disyuntivo
conjuntival
Polinomio de Zhegalkin
Membresía en clases precompletas
Guarda 0
Guarda 1
Monótono
lineal No
Auto-dual No

Disyunción (del lat.  disjunctio  - "disyunción"), adición lógica , OR lógico , incluyendo OR ; a veces simplemente OR  es una operación lógica , en su aplicación lo más cercana posible a la unión “o” en el sentido de “o esto, o aquello, o ambos a la vez” [1] .

Una disyunción puede ser binaria (que tiene dos operandos) o -aria (que tiene operandos) para un .

La entrada puede ser prefijo  : el signo de operación viene antes de los operandos ( notación polaca ), infijo  : el signo de operación viene entre los operandos, o postfijo  : el signo de operación viene después de los operandos. Cuando el número de operandos es más de dos, las notaciones de prefijo y posfijo son más económicas.

Notación

La notación más común para la operación de disyunción es:

|| |

Al mismo tiempo , la notación recomendada por la norma internacional ISO 31-11 es la más utilizada en las matemáticas modernas y la lógica matemática [2] . No apareció de inmediato: George Boole , quien sentó las bases para la aplicación sistemática del método simbólico a la lógica, no trabajó con la disyunción (usando en su lugar la disyunción estricta , que denotó con un signo + ), y William Jevons propuso el signo . por disyunción . Ernst Schroeder y P. S. Poretsky volvieron a utilizar el signo + , pero en relación con la disyunción habitual [3] . El símbolo como designación de la disyunción aparece por primera vez en el artículo "Lógica matemática basada en la teoría de los tipos" [4] de Bertrand Russell (1908); se deriva de lat. vel , que significa "o" [5] [6] . ·|·  

La notación ⋁para la disyunción también se usó en los primeros lenguajes de programación Algol 60 [7] . Sin embargo, debido a la ausencia de un carácter correspondiente en los conjuntos de caracteres estándar (por ejemplo, en ASCII o EBCDIC ) utilizados en la mayoría de las computadoras , los lenguajes de programación más utilizados proporcionaron otras notaciones para la disyunción. Así, en Fortran IV y PL/I , respectivamente, se utilizaron las designaciones .OR.y |(con la posibilidad de sustituir esta última por la palabra clave OR ) [8] ; la palabra reservada [9] [10] se usa en Pascal y Ada ; los lenguajes C y C++ utilizan la notación para la disyunción bit a bit y para la disyunción lógica [11] ). or|||

Finalmente, bajo el ordenamiento natural de los valores de verdad de la lógica bivaluada (cuando se supone que ), resulta que Así, la disyunción resulta ser un caso especial de la operación de cálculo del máximo ; esto abre la forma más natural de definir la operación de disyunción en sistemas de lógica polivalente [12] [13] .

Álgebra booleana

La función lógica MAX en lógica de dos valores (binaria) se llama disyunción ( "O" lógico , suma lógica o simplemente "O" ). El resultado es igual al operando más grande.

En álgebra booleana , una disyunción es una función de dos, tres o más variables (también son los operandos de una operación, también son los argumentos de una función). Por tanto, el resultado es , si todos los operandos son iguales ; en todos los demás casos el resultado es .

mesa de la verdad

Tabla de verdad para la disyunción ternaria (tres operandos):

0 0 0 0
0 0 una una
0 una 0 una
0 una una una
una 0 0 una
una 0 una una
una una 0 una
una una una una

Lógica multivaluada

La operación, llamada disyunción en lógica binaria , se llama máximo en lógica multivaluada : , donde , a  es el valor de la lógica. Otras opciones son posibles[ ¿Qué? ] . Por regla general, intentan mantener la compatibilidad con el álgebra booleana para los valores de los operandos .

El nombre de esta operación máxima tiene sentido en lógicas con cualquier valor, incluso en lógica binaria, y los nombres disyunción , "O" lógico , adición lógica y simplemente "O" son característicos de la lógica binaria y se usan con menos frecuencia cuando se pasa a lógicas multivaluadas.

Lógica clásica

En el cálculo proposicional clásico, las propiedades de una disyunción se definen mediante axiomas . El cálculo proposicional clásico puede estar dado por diferentes sistemas de axiomas, y algunos de ellos describirán las propiedades de la disyunción. Una de las opciones más comunes incluye 3 axiomas para la disyunción:

Estos axiomas se pueden usar para probar otras fórmulas que contienen la operación de disyunción. Tenga en cuenta que en el cálculo proposicional clásico, el resultado no se calcula a partir de los valores de los operandos (como en el álgebra booleana), sino que se requiere probar la fórmula como un todo en base a axiomas y reglas de inferencia.

Circuitos

La regla mnemotécnica para la disyunción con cualquier número de entradas es: La salida será:

Teoría de conjuntos

En términos de teoría de conjuntos , la disyunción es análoga a la operación de unión .

Programación

En los lenguajes informáticos, hay dos variantes principales de disyunción: "O" lógico y "OR" bit a bit. Por ejemplo, en C/C++/Perl/PHP, el "O" lógico se indica con el símbolo "||" y el "O" bit a bit con el símbolo "|". En los lenguajes Pascal/Delphi, ambos tipos de disyunción se denotan con la palabra clave " o " , y el resultado de la operación está determinado por el tipo de los operandos. Si los operandos son de tipo booleano (por ejemplo, Boolean), se realiza una operación lógica, si un número entero (por ejemplo, Byte) es una operación bit a bit.

El "OR" lógico se usa en operadores de salto condicional o en casos similares cuando se requiere un resultado o . Por ejemplo:

si ( un || b ) { /* algunas acciones */ };

El resultado será igual si ambos operandos son iguales o . En cualquier otro caso, el resultado será .

En este caso, se aplica la convención estándar: si el valor del operando izquierdo es igual a , entonces el valor del operando derecho no se calcula (en su lugar, puede haber una fórmula compleja). Esta convención acelera la ejecución del programa y es una técnica útil en algunos casos. El compilador Delphi admite una directiva especial que incluye

{$B-}

o apagar

{$B+}

comportamiento similar. Por ejemplo, si el operando izquierdo verifica si el operando derecho necesita ser evaluado:

si ( a == NULO || a -> x == 0 ) { /* algunas acciones */ };

En este ejemplo, debido a la comprobación del operando izquierdo, nunca se producirá una desreferencia de puntero nulo en el operando derecho.

El OR bit a bit realiza la operación de álgebra booleana habitual en todos los bits del operando izquierdo y derecho en pares. Por ejemplo,

si
un =
b=
después
a O b =

Relación con el lenguaje natural

La similitud entre la disyunción y la conjunción "o" en el lenguaje natural se señala a menudo cuando se usa en el sentido de "o esto, o aquello, o ambos a la vez". En los documentos legales, a menudo escriben: "y (o)", a veces "y / o", que significa "esto o aquello, o ambos a la vez". El enunciado compuesto "A y/o B" se considera falso cuando ambos enunciados, A y B, son falsos; en caso contrario, el enunciado compuesto es verdadero. Esto corresponde exactamente a la definición de disyunción en el álgebra booleana, si "verdadero" se denota por , y "falso" por .

La ambigüedad del lenguaje natural radica en el hecho de que la unión "o" se usa en dos sentidos: ya sea para denotar disyunción, luego para otra operación: disyunción estricta ( "O" exclusivo ).

Véase también

Notas

  1. Gutnikov V. S. . Electrónica integrada en instrumentos de medida. - L. : Energía , 1974. - 144 p.  - S. 14-16.
  2. Kondakov, 1975 , pág. 534.
  3. Styazhkin N. I. . Formación de la lógica matemática. — M .: Nauka , 1967. — 508 p.  - S. 320, 349, 352, 368.
  4. Russell B.  Lógica matemática basada en la teoría de tipos  // American Journal of Mathematics . - 1908. - Vol. 30, núm. 3.- Pág. 222-262.
  5. Primeros usos de los símbolos de la teoría y la lógica de conjuntos . // Sitio web Páginas web de Jeff Miller . Consultado el 5 de febrero de 2016. Archivado desde el original el 20 de febrero de 1999.
  6. Kondakov, 1975 , pág. 149-150.
  7. Kondakov, 1975 , pág. treinta.
  8. Pratt T. Lenguajes de programación: desarrollo e implementación. — M .: Mir , 1979. — 574 p.  - S. 352, 439.
  9. Grogono P. . Programación en Pascal. — M .: Mir , 1982. — 384 p.  - S. 51.
  10. Wegner P. . Programación en lenguaje Ada. — M .: Mir , 1983. — 240 p.  - S. 68.
  11. Ellis M. ,  Stroustrup B. Una guía de referencia del lenguaje de programación C++ con comentarios. — M .: Mir , 1992. — 445 p. — ISBN 5-03-002868-4 .  - S. 65, 86-87.
  12. Yablonsky S. V.  . Introducción a las matemáticas discretas. — M .: Nauka , 1979. — 272 p.  - S. 9-10, 37.
  13. Rvachev V. L.  . Teoría de las funciones R y algunas de sus aplicaciones. - Kiev: Naukova Dumka , 1982. - 552 p.  - S. 38, 66.

Literatura