Cláusula da buzina
Uma cláusula de Horn é uma disjunção lógica dos literais, onde no máximo um dos literais é positivo, e todos os outros são negativos. O seu nome vem de Alfred Horn, que os descreveu num artigo de 1951.
Uma cláusula Horn com exactamente um literal positivo é uma cláusula definitiva; uma cláusula definitiva sem um literal negativo é por vezes chamada "facto"; e uma cláusula Horn sem um literal positivo é por vezes chamada cláusula de objectivo. Estes três tipos de cláusulas de Trompa são ilustrados no seguinte exemplo proposicional:
cláusula definitiva: ¬ p ∨ q ∨ ⋯ ∨ ∨ ∨ u ∨ u ∨ u ∨ u u u u
facto: u {\displaystyle u}
cláusula de objectivo: ¬ p ∨ ∨ q ⋯ ∨ ∨ ∨ ∨ t {\i1}displaystyle p?rneg p?rneg q\iq q\iq q\iq q\iq ue dcdots
No caso não proposicional, todas as variáveis de uma cláusula são implicitamente universalmente quantificadas com o alcance de toda a cláusula. Assim, por exemplo:
¬ humano ( X ) ∨ mortal ( X ) estilo de jogo Negativo ( X ) texto (humano)(X)ou texto (mortal)(X){\i}(X){\i}
representa:
∀ X ( ¬ humano ( X ) ∨ mortal ( X ) ) estilo de jogo para todos os X(negosxtoshumanos)(X)ou X(mortal)(X))ou X(mortal)
o que é logicamente equivalente a:
∀ X ( humano ( X ) → mortal ( X ) ) . X(texto humano)(X)righttarrow(X)righttarrow(X)). }
As cláusulas de trompa desempenham um papel básico na lógica construtiva e na lógica computacional. São importantes no teorema automatizado provado por resolução de primeira ordem, porque a resolução de duas cláusulas de Trompa é em si uma cláusula de Trompa, e a resolução de uma cláusula de objectivo e de uma cláusula definida é uma cláusula de objectivo. Estas propriedades das cláusulas Horn podem levar a uma maior eficiência na prova de um teorema (representado como a negação de uma cláusula de objectivo).
As cláusulas trompa são também a base da programação lógica, onde é comum escrever cláusulas definitivas sob a forma de uma implicação:
( p ∧ q ∧ ⋯ → ∧ t ) → u {\i1}displaystyle (p=dots da Suécia q=cdots da Suécia t)righttarrow u}
De facto, a resolução de uma cláusula de objectivo com uma cláusula definida para produzir uma nova cláusula de objectivo é a base da regra de inferência da resolução SLD, utilizada para implementar a programação lógica e a linguagem de programação Prolog.
Na programação lógica, uma cláusula definida comporta-se como um procedimento de redução de objectivos. Por exemplo, a cláusula Horn escrita acima comporta-se como o procedimento:
para mostrar u {\an8} , mostrar p {\an8} e mostrar q {\an8} e ⋯ {\an8}displaystyle u{\an8} e mostrar t {\i1} .
Para enfatizar esta utilização retrógrada da cláusula, ela é frequentemente escrita na forma retrógrada:
u ← ( p ∧ q ∧ ⋯ ∧ t ) {\i1}displaystyle u{\i1}leftarrow (p³land q³land q³cdots {\i}land t)}
Em Prolog isto está escrito como:
u :- p, q, ..., t.A notação Prolog é na realidade ambígua, e o termo "cláusula de objectivo" é por vezes também utilizado de forma ambígua. As variáveis de uma cláusula de objectivo podem ser lidas como universalmente 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 teóricas do modelo de cláusulas Horn no contexto da programação lógica, mostrando que cada conjunto de cláusulas definidas D tem um modelo mínimo único M. Uma fórmula atómica A é logicamente implícita por D se e só se A for verdadeira em M. Segue-se que um problema P representado por uma conjunção existencialmente quantificada de literais positivos é logicamente implícito por D se e só se P for verdadeira em M. A semântica do modelo mínimo de cláusulas Horn é a base para a semântica estável do modelo de programas lógicos.
As cláusulas proposicionais Horn são também de interesse na complexidade computacional, onde o problema de encontrar atribuições de valores de verdade para tornar verdadeira uma conjunção de cláusulas proposicionais Horn é um problema P-completo (de facto solvível em tempo linear), por vezes chamado HORNSAT. (O problema de satisfação Booleana sem restrições é, no entanto, um problema NP-completo). A satisfação das cláusulas de trompa de primeira ordem é indecidível.
Perguntas e Respostas
P: O que é uma cláusula Horn?
R: Uma cláusula de Horn é uma disjunção lógica dos literais, onde no máximo um dos literais é positivo e todos os outros são negativos.
P: Quem as descreveu primeiro?
R: Alfred Horn os descreveu pela primeira vez em um artigo em 1951.
P: O que é uma cláusula definitiva?
R: Uma cláusula do Horn com exatamente um literal positivo é chamada de cláusula definitiva.
P: O que é um fato?
R: Uma cláusula definitiva sem literal negativo é às vezes referida como um "fato".
P: O que é uma cláusula de objetivo?
R: Uma cláusula de Horn sem um literal positivo é às vezes chamada de cláusula de gol.
P: Como funcionam as variáveis em casos não proposicionais?
R: No caso não proposicional, todas as variáveis de uma cláusula são implicitamente universalmente quantificadas com escopo a cláusula inteira. Isso significa que elas se aplicam a cada parte da declaração.
P: Que papel as cláusulas do Horn desempenham na lógica construtiva e na lógica computacional? R: As cláusulas Horn desempenham um papel importante no teorema automatizado, provando por resolução de primeira ordem, porque a resolução de duas cláusulas Horn ou entre um objetivo e um clausse definido pode ser usada para criar maior eficiência ao provar algo representado como a negação de seu clausse de objetivo. Elas também são usadas como base para linguagens de programação lógica, como o Prolog, onde se comportam como procedimentos de redução de metas.