Operaciones lógicas
Existe una equivalencia entre operaciones lógicas y operaciones sobre conjuntos. Por ejemplo, tome la siguiente declaración lógica:
“Está lloviendo implica que hay nubes en el cielo”.
No habría lluvia sin nubes. Podemos tomar dos conjuntos de ubicaciones, "el conjunto de lugares donde llueve" y "el conjunto de lugares donde hay nubes", y mostrar que el primer conjunto está estrictamente incluido en el segundo conjunto.
De manera similar, en informática, la inferencia de tipos se basa en operaciones lógicas entre tipos y un tipo puede considerarse como el conjunto de todos los objetos que pertenecen a ese tipo (si hay al menos uno de esos objetos, puede decir que el tipo está poblado; de lo contrario , es vacío. )
La inferencia de tipos utiliza pruebas lógicas y tiene como objetivo encontrar tipos poblados , ya que los programas manejan objetos de los que queremos encontrar el tipo.
Debido a la equivalencia anterior, ilustraré operaciones lógicas usando conjuntos en el espíritu de Boole . Cada operación sobre conjuntos se expresará mediante un conector lógico y una notación lógica.
Para la discusión usaré dos intervalos sobre los números enteros A y B como conjuntos de entrada.
R: 0…10
B: 5…18
Complementar
Conector: no
El resultado contiene todos los elementos que no están en A.
¬R: …-1, 11…
Unión
Conector: o
El resultado contiene todos los elementos que están en A o B.
A ∨ B: 0…18
Intersección
Conector: y
El resultado contiene solo los elementos que están tanto en A como en B.
A∧B: 5…10
unión disyuntiva
Conector: más (xor)
El resultado contiene los elementos que están solo en A, de lo contrario, solo están en B.
A ⊕ B: 0…4, 11…18
Implicación
Conector: solo si (implica)
El resultado contiene los elementos que están en A solo si están en B.
Eso es un poco más difícil de entender que las operaciones anteriores. Es fácil ver que el resultado contiene la intersección de los dos conjuntos: sus elementos están en A y en B , lo que satisface la condición.
Pero ¿qué pasa con el resto de B ?
Puedes ver que los elementos de B fuera de la intersección no están en A. ¿Significa eso que cumplen la condición? Depende de cómo lo leas:
- El resultado contiene los elementos que están en A ( solo si están en B ).
- El resultado contiene los elementos (que están en A solo si están en B ).
A ⇒ B: …-1, 5…
Otro ejemplo sería “Llueve solo si hay nubes”. Si existe un lugar donde llueve pero no hay nubes entonces la condición no se cumple . La sentencia no pone como condición los lugares donde no llueva, por lo que pueden estar nublados o no, cualquiera de los dos está bien.
Diferencia
Conector: pero no
El resultado contiene solo los elementos que están en A pero no en B.
Curiosamente, no hay una lectura especial esta vez, ¡pero la diferencia es en realidad el complemento de la implicación! También tenga en cuenta que el orden de A y B es importante.
A-B: 0…4

![¿Qué es una lista vinculada, de todos modos? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































