11-Sintaxe Da Programao Lgica
11-Sintaxe Da Programao Lgica
11-Sintaxe Da Programao Lgica
1. Introdução
1
Introdução
Introdução
2
Sintaxe da Programação Lógica
Sintaxe da Programação Lógica
a) cláusula de programa;
b) programa lógico;
c) cláusula objetivo.
3
Cláusula de Programa
Cláusula de Programa
Uma cláusula de programa, na Lógica de Predicados, é uma
cláusula do tipo C = (∀x1 )...(∀xn )G, onde G é uma disjunção
de literais, que contém exatamente um literal positivo.
Notação
Uma cláusula de programa (∀∗)(B ∨ ¬A1 ∨ ... ∨ ¬An ) é
denotada por B ← A1 , ..., An .
Nesse caso, B é a cabeça da cláusula e A1 , ..., An é a cauda.
4
Cláusula de Programa
Cláusula Unitária
Uma cláusula de programa unitária é uma cláusula que não
contém literais negativos. Uma cláusula unitária é
denominada fato.
Notação
B ←.
Nesse caso, só temos a cabeça da cláusula.
5
Alfabeto - Observações Importantes
6
Cláusula de Programa
Exemplo:
A cláusula de programa C1 = (∀x)(∀y)(p(x) ∨ ¬q(x) ∨ ¬r(x, y)) é
denotada por p(x) ← q(x), r(x, y).
Como chegamos em p(x) ← q(x), r(x, y), a partir de C1 ?
7
Cláusula de Programa
Exemplo:
C1 = (∀x)(∀y)(p(x) ∨ ¬q(x) ∨ ¬r(x, y))
⇐⇒ (∀∗)(p(x) ∨ ¬q(x) ∨ ¬r(x, y))1
⇐⇒ (∀∗)(¬q(x) ∨ ¬r(x, y) ∨ p(x))
⇐⇒ (∀∗)(¬(q(x) ∧ r(x, y)) ∨ p(x))
⇐⇒ (∀∗)((q(x) ∧ r(x, y)) → p(x))
Como temos um fecho universal, o quantificador (∀∗) pode ser
omitido. Assim, temos (q(x) ∧ r(x, y)) → p(x). Considerando
que a vírgula representa o conectivo ∧ e invertendo a
implicação, temos a cláusula de programa p(x) ← q(x), r(x, y).
1
(∀∗) representa um fecho universal, isto é, todas as variáveis estão
quantificadas universalmente.
8
Cláusula de Programa
Exercício:
Determine a representação em cláusula de programa da
seguinte fórmula:
9
Programa Lógico
Programa Lógico
Um programa lógico é um conjunto de cláusulas de
programa.
10
Programa Lógico
11
Programa Lógico
12
Cláusula Objetivo
Cláusula Objetivo
Uma cláusula objetivo é uma cláusula que não contém literal
positivo e, portanto, não é uma cláusula de programa.
Notação
← A1 , ..., An .
Nesse caso, só temos a cauda.
13
Cláusula Objetivo
Exemplos:
← pai(x, a6 ).
← avo(a1 , x).
← filho(x, a1 ).
Em PROLOG:
pai(X,isa).
avo(pedro,X).
filho(X,pedro).
14
Cláusula de Horn
Cláusula de Horn
Uma cláusula de Horn é uma cláusula de programa ou uma
cláusula objetivo.
15
Cláusula Vazia
Cláusula Vazia
Uma cláusula vazia é uma cláusula que não contém nenhum
literal. Observe que a cláusula vazia não é uma cláusula de
Horn. Uma cláusula vazia representa uma contradição lógica.
Notação
Uma cláusula vazia C é denotada por C = {}.
16