Índice Próximo

 

2.Características necessárias para Resolução

   

 

 

 

 

 

2.1.Conceitos de Lógica Proposicional

 

 

Para a negação de uma expressão proposicional, foi necessário abordar as seguintes regras.

 

 

 

 A regra not ( not (a) ) <=> a é manipulada através do predicado recursivo simplifica(X,Y).

As demais são manipuladas pelo predicado recursivo negacao(X,Y).

Para manipulação correta dos operadores devemos avaliar a precedência dos mesmos.

Quando uma entrada como a or b and c for dada devemos saber se deve ser considerada como:

 

(a or b) and c ou a or (b and c)

 

Identificamos que a segunda opção será a tomada como correta e que a precedência dos operadores pode ser descrita

como:

 

 

 

2.2.Operadores

 

 

Utilizando a notação de operadores em Prolog e utilizando a ordem de precedência vista anteriormente

podemos declará-los como:

 

 Onde o not é um operador prefixo e os demais infixos.

x e y representam respectivamente argumento cuja precedência é estritamente menor que a do operador, e

argumento cuja precedência é menor ou igual a do operador. [Bratko].

 

 

2.3.Recursividade e uso de Cortes

 

 

A funcionalidade do programa depende basicamente de dois predicados recursivos que já foram descritos

anteriormente:

 

simplifica(X,Y)

negacao(X,Y).

 

A segunda realiza a negação da operação de acordo com a regra e precedência apropriadas e utiliza a simplifica

para aplicar a regra de equivalência (not (not a ) <=> a).

A primeira por sua vez, recursivamente, vai retirando da expressão dois operadores not a cada chamada do

realizada ao predicado.

O uso de cortes garante a eficiência na execução uma vez que se uma das regras declaradas pelo predicado

negacao já foi satisfeita, não deve haver execução de outra regra (clausula).

 

 

 

 

2.4.Entrada e Saída

 

 

A entrada deve ser dada através da linha de comando, adicionando a expressão (operandos e operadores separados

por espaço) a ser negada ao predicado neg.

 

Ex.:

neg(a and b).

 

Parênteses podem ser usados para indicar a a precedência.

A saída é a expressão gerada pela negação da expressão de entrada, estas são mostradas por uma janela.