Negação por falha

Negação por falha, é uma regra de inferência não-monotônica na programação em lógica, usada para derivar n o t   p {\displaystyle \mathrm {not} ~p} (isto é, p {\displaystyle p} não se verifica) da falha em derivar p {\displaystyle p} . Note que n o t   p {\displaystyle \mathrm {not} ~p} pode ser diferente do enunciado ¬ p {\displaystyle \neg p} (negação lógica de p {\displaystyle p} ), dependendo da completude do algoritmo de inferência e assim, também do sistema lógico formal.

Negação por falha é uma importante caracterísitca da programação em lógica desde seu uso inicial em linguagens de programação como Planner e Prolog. Em Prolog, é normalmente implementada usando os construtos extralógicos do Prolog.

Lógica

Em lógica, a interpretação padronizada da negação é que a negação de uma fórmula é verdadeira se e somente se a fórmula é falsa. Se uma fórmula não é nem verdadeira nem falsa, sua negação é considerada desconhecida. Na interpretação da negação por falha, a negação da fórmula nesse caso é considerada verdadeira.

A negação por falha é relacionada com a suposição comum de que o que não é conhecido ser verdadeiro é falso. Isso é conhecido como a Hipótese do Mundo Fechado (Closed-World Assumption).

Em argumentação, um ponto para o qual nenhum argumento pode ser feito é chamado um argumento infundado. Um argumento infundado para α não é um argumento fundado para a negação de α.

Semântica em Planner

Em Planner, negação por falha pode ser implementada da seguinte maneira:

if (not (goal p)), then (assert ¬p)

que significa que se uma busca exaustiva para provar p falhar, então assuma ¬p[1]. Note que o exemplo acima efetivamente utiliza notação matemática, que não pode ser representada em Prolog.

Semântica em Prolog

Em Prolog puro, literais de Negação por Falha na forma n o t   p {\displaystyle not~p} podem ocorrer no corpo de cláusulas e podem ser usados para derivar outros literais de Negação por Falha. Por exemplo, dada apenas quatro cláusulas:

p q n o t   r {\displaystyle p\leftarrow q\land \mathrm {not} ~r}

q s {\displaystyle q\leftarrow s}

q t {\displaystyle q\leftarrow t}

t {\displaystyle t\leftarrow }

Negação por falha deriva n o t   s {\displaystyle \mathrm {not} ~s} , n o t   r {\displaystyle \mathrm {not} ~r} e   p {\displaystyle ~p} .

Semântica de Completação

As semânticas de Negação por Falha permaneceram uma questão em aberto até que Keith Clark[2] mostrou que é correto, em relação à completação do programa lógico, onde, vagamente falando, "apenas" e {\displaystyle \leftarrow } são interpretados como "se e somente se", escritos como "sse" ou " {\displaystyle \equiv } ".

Por exemplo, a completação das quatro cláusulas anteriormente citadas é:

p q n o t   r {\displaystyle p\equiv q\land \mathrm {not} ~r}

q s t {\displaystyle q\equiv s\lor t}

t t r u e {\displaystyle t\equiv \mathrm {true} }

r f a l s e {\displaystyle r\equiv \mathrm {false} }

s f a l s e {\displaystyle s\equiv \mathrm {false} }

A regra de inferência de Negação por Falha simula raciocínio explicitamente com a completação, nos quais ambos os lados da equivalência são negados e a negação do lado direito é distribuída até a fórmula atômica. Por exemplo, para demonstrar n o t   p {\displaystyle \mathrm {not} ~p} , Negação por Falha simula raciocínio com as equivalências

n o t   p n o t   q r {\displaystyle \mathrm {not} ~p\equiv \mathrm {not} ~q\lor r}

n o t   q n o t   s n o t   t {\displaystyle \mathrm {not} ~q\equiv \mathrm {not} ~s\land \mathrm {not} ~t}

n o t   t f a l s e {\displaystyle \mathrm {not} ~t\equiv \mathrm {false} }

n o t   r t r u e {\displaystyle \mathrm {not} ~r\equiv \mathrm {true} }

n o t   s t r u e {\displaystyle \mathrm {not} ~s\equiv \mathrm {true} }

No caso não-proposicional, a completação precisa ser ampliada com axiomas de igualdade, para formalizar a hipótese de que indivíduos com nomes distintos são distintos. Negação por Falha simula isso através da falha de unificação. Por exemplo, dadas apenas duas cláusulas:

p ( a ) {\displaystyle p(a)\leftarrow }

p ( b ) t {\displaystyle p(b)\leftarrow t}

Negação por Falha deriva n o t   p ( c ) {\displaystyle \mathrm {not} ~p(c)} .

A Completação do programa é:

p ( X ) X = a X = b {\displaystyle p(X)\equiv X=a\lor X=b}

aumentada com axiomas de nome único e axiomas de fecho de domínio.

A semântica de completação é fortemente relacionada à circunscrição e à Hipótese do Mundo Fechado.

Referências

  1. Clark, Keith (1978). Logic and Data Bases (PDF). [S.l.]: Springer-Verlag. p. 293–322. ISBN 10.1007/978-1-4684-3384-5_11 Verifique |isbn= (ajuda) 
  2. Clark, Keith. Negation as failure. Readings in nonmonotonic reasoning. [S.l.]: Morgan Kaufmann Publishers. p. 311-325