Cláusula de Horn - Horn clause

Em lógica matemática e programação lógica , uma cláusula de Horn é uma fórmula lógica de uma forma semelhante a uma regra particular que lhe dá propriedades úteis para uso em programação lógica, especificação formal e teoria do modelo . As cláusulas de Horn são nomeadas em homenagem ao lógico Alfred Horn , que primeiro apontou seu significado em 1951.

Definição

Uma cláusula de Horn é uma cláusula (uma disjunção de literais ) com no máximo um literal positivo, isto é , não legado .

Por outro lado, uma disjunção de literais com no máximo um literal negado é chamada de cláusula de Horn dual .

Uma cláusula de Horn com exatamente um literal positivo é uma cláusula definida ou uma cláusula de Horn estrita ; uma cláusula definida sem literais negativos é uma cláusula unitária , e uma cláusula unitária sem variáveis ​​é um fato ; Uma cláusula de Horn sem um literal positivo é uma cláusula de objetivo . Observe que a cláusula vazia, que consiste em nenhum literal (que é equivalente a false ), é uma cláusula de objetivo. Esses três tipos de cláusulas de Horn são ilustrados no seguinte exemplo proposicional :

Cláusula de tipo de chifre Forma de disjunção implicação forma Leia intuitivamente como
Cláusula definida ¬ p ∨ ¬ q ∨ ... ∨ ¬ tu upq ∧ ... ∧ t supor que,
se p e q e ... t tudo espera, em seguida, também u detém
Facto você uverdade suponha que
você segura
Cláusula de meta ¬ p ∨ ¬ q ∨ ... ∨ ¬ t falsopq ∧ ... ∧ t mostre que
p e q e ... e t todos se mantêm

Todas as variáveis ​​em uma cláusula são universalmente quantificadas implicitamente, com o escopo sendo a cláusula inteira. Assim, por exemplo:

¬ humano ( X ) ∨ mortal ( X )

apoia:

∀X (¬ humano ( X ) ∨ mortal ( X ))

que é logicamente equivalente a:

∀X ( humano ( X ) → mortal ( X ))

Significado

As cláusulas de Horn desempenham um papel básico na lógica construtiva e na lógica computacional . Eles são importantes na prova automatizada de teoremas por resolução de primeira ordem , porque o resolvente de duas cláusulas de Horn é ele mesmo uma cláusula de Horn, e o resolvente de uma cláusula de objetivo e uma cláusula definida é uma cláusula de objetivo. Essas propriedades das cláusulas de Horn podem levar a uma maior eficiência de provar um teorema: a cláusula objetivo é a negação desse teorema; consulte a cláusula de meta na tabela acima. Intuitivamente, se quisermos provar φ, assumimos ¬φ (o objetivo) e verificamos se tal suposição leva a uma contradição. Nesse caso, então φ deve se manter. Dessa forma, uma ferramenta de prova mecânica precisa manter apenas um conjunto de fórmulas (suposições), ao invés de dois conjuntos (suposições e (sub) objetivos).

As cláusulas de Horn proposicionais também são de interesse na complexidade computacional . O problema de encontrar atribuições de valor de verdade para tornar verdadeira uma conjunção de cláusulas de Horn proposicionais é conhecido como HORNSAT . Este problema é P-completo e pode ser resolvido em tempo linear . Observe que o problema de satisfatibilidade booleana irrestrita é um problema NP-completo .

Programação lógica

As cláusulas de Horn também são a base da programação lógica , onde é comum escrever cláusulas definidas na forma de uma implicação :

( pq ∧ ... ∧ t ) → u

Na verdade, a resolução de uma cláusula de objetivo com uma cláusula definida para produzir uma nova cláusula de objetivo é a base da regra de inferência de resolução SLD , usada na implementação da linguagem de programação lógica Prolog .

Na programação lógica, uma cláusula definida se comporta como um procedimento de redução de metas. Por exemplo, a cláusula de Horn escrita acima se comporta como o procedimento:

para mostrar u , mostrar p e mostrar q e ... e mostrar t .

Para enfatizar esse uso reverso da cláusula, muitas vezes ela é escrita na forma reversa:

u ← ( pq ∧ ... ∧ t )

No Prolog, isso é escrito como:

u :- p, q, ..., t.

Na programação lógica, a computação e a avaliação da consulta são realizadas representando a negação de um problema a ser resolvido como uma cláusula objetivo. Por exemplo, o problema de resolver a conjunção quantificada existencialmente de literais positivos:

X ( pq ∧ ... ∧ t )

é representado negando o problema (negando que ele tenha uma solução) e representando-o na forma logicamente equivalente de uma cláusula de objetivo:

X ( falsopq ∧ ... ∧ t )

No Prolog, isso é escrito como:

:- p, q, ..., t.

Resolver o problema equivale a derivar uma contradição, que é representada pela cláusula vazia (ou "falsa"). A solução do problema é a substituição das variáveis ​​da cláusula objetivo por termos, o que pode ser extraído da prova de contradição. Usadas dessa forma, as cláusulas de objetivo são semelhantes às consultas conjuntivas em bancos de dados relacionais, e a lógica da cláusula de Horn é equivalente em poder computacional a uma máquina de Turing universal .

A notação Prolog é realmente ambígua, e o termo “cláusula de objetivo” às vezes também é usado de forma ambígua. As variáveis ​​em uma cláusula de objetivo podem ser lidas como universal ou existencialmente quantificadas, e derivar "falso" pode ser interpretado como derivando uma contradição ou como derivando uma solução bem-sucedida do problema a ser resolvido.

Van Emden e Kowalski (1976) investigaram as propriedades do modelo de teoria de cláusulas de Horn no contexto de programação lógica, mostrando que cada conjunto de cláusulas definidas D tem um único modelo mínimo M . Uma fórmula atómica Um é logicamente implicada por D se e apenas se um é verdadeiro em H . Segue-se que um problema P representado por um conjunto existentially quantificada de literais positivos é logicamente implicada por D se e somente se P é verdadeiro em H . A semântica do modelo mínimo das cláusulas de Horn é a base para a semântica do modelo estável dos programas lógicos.

Notas

Referências