Operações Lógicas

Jan 26 2023
Existe uma equivalência entre operações lógicas e operações sobre conjuntos. Por exemplo, considere a seguinte declaração lógica: “Está chovendo implica que há nuvens no céu.

Existe uma equivalência entre operações lógicas e operações sobre conjuntos. Por exemplo, considere a seguinte declaração lógica:

“Está chovendo implica que há nuvens no céu.”

Não haveria chuva sem nuvens. Podemos pegar dois conjuntos de localizações, “o conjunto de locais onde está chovendo” e “o conjunto de locais onde há nuvens”, e mostrar que o primeiro conjunto está estritamente incluído no segundo conjunto.

Da mesma forma na ciência da computação, a inferência de tipos depende de operações lógicas entre tipos e um tipo pode ser considerado como o conjunto de todos os objetos que pertencem a esse tipo (se houver pelo menos um desses objetos, você pode dizer que o tipo é preenchido, caso contrário , é vazio. )

A inferência de tipos usa provas lógicas e visa encontrar tipos populados , pois os programas manipulam objetos dos quais queremos encontrar o tipo.

Por causa da equivalência acima, estarei ilustrando operações lógicas usando conjuntos no espírito de Boole . Cada operação em conjuntos será expressa usando um conector lógico e uma notação lógica.

Para a discussão, usarei dois intervalos sobre números inteiros A e B como conjuntos de entrada.

R: 0…10

B: 5…18

Complemento

Conector: não

O resultado contém todos os elementos que não estão em A .

¬A: …-1, 11…

União

Conector: ou

O resultado contém todos os elementos que estão em A ou B .

A ∨ B: 0…18

Interseção

Conector: e

O resultado contém apenas os elementos que estão em A e em B .

A ∧ B: 5…10

União Disjuntiva

Conector: senão (xor)

O resultado contém os elementos que estão apenas em A senão estão apenas em B .

A ⊕ B: 0…4, 11…18

Implicação

Conector: somente se (implica)

O resultado contém os elementos que estão em A somente se estiverem em B .

Isso é um pouco mais difícil de entender do que as operações anteriores. É fácil ver que o resultado contém a interseção dos dois conjuntos: seus elementos estão em A e em B , o que satisfaz a condição.

Mas e o resto de B ?

Você pode ver que os elementos de B fora da interseção não estão em A . Isso significa que eles satisfazem a condição? Depende de como você lê:

  • O resultado contém os elementos que estão em A ( somente se estiverem em B ).
  • O resultado contém os elementos (que estão em A somente se estiverem em B ).

A ⇒ B: …-1, 5…

Outro exemplo seria “Chove só se tiver nuvens”. Se existe um lugar onde chove mas não há nuvens então a condição não é satisfeita . A sentença não condiciona lugares onde não está chovendo, então podem estar nublados ou não, tudo bem.

Diferença

Conector: mas não

O resultado contém apenas os elementos que estão em A , mas não em B .

Curiosamente, não há leitura especial desta vez, mas a diferença é na verdade o complemento da implicação! Observe também que a ordem de A e B é importante.

A - B: 0…4