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 | editar código-fonte]Representação de valores
[editar | editar código-fonte]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 | editar código-fonte]Segue abaixo uma tabela verdade mostrando operações lógicas para a lógica de Kleene.
verdadeiro | verdadeiro | verdadeiro | verdadeiro | falso |
verdadeiro | desconhecido | verdadeiro | desconhecido | |
verdadeiro | falso | verdadeiro | falso | |
desconhecido | verdadeiro | verdadeiro | desconhecido | desconhecido |
desconhecido | desconhecido | desconhecido | desconhecido | |
desconhecido | falso | desconhecido | falso | |
falso | verdadeiro | verdadeiro | falso | verdadeiro |
falso | desconhecido | desconhecido | falso | |
falso | falso | falso | falso |
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 é .
Uso
[editar | editar código-fonte]Aplicações de bancos de dados
[editar | editar código-fonte]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.
- ↑ Brian Hayes. «Third Base» (PDF). American Scientist (em inglês). Sigma Xi, the Scientific Research Society. Consultado em 29 de julho de 2008
- ↑ Penguin Books (ed.). The Penguin Dictionary of Mathematics. 1998 2 ed. Londres: [s.n.] 417 páginas
- ↑ Knuth, Donald E. Addison-Wesley, ed. The Art of Computer Programming Vol. 2. 1981. [S.l.: s.n.] 190 páginas