Lógica ternária

Lógica ternária (ou lógica trivalente) refere-se a qualquer sistema lógico polivalente em que há três valores verdade indicando , e algum terceiro valor. Em contraste, a forma mais comum de lógica é bivalente (como a lógica booleana) e fornece somente e .

Definições

editar

Representação de valores

editar

Assim como na lógica bivalente, os valores verdade da lógica ternária podem ser representados numericamente usando diversas representações do sistema ternário. Exemplos comuns incluem:

  • 1 para , 2 para e 0 para , ou .[1]
  • 0 para , 1 para e um não-inteiro como # ou ½.[2]
  • −1 para , +1 para e um terceiro valor, o que pode ser simplificado para somente −, + e 0, respectivamente.[3]

Tabela verdade

editar

Segue abaixo uma tabela verdade mostrando operações lógicas para a lógica de Kleene.

verdadeiroverdadeiroverdadeiroverdadeirofalso
verdadeirodesconhecidoverdadeirodesconhecido
verdadeirofalsoverdadeirofalso
desconhecidoverdadeiroverdadeirodesconhecidodesconhecido
desconhecidodesconhecidodesconhecidodesconhecido
desconhecidofalsodesconhecidofalso
falsoverdadeiroverdadeirofalsoverdadeiro
falsodesconhecidodesconhecidofalso
falsofalsofalsofalso

Na tabela verdade acima, significa um estado contendo ou ou , mas não há conhecimento sobre qual dos dois estados está representado. Algumas operações conseguem ser aplicadas envolvendo sem que haja ambiguidade. Por exemplo, dado que tanto quanto resultam em , também é .

Aplicações de bancos de dados

editar

A linguagem SQL implementa lógica ternária como uma forma de lidar com o conteúdo nulo de campos de registros, utilizando NULL para representar valores em falta num banco de dados. Se um campo não possui um valor definido, o SQL assume NULL, mas esse valor não é gravado no banco de dados. Entretanto, um valor em falta é diferente dum valor numérico zero (0) ou de uma cadeia de caracteres vazia (""). A comparação com NULL resulta num estado chamado UNKNOWN. Por exemplo, a expressão SQL "Cidade = 'Porto Alegre'" retorna FALSE para um registro contendo "Rio de Janeiro" no campo Cidade, mas retorna UNKNOWN para um registro contendo NULL no mesmo campo.

Usando a lógica ternária, o SQL consegue usar UNKNOWN para resolver expressões booleanas. Considerando a expressão "Cidade = 'Porto Alegre' OR Balanco < 0.0". Essa expressão retorna TRUE para qualquer registro contendo um valor negativo no campo Balanco. A mesma expressão retorna TRUE para qualquer registro contendo "Porto Alegre" no campo Cidade. Já FALSE é retornado somente para um registro contendo explicitamente uma cadeia diferente de "Porto Alegre" e cujo campo Balanco é explicitamente não negativo. Em qualquer outro caso, o retorno é UNKNOWN.

Na linguagem de manipulação de dados do SQL, um retorno TRUE duma expressão inicia uma ação, enquanto UNKNOWN ou FALSE não iniciam ações. Dessa forma a lógica ternária é transformada em binária para o utilizador.

Referências

  1. Brian Hayes. «Third Base» (PDF). American Scientist (em inglês). Sigma Xi, the Scientific Research Society. Consultado em 29 de julho de 2008 
  2. Penguin Books (ed.). The Penguin Dictionary of Mathematics. 1998 2 ed. Londres: [s.n.] 417 páginas 
  3. Knuth, Donald E. Addison-Wesley, ed. The Art of Computer Programming Vol. 2. 1981. [S.l.: s.n.] 190 páginas 

Ver também

editar