Negação Conjunção Disjunção Implicação Equivalência
Lógica Proposicional (Revisão)
● Semântica: Cada modelo atribui verdadeiro/falso a cada símbolo
proposicional
Negação Conjunção Disjunção Implicação Equivalência
NOT AND OR XNOR
Lógica Proposicional (Revisão)
● Semântica: Cada modelo atribui verdadeiro/falso a cada símbolo
proposicional
Lógica Proposicional (Revisão)
● Implicação
● P significa "O botão vermelho foi apertado" ● Q significa "O lugar inteiro explode"
● P ⇒ Q pode ser interpretada como "Se o botão vermelho foi apertado, então o lugar inteiro
explode"
● Mas se o botão vermelho for apertado (verdade de P) e o lugar inteiro não explodir, este resultado é
Lógica Proposicional (Revisão)
● Equivalência ou bi-implicação (se, e somente se)
● P significa "O número natural é divisível por cinco"
● Q significa "O último algarismo do número natural é zero ou cinco"
● P ⇔ Q pode ser interpretada como "O número natural é divisível por 5 se, e somente se, o seu
último algarismo é zero ou cinco"
● Se uma das proposições for falsa, o enunciado se torna falso.
Agente Baseado em Conhecimento
● O componente central de um agente baseado em conhecimento é sua
base
de conhecimento
.
● A base de conhecimento é formada por um conjunto de
sentenças
expressadas por meio de uma
linguagem lógica
de representação de
conhecimento.
Lógica de Primeira Ordem
● Ou cálculo de Predicados de primeira ordem ou
cálculo relacional
○ É caracterizado como um sistema formal apropriado à definição de teorias do universo de discurso da Matemática
○ Utiliza predicados
■ Assim, pode ser utilizada facilmente para representações de conhecimento do tipo: ● “Sócrates é um homem.”
● “Platão é um homem.”
● “Todos os homens são mortais.”
■ Repare que se utilizássemos lógica proposicional, não teríamos uma generalização pois cada sentença seria um fato. A generalização é possível utilizando-se variáveis e
Lógica de Primeira Ordem
● Utiliza
○ Objetos
■ Pessoas, casas, números, cores, jogos, séculos… ○ Relações:
■ Unárias: propriedades de um objeto. ● Exemplo: vermelho, redondo, falso ■ N-árias: relacionam grupos de objetos.
● Exemplo: irmão de, maior que, interior a, parte de… ■ Funções: um objeto está relacionado a exatamente um objeto.
● Exemplo: pai de, melhor amigo de, terceiro turno de, uma unidade maior que…
Sintaxe
● Um alfabeto de primeira ordem
α
consiste em
○ Símbolos Lógicos
■ Conectivos: ¬ , ⇒, ∧, ∨, ⇔
■ Símbolo de igualdade: =
■ Quantificadores: ∀ (quantificador universal), ∃ (quantificador existencial)
○ Termos
■ Constantes e variáveis são termos ■ f(t1, t2, ..., tn)
● f é um símbolo funcional que define uma relação ● (t1, t2, ..., tn) é uma tupla de termos
■ Exemplos ● x, bear ● X, City
Exemplos
● Quantificador universal
○ ∀ X gosta(ana,X)
■ É lido como “para todo X, Ana gosta deste X” ou “Ana gosta de todos”
● Quantificador existencial
○ ∃ X gosta(ana,X)
Exemplos
● Não existe uma única forma de simbolizar um determinado conhecimento
○ Por exemplo: sentença “A casa é amarela” ■ amarela(casa)
■ cor(casa,amarela)
Exercício 1
● Dadas as relações
○ estuda(X,Y) que significa “X estuda Y” ○ gosta(X,Y) que significa “X gosta de Y ○ chapeu(X) que significa “o chapéu de X”
● Mostrar como são representadas as seguintes sentenças
1. “Ana gosta do livro Inteligência Artificial” 2. “Ana estuda o livro de Cálculo”
Exercício 1 - Solução
1. “Ana gosta do livro Inteligência Artificial”
gosta(ana, livro inteligência artificial)
2. “Ana estuda o livro de Cálculo”
estuda(ana, livro de cálculo)
3. “Se Ana estuda o livro então ela gosta dele”
estuda(ana, livro)
⇒
gosta(ana, livro)
4. “Ana gosta do chapéu de pedro”
Mais exemplos
●
∃
X (m(X)
∧
n(X))
○ Alguns m são n○ Existem m que são n
●
∃
X (m(X)
∧
¬n(X))
○ Alguns m são não n ○ Alguns m não são n○ Existem m que não são n ○ Pelo menos um m não é n
● X é uma variável
Mais alguns exemplos
● Todos os homens são mortais
○ ∀ X (homem(X) ⇒ mortal(X))
● Alguns gatos são amarelos
○ ∃ X (gato(X) ∧ amarelo(X))
● Nenhuma baleia é peixe
○ ∀ X (baleia(X) ⇒ ¬peixe(X))
● Meninos e meninas gostam de brincar
○ ∀ X (menino(X) ∨ menina(X) ⇒ gosta(X, brincar))
○ ∀ X (menino(X) ⇒ gosta(X, brincar)) ∧ ∀ Y (menina(Y) ⇒ gosta(Y, brincar))
● Leite e banana são nutritivos
○ ∀ X (leite(X) ∨ banana(X) ⇒ nutritivo(X))
● Nem tudo que reluz é ouro
Mais outros exemplos
● Há pintores que não são artistas, mas artesãos
○ ∃ X (pintor(X) ∧ ¬artista(X) ∧ artesao(X))
● Não há crime sem lei que o define
○ ∀ X (crime(X) ⇒ ∃ Y(lei(Y) ∧ define(Y, X)))
● Há pelo menos dois senadores
○ ∃ X ∃ Y (senador(X) ∧ senador(Y) ∧ X != Y)
● Não há bom livro escrito por maus autores
PROLOG
● O Prolog é uma linguagem de programação baseada em lógica de primeira
ordem
● Não é padronizada
● Algumas implementações
○ SICStus Prolog
○ Borland Turbo Prolog
○ SWI-Prolog
SWI-PROLOG
● Open Source
● Multiplataforma
PROLOG vs Outras linguagens
● Linguagens Procedimentais (C, Pascal, Basic...)
○ Especifica-se como realizar determinada tarefa.
● Linguagens Orientadas a Objetos (C++, Java, C#...)
○ Especifica-se objetos e seus métodos.
● Prolog
Programando em PROLOG
● Programar em Prolog envolve
○
Declarar alguns fatos a respeito de objetos e seus relacionamentos○
Definir algumas regras sobre os objetos e seus relacionamentosProgramando em PROLOG
● Nomes de constantes e predicados iniciam sempre com letra minúscula
● O predicado (relação unária, n-ária ou função) é escrito primeiro e os objetos
relacionados são escritos depois entre parênteses
● Variáveis sempre começam por letra maiúscula
● Toda sentença termina com ponto “.”
Programando em PROLOG
Programando em PROLOG
● Regras
○
São utilizadas para expressar dependência entre um fato e outro fato:
■criança(X) :- gosta(X,sorvete).
■
criança(X) :- not( odeia(X,sorvete) ).
○
Ou grupo de fatos:
■
avó(X,Z) :- (mãe(X,Y),mãe(Y,Z)); (mãe(X,Y),pai(Y,Z)).
○
Podem conter listas:
Programando em PROLOG
● Definindo relações por fatos
○
Exemplo de relações familiares
■
O fato que Abraão é um progenitor de Isaque
pode ser escrito em Prolog como:
●
progenitor(abraão, isaque).
■
Neste caso definiu-se progenitor como o nome
de uma relação
Programando em PROLOG
● Árvore familiar completa
○
progenitor(sara,isaque).
○progenitor(abraão,isaque).
○progenitor(abraão,ismael).
○progenitor(isaque,esaú).
○progenitor(isaque,jacó).
○progenitor(jacó,josé).
Programando em PROLOG
● Fazendo perguntas ao Prolog
○
Isaque é pai de Jacó?
?- progenitor(isaque,jacó).
○
Como o Prolog encontra essa pergunta como um
Programando em PROLOG
● Fazendo perguntas ao Prolog
○
Ismael é pai de Jacó?
?- progenitor(ismael,jacó).
Programando em PROLOG
● Fazendo perguntas mais interessantes
○ Quem é o progenitor de Ismael?
?- progenitor(X, ismael).
○ Neste caso, o Prolog não responde
True
ou
False
○ O Prolog retornará o valor de X tal que a pergunta
seja verdadeira.
Programando em PROLOG
● Fazendo perguntas mais interessantes
○ Quais os filhos de Isaque?
?- progenitor(isaque, X).
○ Neste caso, há mais de uma resposta
○ O Prolog retornará a primeira resposta
X = esaú
○ E o usuário pode requisitar outra resposta
pressionando “;”
Programando em PROLOG
● Fazendo perguntas ainda mais interessantes
○ Quem são os netos de Sara?
?- progenitor(Sara, X), progenitor(X, Y).
○ O Prolog retornará
X = isaque
Y = jacó
Programando em PROLOG
● É possível expandir o programa sobre relações familiares criando novos
fatos. Por exemplo, adicionando o sexo de cada membro da família.
Programando em PROLOG
● Criando a relação
filho
○ É possível definir filho de maneira similar à relação progenitor, ou seja enumerando uma lista de fatos sobre a relação filho, mas esta não é a forma correta!
Programando em PROLOG
● Definindo relações baseadas em
regras
● Criando a relação
filho
de maneira mais elegante
○ Para todo X e Y, Y é um filho de X se X é um progenitor de Y.● Em Prolog:
Programando em PROLOG
● Diferenças entre fatos e regras
○ Fatos são sempre verdadeiros
Programando em PROLOG
● Fazendo perguntas muito mais interessantes
○ Após definir a regra filho, é possível perguntar ao Prolog se Ismael é filho de Abraão
?- filho(ismael, abraão).
○
Como não existem fatos sobre a relação filho, a única forma do Prolog responder esta pergunta é aplicando a regra filho:● Definindo novas regras
○ É possível também incluir a especificação da relação mãe, com base no seguinte fundamento lógico
○ Para todo X e Y
■ X é a mãe de Y se
● X é um progenitor de Y e ● X é uma mulher.
○ Em Prolog
mãe(X,Y) :- progenitor(X,Y), mulher(X)
● Definindo novas regras
○ A relação irmão pode ser definida como ○ Para todo X e Y
■ X é irmão de Y se ambos X e Y têm um progenitor em comum
○ Em Prolog
irmão(X,Y) :- progenitor(Z,X), progenitor(Z,Y)
● Regras recursivas
○ A relação ancestral pode ser definida criando uma regra recursiva ○ Em Prolog
○ Quais são os descendentes de Sara?
Programando em PROLOG
ancestral(X,Z) :- progenitor(X,Z).
ancestral(X,Z) :- progenitor(X,Y), ancestral(Y,Z).
?- ancestral(sara, X).
Programando em PROLOG
● Estruturas
○ Objetos estruturados são objetos de dados com vários componentes. ○ Cada componente da estrutura pode ser outra estrutura.
○ Por exemplo, uma data pode ser vista como uma estrutura com três componentes: dia, mês, ano.
Programando em PROLOG
● Estruturas
Programando em PROLOG
● Estruturas
Programando em PROLOG
Programando em PROLOG
● Operadores
○ O operador “=” realiza apenas a unificação de termos ■ ?- X = 1 + 2.
■ X = 1 + 2
○ O operador “is” força a avaliação aritmética ■ ?- X is 1 + 2.
Desafio
“The law says that it is a crime for an American to sell weapons to hostile nations.
The country Nono, an enemy of America, has some missiles, and all of its missiles
were sold to it by Colonel West, who is American.”
Desafio - Dicas
“The law says that it is a crime for an American to sell weapons to hostile nations.
The country Nono, an enemy of America, has some missiles, and all of its missiles
were sold to it by Colonel West, who is American.”
% Fatos
american(west).
Desafio - Solução
“The law says that it is a crime for an American to sell weapons to hostile nations.
The country Nono, an enemy of America, has some missiles, and all of its missiles
were sold to it by Colonel West, who is American.”
% Fatos
american(west).
enemy(america, nono). weapons(missiles). owns(nono, missiles). sell(west, missiles, nono).
% Regras
Desafio - Solução
“The law says that it is a crime for an American to sell weapons to hostile nations.
The country Nono, an enemy of America, has some missiles, and all of its missiles
were sold to it by Colonel West, who is American.”
?- criminal(west).
True
?- criminal(X).