SlideShare uma empresa Scribd logo
1 de 181
Baixar para ler offline
Inteligência Artificial – ACH2016
Aula 13 – Backward Chaining e Programação
Lógica
Norton Trevisan Roman
(norton@usp.br)
11 de abril de 2019
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 1 / 35
L.P.O. – Backward Chaining
Funcionamento
Começando do objetivo, “voltamos” nas regras de
modo a encontrar fatos conhecidos que suportem a
prova
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 2 / 35
L.P.O. – Backward Chaining
Funcionamento
Começando do objetivo, “voltamos” nas regras de
modo a encontrar fatos conhecidos que suportem a
prova
Trata de regras do tipo antecedente ⇒ consequente
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 2 / 35
L.P.O. – Backward Chaining
Funcionamento
Começando do objetivo, “voltamos” nas regras de
modo a encontrar fatos conhecidos que suportem a
prova
Trata de regras do tipo antecedente ⇒ consequente
Fatos são tratados como uma implicação com um
consequente e nenhum antecedente
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 2 / 35
L.P.O. – Backward Chaining
Funcionamento
Começando do objetivo, “voltamos” nas regras de
modo a encontrar fatos conhecidos que suportem a
prova
Trata de regras do tipo antecedente ⇒ consequente
Fatos são tratados como uma implicação com um
consequente e nenhum antecedente
Usado em programação lógica
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 2 / 35
L.P.O. – Backward Chaining
Algoritmo
Função Backward(BC,obj,θ): conjunto de substituições
resposta ← {}
se obj estiver vazia então
retorna {θ}
q0
← (Primeiro(obj)) θ
para cada sentença s em BC onde são aplicados com sucesso
Padroniza(s) = (p1 ∧ . . . ∧ pn ⇒ q) e θ0
← Unifica(q, q0
) faça
novoObj ← [p1, . . . , pn|Resto(obj)]
resposta ← Backward(BC, novoObj, Composição(θ0
, θ)) ∪ resposta
retorna resposta
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 3 / 35
L.P.O. – Backward Chaining
Algoritmo
Base de Conhecimento
Função Backward(BC,obj,θ): conjunto de substituições
resposta ← {}
se obj estiver vazia então
retorna {θ}
q0
← (Primeiro(obj)) θ
para cada sentença s em BC onde são aplicados com sucesso
Padroniza(s) = (p1 ∧ . . . ∧ pn ⇒ q) e θ0
← Unifica(q, q0
) faça
novoObj ← [p1, . . . , pn|Resto(obj)]
resposta ← Backward(BC, novoObj, Composição(θ0
, θ)) ∪ resposta
retorna resposta
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 3 / 35
L.P.O. – Backward Chaining
Algoritmo
Lista dos elementos que for-
mam a query (θ já aplicado)
Função Backward(BC,obj,θ): conjunto de substituições
resposta ← {}
se obj estiver vazia então
retorna {θ}
q0
← (Primeiro(obj)) θ
para cada sentença s em BC onde são aplicados com sucesso
Padroniza(s) = (p1 ∧ . . . ∧ pn ⇒ q) e θ0
← Unifica(q, q0
) faça
novoObj ← [p1, . . . , pn|Resto(obj)]
resposta ← Backward(BC, novoObj, Composição(θ0
, θ)) ∪ resposta
retorna resposta
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 3 / 35
L.P.O. – Backward Chaining
Algoritmo
A substituição atual
(inicialmente {})
Função Backward(BC,obj,θ): conjunto de substituições
resposta ← {}
se obj estiver vazia então
retorna {θ}
q0
← (Primeiro(obj)) θ
para cada sentença s em BC onde são aplicados com sucesso
Padroniza(s) = (p1 ∧ . . . ∧ pn ⇒ q) e θ0
← Unifica(q, q0
) faça
novoObj ← [p1, . . . , pn|Resto(obj)]
resposta ← Backward(BC, novoObj, Composição(θ0
, θ)) ∪ resposta
retorna resposta
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 3 / 35
L.P.O. – Backward Chaining
Algoritmo
Conjunto de todas as substi-
tuições que satisfazem a query
Função Backward(BC,obj,θ): conjunto de substituições
resposta ← {}
se obj estiver vazia então
retorna {θ}
q0
← (Primeiro(obj)) θ
para cada sentença s em BC onde são aplicados com sucesso
Padroniza(s) = (p1 ∧ . . . ∧ pn ⇒ q) e θ0
← Unifica(q, q0
) faça
novoObj ← [p1, . . . , pn|Resto(obj)]
resposta ← Backward(BC, novoObj, Composição(θ0
, θ)) ∪ resposta
retorna resposta
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 3 / 35
L.P.O. – Backward Chaining
Algoritmo
Conjunto de substituições
Função Backward(BC,obj,θ): conjunto de substituições
resposta ← {}
se obj estiver vazia então
retorna {θ}
q0
← (Primeiro(obj)) θ
para cada sentença s em BC onde são aplicados com sucesso
Padroniza(s) = (p1 ∧ . . . ∧ pn ⇒ q) e θ0
← Unifica(q, q0
) faça
novoObj ← [p1, . . . , pn|Resto(obj)]
resposta ← Backward(BC, novoObj, Composição(θ0
, θ)) ∪ resposta
retorna resposta
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 3 / 35
L.P.O. – Backward Chaining
Algoritmo
Retira o primeiro objetivo em obj
Função Backward(BC,obj,θ): conjunto de substituições
resposta ← {}
se obj estiver vazia então
retorna {θ}
q0
← (Primeiro(obj)) θ
para cada sentença s em BC onde são aplicados com sucesso
Padroniza(s) = (p1 ∧ . . . ∧ pn ⇒ q) e θ0
← Unifica(q, q0
) faça
novoObj ← [p1, . . . , pn|Resto(obj)]
resposta ← Backward(BC, novoObj, Composição(θ0
, θ)) ∪ resposta
retorna resposta
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 3 / 35
L.P.O. – Backward Chaining
Algoritmo
Verifica toda cláusula na
BC cujo consequente se
unifica com esse objetivo
Função Backward(BC,obj,θ): conjunto de substituições
resposta ← {}
se obj estiver vazia então
retorna {θ}
q0
← (Primeiro(obj)) θ
para cada sentença s em BC onde são aplicados com sucesso
Padroniza(s) = (p1 ∧ . . . ∧ pn ⇒ q) e θ0
← Unifica(q, q0
) faça
novoObj ← [p1, . . . , pn|Resto(obj)]
resposta ← Backward(BC, novoObj, Composição(θ0
, θ)) ∪ resposta
retorna resposta
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 3 / 35
L.P.O. – Backward Chaining
Algoritmo
Cada uma dessas cláusulas
cria uma nova chamada
recursiva ao algoritmo
Função Backward(BC,obj,θ): conjunto de substituições
resposta ← {}
se obj estiver vazia então
retorna {θ}
q0
← (Primeiro(obj)) θ
para cada sentença s em BC onde são aplicados com sucesso
Padroniza(s) = (p1 ∧ . . . ∧ pn ⇒ q) e θ0
← Unifica(q, q0
) faça
novoObj ← [p1, . . . , pn|Resto(obj)]
resposta ← Backward(BC, novoObj, Composição(θ0
, θ)) ∪ resposta
retorna resposta
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 3 / 35
L.P.O. – Backward Chaining
Algoritmo
Suas premissas (antecedentes)
são adicionadas a (obj − q0
) e
passadas a essa nova chamada
Função Backward(BC,obj,θ): conjunto de substituições
resposta ← {}
se obj estiver vazia então
retorna {θ}
q0
← (Primeiro(obj)) θ
para cada sentença s em BC onde são aplicados com sucesso
Padroniza(s) = (p1 ∧ . . . ∧ pn ⇒ q) e θ0
← Unifica(q, q0
) faça
novoObj ← [p1, . . . , pn|Resto(obj)]
resposta ← Backward(BC, novoObj, Composição(θ0
, θ)) ∪ resposta
retorna resposta
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 3 / 35
L.P.O. – Backward Chaining
Algoritmo
Função Backward(BC,obj,θ): conjunto de substituições
resposta ← {}
se obj estiver vazia então
retorna {θ}
q0
← (Primeiro(obj)) θ
para cada sentença s em BC onde são aplicados com sucesso
Padroniza(s) = (p1 ∧ . . . ∧ pn ⇒ q) e θ0
← Unifica(q, q0
) faça
novoObj ← [p1, . . . , pn|Resto(obj)]
resposta ← Backward(BC, novoObj, Composição(θ0
, θ)) ∪ resposta
retorna resposta
Composição(θ0
, θ) é a substituição cujo efeito é idêntico ao de aplicar
cada uma das substituições em sequência
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 3 / 35
L.P.O. – Backward Chaining
Algoritmo
Função Backward(BC,obj,θ): conjunto de substituições
resposta ← {}
se obj estiver vazia então
retorna {θ}
q0
← (Primeiro(obj)) θ
para cada sentença s em BC onde são aplicados com sucesso
Padroniza(s) = (p1 ∧ . . . ∧ pn ⇒ q) e θ0
← Unifica(q, q0
) faça
novoObj ← [p1, . . . , pn|Resto(obj)]
resposta ← Backward(BC, novoObj, Composição(θ0
, θ)) ∪ resposta
retorna resposta
Composição(θ0
, θ) é a substituição cujo efeito é idêntico ao de aplicar
cada uma das substituições em sequência
Ou seja, (p) Composição(θ0
, θ) = ((p) θ0
) θ
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 3 / 35
L.P.O. – Backward Chaining
Exemplo
1 Compatriota(x) ∧ Arma(y) ∧ Vender(x, y, z) ∧
Hostil(z) ⇒ Criminoso(x)
axioma
2 Inimigo(Pit) axioma
3 Mı́ssil(M) axioma
4 Ter(Pit, M) axioma
5 Mı́ssil(x) ∧ Ter(Pit, x) ⇒ Vender(Os, x, Pit) axioma
6 Mı́ssil(x) ⇒ Arma(x) axioma
7 Inimigo(x) ⇒ Hostil(x) axioma
8 Compatriota(Os) axioma
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 4 / 35
L.P.O. – Backward Chaining
Exemplo
1 Compatriota(x) ∧ Arma(y) ∧ Vender(x, y, z) ∧
Hostil(z) ⇒ Criminoso(x)
axioma
2 Inimigo(Pit) axioma
3 Mı́ssil(M) axioma
4 Ter(Pit, M) axioma
5 Mı́ssil(x) ∧ Ter(Pit, x) ⇒ Vender(Os, x, Pit) axioma
6 Mı́ssil(x) ⇒ Arma(x) axioma
7 Inimigo(x) ⇒ Hostil(x) axioma
8 Compatriota(Os) axioma
Criminoso(Os)
θ = {}
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 4 / 35
L.P.O. – Backward Chaining
Exemplo
1 Compatriota(x) ∧ Arma(y) ∧ Vender(x, y, z) ∧
Hostil(z) ⇒ Criminoso(x)
axioma
2 Inimigo(Pit) axioma
3 Mı́ssil(M) axioma
4 Ter(Pit, M) axioma
5 Mı́ssil(x) ∧ Ter(Pit, x) ⇒ Vender(Os, x, Pit) axioma
6 Mı́ssil(x) ⇒ Arma(x) axioma
7 Inimigo(x) ⇒ Hostil(x) axioma
8 Compatriota(Os) axioma
Criminoso(Os)
θ = {x/Os}
{x/Os}
Compatriota(Os) Arma(y) Vender(Os, y, z) Hostil(z)
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 4 / 35
L.P.O. – Backward Chaining
Exemplo
1 Compatriota(x) ∧ Arma(y) ∧ Vender(x, y, z) ∧
Hostil(z) ⇒ Criminoso(x)
axioma
2 Inimigo(Pit) axioma
3 Mı́ssil(M) axioma
4 Ter(Pit, M) axioma
5 Mı́ssil(x) ∧ Ter(Pit, x) ⇒ Vender(Os, x, Pit) axioma
6 Mı́ssil(x) ⇒ Arma(x) axioma
7 Inimigo(x) ⇒ Hostil(x) axioma
8 Compatriota(Os) axioma
Criminoso(Os)
θ = {x/Os}
{x/Os}
Compatriota(Os) Arma(y) Vender(Os, y, z) Hostil(z)
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 4 / 35
L.P.O. – Backward Chaining
Exemplo
1 Compatriota(x) ∧ Arma(y) ∧ Vender(x, y, z) ∧
Hostil(z) ⇒ Criminoso(x)
axioma
2 Inimigo(Pit) axioma
3 Mı́ssil(M) axioma
4 Ter(Pit, M) axioma
5 Mı́ssil(x) ∧ Ter(Pit, x) ⇒ Vender(Os, x, Pit) axioma
6 Mı́ssil(x) ⇒ Arma(x) axioma
7 Inimigo(x) ⇒ Hostil(x) axioma
8 Compatriota(Os) axioma
Criminoso(Os)
θ = {x/Os}
{x/Os}
Compatriota(Os) Arma(y) Vender(Os, y, z) Hostil(z)
Mı́ssil(y)
{x/y}
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 4 / 35
L.P.O. – Backward Chaining
Exemplo
1 Compatriota(x) ∧ Arma(y) ∧ Vender(x, y, z) ∧
Hostil(z) ⇒ Criminoso(x)
axioma
2 Inimigo(Pit) axioma
3 Mı́ssil(M) axioma
4 Ter(Pit, M) axioma
5 Mı́ssil(x) ∧ Ter(Pit, x) ⇒ Vender(Os, x, Pit) axioma
6 Mı́ssil(x) ⇒ Arma(x) axioma
7 Inimigo(x) ⇒ Hostil(x) axioma
8 Compatriota(Os) axioma
Criminoso(Os)
θ = {x/Os, y/M}
{x/Os}
Compatriota(Os) Arma(y) Vender(Os, y, z) Hostil(z)
Mı́ssil(y)
{x/y}
Mı́ssil(M)
{y/M}
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 4 / 35
L.P.O. – Backward Chaining
Exemplo
1 Compatriota(x) ∧ Arma(y) ∧ Vender(x, y, z) ∧
Hostil(z) ⇒ Criminoso(x)
axioma
2 Inimigo(Pit) axioma
3 Mı́ssil(M) axioma
4 Ter(Pit, M) axioma
5 Mı́ssil(x) ∧ Ter(Pit, x) ⇒ Vender(Os, x, Pit) axioma
6 Mı́ssil(x) ⇒ Arma(x) axioma
7 Inimigo(x) ⇒ Hostil(x) axioma
8 Compatriota(Os) axioma
Criminoso(Os)
θ = {x/Os, y/M}
{x/Os}
Compatriota(Os) Arma(y) Vender(Os, M, z) Hostil(z)
Mı́ssil(y)
{x/y}
Mı́ssil(M)
{y/M}
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 4 / 35
L.P.O. – Backward Chaining
Exemplo
1 Compatriota(x) ∧ Arma(y) ∧ Vender(x, y, z) ∧
Hostil(z) ⇒ Criminoso(x)
axioma
2 Inimigo(Pit) axioma
3 Mı́ssil(M) axioma
4 Ter(Pit, M) axioma
5 Mı́ssil(x) ∧ Ter(Pit, x) ⇒ Vender(Os, x, Pit) axioma
6 Mı́ssil(x) ⇒ Arma(x) axioma
7 Inimigo(x) ⇒ Hostil(x) axioma
8 Compatriota(Os) axioma
Criminoso(Os)
θ = {x/Os, y/M, z/Pit}
{x/Os}
Compatriota(Os) Arma(y) Vender(Os, M, Pit) Hostil(z)
Mı́ssil(y)
{x/y}
Mı́ssil(M)
{y/M}
Mı́ssil(M) Ter(Pit,M)
{x/M, z/Pit}
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 4 / 35
L.P.O. – Backward Chaining
Exemplo
1 Compatriota(x) ∧ Arma(y) ∧ Vender(x, y, z) ∧
Hostil(z) ⇒ Criminoso(x)
axioma
2 Inimigo(Pit) axioma
3 Mı́ssil(M) axioma
4 Ter(Pit, M) axioma
5 Mı́ssil(x) ∧ Ter(Pit, x) ⇒ Vender(Os, x, Pit) axioma
6 Mı́ssil(x) ⇒ Arma(x) axioma
7 Inimigo(x) ⇒ Hostil(x) axioma
8 Compatriota(Os) axioma
Criminoso(Os)
θ = {x/Os, y/M, z/Pit}
{x/Os}
Compatriota(Os) Arma(y) Vender(Os, M, Pit) Hostil(z)
Mı́ssil(y)
{x/y}
Mı́ssil(M)
{y/M}
Mı́ssil(M) Ter(Pit,M)
{x/M, z/Pit}
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 4 / 35
L.P.O. – Backward Chaining
Exemplo
1 Compatriota(x) ∧ Arma(y) ∧ Vender(x, y, z) ∧
Hostil(z) ⇒ Criminoso(x)
axioma
2 Inimigo(Pit) axioma
3 Mı́ssil(M) axioma
4 Ter(Pit, M) axioma
5 Mı́ssil(x) ∧ Ter(Pit, x) ⇒ Vender(Os, x, Pit) axioma
6 Mı́ssil(x) ⇒ Arma(x) axioma
7 Inimigo(x) ⇒ Hostil(x) axioma
8 Compatriota(Os) axioma
Criminoso(Os)
θ = {x/Os, y/M, z/Pit}
{x/Os}
Compatriota(Os) Arma(y) Vender(Os, M, Pit) Hostil(z)
Mı́ssil(y)
{x/y}
Mı́ssil(M)
{y/M}
Mı́ssil(M) Ter(Pit,M)
{x/M, z/Pit}
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 4 / 35
L.P.O. – Backward Chaining
Exemplo
1 Compatriota(x) ∧ Arma(y) ∧ Vender(x, y, z) ∧
Hostil(z) ⇒ Criminoso(x)
axioma
2 Inimigo(Pit) axioma
3 Mı́ssil(M) axioma
4 Ter(Pit, M) axioma
5 Mı́ssil(x) ∧ Ter(Pit, x) ⇒ Vender(Os, x, Pit) axioma
6 Mı́ssil(x) ⇒ Arma(x) axioma
7 Inimigo(x) ⇒ Hostil(x) axioma
8 Compatriota(Os) axioma
Criminoso(Os)
θ = {x/Os, y/M, z/Pit}
{x/Os}
Compatriota(Os) Arma(y) Vender(Os, M, Pit) Hostil(Pit)
Mı́ssil(y)
{x/y}
Mı́ssil(M)
{y/M}
Mı́ssil(M) Ter(Pit,M)
{x/M, z/Pit}
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 4 / 35
L.P.O. – Backward Chaining
Exemplo
1 Compatriota(x) ∧ Arma(y) ∧ Vender(x, y, z) ∧
Hostil(z) ⇒ Criminoso(x)
axioma
2 Inimigo(Pit) axioma
3 Mı́ssil(M) axioma
4 Ter(Pit, M) axioma
5 Mı́ssil(x) ∧ Ter(Pit, x) ⇒ Vender(Os, x, Pit) axioma
6 Mı́ssil(x) ⇒ Arma(x) axioma
7 Inimigo(x) ⇒ Hostil(x) axioma
8 Compatriota(Os) axioma
Criminoso(Os)
θ = {x/Os, y/M, z/Pit}
{x/Os}
Compatriota(Os) Arma(y) Vender(Os, M, Pit) Hostil(Pit)
Mı́ssil(y)
{x/y}
Mı́ssil(M)
{y/M}
Mı́ssil(M) Ter(Pit,M)
{x/M, z/Pit}
Inimigo(Pit)
{x/Pit}
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 4 / 35
L.P.O. – Backward Chaining
Exemplo
1 Compatriota(x) ∧ Arma(y) ∧ Vender(x, y, z) ∧
Hostil(z) ⇒ Criminoso(x)
axioma
2 Inimigo(Pit) axioma
3 Mı́ssil(M) axioma
4 Ter(Pit, M) axioma
5 Mı́ssil(x) ∧ Ter(Pit, x) ⇒ Vender(Os, x, Pit) axioma
6 Mı́ssil(x) ⇒ Arma(x) axioma
7 Inimigo(x) ⇒ Hostil(x) axioma
8 Compatriota(Os) axioma
Criminoso(Os)
θ = {x/Os, y/M, z/Pit}
{x/Os}
Compatriota(Os) Arma(y) Vender(Os, M, Pit) Hostil(Pit)
Mı́ssil(y)
{x/y}
Mı́ssil(M)
{y/M}
Mı́ssil(M) Ter(Pit,M)
{x/M, z/Pit}
Inimigo(Pit)
{x/Pit}
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 4 / 35
L.P.O. – Backward Chaining
Exemplo
1 Compatriota(x) ∧ Arma(y) ∧ Vender(x, y, z) ∧
Hostil(z) ⇒ Criminoso(x)
axioma
2 Inimigo(Pit) axioma
3 Mı́ssil(M) axioma
4 Ter(Pit, M) axioma
5 Mı́ssil(x) ∧ Ter(Pit, x) ⇒ Vender(Os, x, Pit) axioma
6 Mı́ssil(x) ⇒ Arma(x) axioma
7 Inimigo(x) ⇒ Hostil(x) axioma
8 Compatriota(Os) axioma
Criminoso(Os)
θ = {x/Os, y/M, z/Pit}
{x/Os}
Compatriota(Os) Arma(y) Vender(Os, M, Pit) Hostil(Pit)
Mı́ssil(y)
{x/y}
Mı́ssil(M)
{y/M}
Mı́ssil(M) Ter(Pit,M)
{x/M, z/Pit}
Inimigo(Pit)
{x/Pit}
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 4 / 35
L.P.O. – Backward Chaining
Caracterı́sticas
É uma busca em profundidade recursiva
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 5 / 35
L.P.O. – Backward Chaining
Caracterı́sticas
É uma busca em profundidade recursiva
Cláusulas são testadas na ordem em que ocorrem na base
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 5 / 35
L.P.O. – Backward Chaining
Caracterı́sticas
É uma busca em profundidade recursiva
Cláusulas são testadas na ordem em que ocorrem na base
Sofre com presença de laços
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 5 / 35
L.P.O. – Backward Chaining
Caracterı́sticas
É uma busca em profundidade recursiva
Cláusulas são testadas na ordem em que ocorrem na base
Sofre com presença de laços
Ex: Encontre um caminho de A a C, a partir da base
(testando as alternativas em ordem)
1 Ligação(A,B)
2 Ligação(B,C)
3 Ligação(x,z) ⇒ Caminho(x,z)
4 Ligação(y,z) ∧ Caminho(x,y) ⇒ Caminho(x,z)
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 5 / 35
L.P.O. – Backward Chaining
Caracterı́sticas
Caminho(A,C)?
1 Ligação(A,B)
2 Ligação(B,C)
3 Ligação(x,z) ⇒ Caminho(x,z)
4 Ligação(y,z) ∧ Caminho(x,y) ⇒ Caminho(x,z)
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 6 / 35
L.P.O. – Backward Chaining
Caracterı́sticas
Caminho(A,C)?
1 Ligação(A,B)
2 Ligação(B,C)
3 Ligação(x,z) ⇒ Caminho(x,z)
4 Ligação(y,z) ∧ Caminho(x,y) ⇒ Caminho(x,z)
Caminho(A,C)
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 6 / 35
L.P.O. – Backward Chaining
Caracterı́sticas
Caminho(A,C)?
1 Ligação(A,B)
2 Ligação(B,C)
3 Ligação(x,z) ⇒ Caminho(x,z)
4 Ligação(y,z) ∧ Caminho(x,y) ⇒ Caminho(x,z)
Caminho(A,C)
Ligação(A,C)
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 6 / 35
L.P.O. – Backward Chaining
Caracterı́sticas
Caminho(A,C)?
1 Ligação(A,B)
2 Ligação(B,C)
3 Ligação(x,z) ⇒ Caminho(x,z)
4 Ligação(y,z) ∧ Caminho(x,y) ⇒ Caminho(x,z)
Caminho(A,C)
Ligação(A,C)
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 6 / 35
L.P.O. – Backward Chaining
Caracterı́sticas
Caminho(A,C)?
1 Ligação(A,B)
2 Ligação(B,C)
3 Ligação(x,z) ⇒ Caminho(x,z)
4 Ligação(y,z) ∧ Caminho(x,y) ⇒ Caminho(x,z)
Caminho(A,C)
Ligação(y,C) Caminho(A,y)
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 6 / 35
L.P.O. – Backward Chaining
Caracterı́sticas
Caminho(A,C)?
1 Ligação(A,B)
2 Ligação(B,C)
3 Ligação(x,z) ⇒ Caminho(x,z)
4 Ligação(y,z) ∧ Caminho(x,y) ⇒ Caminho(x,z)
Caminho(A,C)
Ligação(y,C) Caminho(A,B)
Ligação(B,C)
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 6 / 35
L.P.O. – Backward Chaining
Caracterı́sticas
Caminho(A,C)?
1 Ligação(A,B)
2 Ligação(B,C)
3 Ligação(x,z) ⇒ Caminho(x,z)
4 Ligação(y,z) ∧ Caminho(x,y) ⇒ Caminho(x,z)
Caminho(A,C)
Ligação(y,C) Caminho(A,B)
Ligação(B,C) Ligação(A,B)
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 6 / 35
L.P.O. – Backward Chaining
Caracterı́sticas
Caminho(A,C)?
1 Ligação(A,B)
2 Ligação(B,C)
3 Ligação(x,z) ⇒ Caminho(x,z)
4 Ligação(y,z) ∧ Caminho(x,y) ⇒ Caminho(x,z)
Caminho(A,C)
Ligação(y,C) Caminho(A,B)
Ligação(B,C) Ligação(A,B)
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 6 / 35
L.P.O. – Backward Chaining
Caracterı́sticas
Caminho(A,C)?
1 Ligação(A,B)
2 Ligação(B,C)
3 Ligação(x,z) ⇒ Caminho(x,z)
4 Ligação(y,z) ∧ Caminho(x,y) ⇒ Caminho(x,z)
Caminho(A,C)
Ligação(y,C) Caminho(A,B)
Ligação(B,C) Ligação(A,B)
OK
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 6 / 35
L.P.O. – Backward Chaining
Caracterı́sticas
Caminho(A,C)?
1 Ligação(A,B)
2 Ligação(B,C)
3 Ligação(y,z) ∧ Caminho(x,y) ⇒ Caminho(x,z)
4 Ligação(x,z) ⇒ Caminho(x,z)
Caminho(A,C)
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 7 / 35
L.P.O. – Backward Chaining
Caracterı́sticas
Caminho(A,C)?
1 Ligação(A,B)
2 Ligação(B,C)
3 Ligação(y,z) ∧ Caminho(x,y) ⇒ Caminho(x,z)
4 Ligação(x,z) ⇒ Caminho(x,z)
Caminho(A,C)
Ligação(y,C) Caminho(A,y)
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 7 / 35
L.P.O. – Backward Chaining
Caracterı́sticas
Caminho(A,C)?
1 Ligação(A,B)
2 Ligação(B,C)
3 Ligação(y,z) ∧ Caminho(x,y) ⇒ Caminho(x,z)
4 Ligação(x,z) ⇒ Caminho(x,z)
Caminho(A,C)
Ligação(y,C) Caminho(A,B)
Ligação(B,C)
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 7 / 35
L.P.O. – Backward Chaining
Caracterı́sticas
Caminho(A,C)?
1 Ligação(A,B)
2 Ligação(B,C)
3 Ligação(y,z) ∧ Caminho(x,y) ⇒ Caminho(x,z)
4 Ligação(x,z) ⇒ Caminho(x,z)
Caminho(A,C)
Ligação(y,C) Caminho(A,B)
Ligação(B,C) Ligação(y,B) Caminho(A,y)
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 7 / 35
L.P.O. – Backward Chaining
Caracterı́sticas
Caminho(A,C)?
1 Ligação(A,B)
2 Ligação(B,C)
3 Ligação(y,z) ∧ Caminho(x,y) ⇒ Caminho(x,z)
4 Ligação(x,z) ⇒ Caminho(x,z)
Caminho(A,C)
Ligação(y,C) Caminho(A,B)
Ligação(B,C) Ligação(y,B) Caminho(A,A)
Ligação(A,B)
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 7 / 35
L.P.O. – Backward Chaining
Caracterı́sticas
Caminho(A,C)?
1 Ligação(A,B)
2 Ligação(B,C)
3 Ligação(y,z) ∧ Caminho(x,y) ⇒ Caminho(x,z)
4 Ligação(x,z) ⇒ Caminho(x,z)
Caminho(A,C)
Ligação(y,C) Caminho(A,B)
Ligação(B,C) Ligação(y,B) Caminho(A,A)
Ligação(A,B)
. . .
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 7 / 35
L.P.O. – Backward Chaining
Caracterı́sticas
Caminho(A,C)?
1 Ligação(A,B)
2 Ligação(B,C)
3 Ligação(y,z) ∧ Caminho(x,y) ⇒ Caminho(x,z)
4 Ligação(x,z) ⇒ Caminho(x,z)
Caminho(A,C)
Ligação(y,C) Caminho(A,B)
Ligação(B,C) Ligação(y,B) Caminho(A,A)
Ligação(A,B)
. . .
Bastou invertermos
a ordem para gerar-
mos mais tentativas.
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 7 / 35
L.P.O. – Backward Chaining
Caracterı́sticas
Caminho(A,C)?
1 Ligação(A,B)
2 Ligação(B,C)
3 Ligação(y,z) ∧ Caminho(x,y) ⇒ Caminho(x,z)
4 Ligação(x,z) ⇒ Caminho(x,z)
Caminho(A,C)
Ligação(y,C) Caminho(A,B)
Ligação(B,C) Ligação(y,B) Caminho(A,A)
Ligação(A,B)
. . .
Dependendo da ordem,
até infinitas tentativas...
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 7 / 35
L.P.O. – Backward Chaining
Caracterı́sticas
Caminho(A,C)?
1 Ligação(A,B)
2 Ligação(B,C)
3 Ligação(y,z) ∧ Caminho(x,y) ⇒ Caminho(x,z)
4 Ligação(x,z) ⇒ Caminho(x,z)
Caminho(A,C)
Ligação(y,C) Caminho(A,B)
Ligação(B,C) Ligação(y,B) Caminho(A,A)
Ligação(A,B)
. . .
Note que forward chaining
não sofre desse problema
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 7 / 35
L.P.O. – Backward Chaining
Caracterı́sticas
Caminho(A,C)?
1 Ligação(A,B)
2 Ligação(B,C)
3 Ligação(y,z) ∧ Caminho(x,y) ⇒ Caminho(x,z)
4 Ligação(x,z) ⇒ Caminho(x,z)
Caminho(A,C)
Ligação(y,C) Caminho(A,B)
Ligação(B,C) Ligação(y,B) Caminho(A,A)
Ligação(A,B)
. . .
De Caminho(A,B) e
Caminho(B,C) sai di-
reto Caminho(A,C)
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 7 / 35
L.P.O. – Backward Chaining
Caracterı́sticas
Sofre com computações redundantes
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 8 / 35
L.P.O. – Backward Chaining
Caracterı́sticas
Sofre com computações redundantes
Solução: Guarde resultados já obtidos para sub-objetivos e
reuse-os.
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 8 / 35
L.P.O. – Backward Chaining
Programação Lógica
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 9 / 35
Programação Lógica
Caracterı́sticas
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 10 / 35
Programação Lógica
Caracterı́sticas
Programas são construı́dos pela expressão do
conhecimento em uma linguagem formal
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 10 / 35
Programação Lógica
Caracterı́sticas
Programas são construı́dos pela expressão do
conhecimento em uma linguagem formal
São conjuntos de cláusulas definidas
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 10 / 35
Programação Lógica
Caracterı́sticas
Programas são construı́dos pela expressão do
conhecimento em uma linguagem formal
São conjuntos de cláusulas definidas
Problemas são resolvidos via inferência a partir
desse conhecimento
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 10 / 35
Programação Lógica
Caracterı́sticas
Programas são construı́dos pela expressão do
conhecimento em uma linguagem formal
São conjuntos de cláusulas definidas
Problemas são resolvidos via inferência a partir
desse conhecimento
Alguns usos:
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 10 / 35
Programação Lógica
Caracterı́sticas
Programas são construı́dos pela expressão do
conhecimento em uma linguagem formal
São conjuntos de cláusulas definidas
Problemas são resolvidos via inferência a partir
desse conhecimento
Alguns usos:
Linguagem de prototipação, Análise sintática de lı́ngua
natural, Sistemas especialistas etc
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 10 / 35
Programação Lógica
Caracterı́sticas
Programas são construı́dos pela expressão do
conhecimento em uma linguagem formal
São conjuntos de cláusulas definidas
Problemas são resolvidos via inferência a partir
desse conhecimento
Alguns usos:
Linguagem de prototipação, Análise sintática de lı́ngua
natural, Sistemas especialistas etc
Prolog é a linguagem mais usada, mas não a única
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 10 / 35
Programação Lógica
Programação Lógica × Não Lógica
Lógica Não Lógica
Identifique o problema Identifique o problema
Reúna a informação Reúna a informação
(Pausa para o café) Identifique soluções
Codifique a informação na base Programe a solução
Codifique instâncias do
problema como fatos
Codifique instâncias do
problema como dados
Faça perguntas (queries) Aplique o programa aos dados
Encontre fatos falsos Corrija erros de procedimento
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 11 / 35
Programação Lógica – Prolog
Notação
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 12 / 35
Programação Lógica – Prolog
Notação
Variáveis: iniciam com letras maiúsculas
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 12 / 35
Programação Lógica – Prolog
Notação
Variáveis: iniciam com letras maiúsculas
Contantes: escritas com letras minúsculas
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 12 / 35
Programação Lógica – Prolog
Notação
Variáveis: iniciam com letras maiúsculas
Contantes: escritas com letras minúsculas
Cláusulas são escritas com o consequente antes dos
antecedentes:
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 12 / 35
Programação Lógica – Prolog
Notação
Variáveis: iniciam com letras maiúsculas
Contantes: escritas com letras minúsculas
Cláusulas são escritas com o consequente antes dos
antecedentes:
criminoso(X) :- compatriota(X), arma(Y), vender(X,Y,Z),
hostil(Z).
(compatriota(x)∧arma(y)∧vender(x, y, z)∧hostil(z) ⇒ criminoso(x))
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 12 / 35
Programação Lógica – Prolog
Notação
Variáveis: iniciam com letras maiúsculas
Contantes: escritas com letras minúsculas
Cláusulas são escritas com o consequente antes dos
antecedentes:
criminoso(X) :- compatriota(X), arma(Y), vender(X,Y,Z),
hostil(Z).
(compatriota(x)∧arma(y)∧vender(x, y, z)∧hostil(z) ⇒ criminoso(x))
Queries são feitas diretamente ao interpretador
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 12 / 35
Programação Lógica – Prolog
Notação
Variáveis: iniciam com letras maiúsculas
Contantes: escritas com letras minúsculas
Cláusulas são escritas com o consequente antes dos
antecedentes:
criminoso(X) :- compatriota(X), arma(Y), vender(X,Y,Z),
hostil(Z).
(compatriota(x)∧arma(y)∧vender(x, y, z)∧hostil(z) ⇒ criminoso(x))
Queries são feitas diretamente ao interpretador
Sim... é interpretada, mas há versões compiladas
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 12 / 35
Programação Lógica – Prolog
Caracterı́sticas
A execução de um programa é feita via backward
chaining, usando busca em profundidade
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 13 / 35
Programação Lógica – Prolog
Caracterı́sticas
A execução de um programa é feita via backward
chaining, usando busca em profundidade
Cláusulas são testadas na ordem em que foram escritas
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 13 / 35
Programação Lógica – Prolog
Caracterı́sticas
A execução de um programa é feita via backward
chaining, usando busca em profundidade
Cláusulas são testadas na ordem em que foram escritas
A base de conhecimento (ou seja, regras e fatos) só
pode ser lida de arquivos
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 13 / 35
Programação Lógica – Prolog
Caracterı́sticas
A execução de um programa é feita via backward
chaining, usando busca em profundidade
Cláusulas são testadas na ordem em que foram escritas
A base de conhecimento (ou seja, regras e fatos) só
pode ser lida de arquivos
Via “[’nome do arquivo’].”
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 13 / 35
Programação Lógica – Prolog
Caracterı́sticas
A execução de um programa é feita via backward
chaining, usando busca em profundidade
Cláusulas são testadas na ordem em que foram escritas
A base de conhecimento (ou seja, regras e fatos) só
pode ser lida de arquivos
Via “[’nome do arquivo’].”
Repare o ’.’ ao final → Todo comando em prolog termina
em ’.’
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 13 / 35
Programação Lógica – Prolog
Funcionalidades externas à inferência lógica:
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 14 / 35
Programação Lógica – Prolog
Funcionalidades externas à inferência lógica:
Funções aritméticas
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 14 / 35
Programação Lógica – Prolog
Funcionalidades externas à inferência lógica:
Funções aritméticas
Ex: “X is 7+4.”, “X is 3*5+2.” etc
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 14 / 35
Programação Lógica – Prolog
Funcionalidades externas à inferência lógica:
Funções aritméticas
Ex: “X is 7+4.”, “X is 3*5+2.” etc
“Provadas” pela execução de código, em vez de inferência
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 14 / 35
Programação Lógica – Prolog
Funcionalidades externas à inferência lógica:
Funções aritméticas
Ex: “X is 7+4.”, “X is 3*5+2.” etc
“Provadas” pela execução de código, em vez de inferência
Predicados de entrada e saı́da
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 14 / 35
Programação Lógica – Prolog
Funcionalidades externas à inferência lógica:
Funções aritméticas
Ex: “X is 7+4.”, “X is 3*5+2.” etc
“Provadas” pela execução de código, em vez de inferência
Predicados de entrada e saı́da
“write(termo)” e “read(variável)”
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 14 / 35
Programação Lógica – Prolog
Funcionalidades externas à inferência lógica:
Funções aritméticas
Ex: “X is 7+4.”, “X is 3*5+2.” etc
“Provadas” pela execução de código, em vez de inferência
Predicados de entrada e saı́da
“write(termo)” e “read(variável)”
assert/retract: modificam a base de conhecimento
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 14 / 35
Programação Lógica – Prolog
Funcionalidades externas à inferência lógica:
Funções aritméticas
Ex: “X is 7+4.”, “X is 3*5+2.” etc
“Provadas” pela execução de código, em vez de inferência
Predicados de entrada e saı́da
“write(termo)” e “read(variável)”
assert/retract: modificam a base de conhecimento
Igualdade (operador =)
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 14 / 35
Programação Lógica – Prolog
Funcionalidades externas à inferência lógica:
Funções aritméticas
Ex: “X is 7+4.”, “X is 3*5+2.” etc
“Provadas” pela execução de código, em vez de inferência
Predicados de entrada e saı́da
“write(termo)” e “read(variável)”
assert/retract: modificam a base de conhecimento
Igualdade (operador =)
Verifica se ambos os termos são unificáveis (em vez de
referenciarem o mesmo objeto)
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 14 / 35
Programação Lógica – Prolog
Exemplo
criminoso(X) :- compatriota(X),arma(Y),vender(X,Y,Z),hostil(Z).
arma(X) :- missil(X).
hostil(X) :- inimigo(X).
vender(osmar,X,pitbullandia):- missil(X), ter(pitbullandia,X).
ter(pitbullandia,m1).
missil(m1).
compatriota(osmar).
inimigo(pitbullandia).
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 15 / 35
Programação Lógica – Prolog
Negação
E se quisermos dizer que algo não é verdade?
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 16 / 35
Programação Lógica – Prolog
Negação
E se quisermos dizer que algo não é verdade?
Problemas:
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 16 / 35
Programação Lógica – Prolog
Negação
E se quisermos dizer que algo não é verdade?
Problemas:
A regra resultante não é uma cláusula definida (literais
devem ser positivos)
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 16 / 35
Programação Lógica – Prolog
Negação
E se quisermos dizer que algo não é verdade?
Problemas:
A regra resultante não é uma cláusula definida (literais
devem ser positivos)
Em LPO, não temos como concluir uma negação →
Somente fatos positivos são derivados
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 16 / 35
Programação Lógica – Prolog
Negação
Em programação lógica, tipicamente assumimos um
mundo fechado
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 17 / 35
Programação Lógica – Prolog
Negação
Em programação lógica, tipicamente assumimos um
mundo fechado
Sabemos tudo que há para saber sobre o domı́nio
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 17 / 35
Programação Lógica – Prolog
Negação
Em programação lógica, tipicamente assumimos um
mundo fechado
Sabemos tudo que há para saber sobre o domı́nio
Se não sabemos algo (ou não podemos prová-lo), então deve
ser falso
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 17 / 35
Programação Lógica – Prolog
Negação
Em programação lógica, tipicamente assumimos um
mundo fechado
Sabemos tudo que há para saber sobre o domı́nio
Se não sabemos algo (ou não podemos prová-lo), então deve
ser falso
Que fazer então?
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 17 / 35
Programação Lógica – Prolog
Negação
Em programação lógica, tipicamente assumimos um
mundo fechado
Sabemos tudo que há para saber sobre o domı́nio
Se não sabemos algo (ou não podemos prová-lo), então deve
ser falso
Que fazer então?
Simular a negação usando a falha em prová-la
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 17 / 35
Programação Lógica – Prolog
Simulando Negação
Se não conseguimos provar, então é falso
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 18 / 35
Programação Lógica – Prolog
Simulando Negação
Se não conseguimos provar, então é falso
legal(X) :- + ilegal(X)
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 18 / 35
Programação Lógica – Prolog
Simulando Negação
Se não conseguimos provar, então é falso
legal(X) :- + ilegal(X)
+ objetivo será verdadeiro se o objetivo não puder ser
provado
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 18 / 35
Programação Lógica – Prolog
Simulando Negação
Se não conseguimos provar, então é falso
legal(X) :- + ilegal(X)
+ objetivo será verdadeiro se o objetivo não puder ser
provado
O interpretador fará uma busca em todas as coisas
ilegais, comparando-as com X
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 18 / 35
Programação Lógica – Prolog
Simulando Negação
Se não conseguimos provar, então é falso
legal(X) :- + ilegal(X)
+ objetivo será verdadeiro se o objetivo não puder ser
provado
O interpretador fará uma busca em todas as coisas
ilegais, comparando-as com X
Se nenhum fato ilegal for o mesmo que X, X é legal
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 18 / 35
Programação Lógica – Prolog
Simulando Negação
Se não conseguimos provar, então é falso
legal(X) :- + ilegal(X)
+ objetivo será verdadeiro se o objetivo não puder ser
provado
O interpretador fará uma busca em todas as coisas
ilegais, comparando-as com X
Se nenhum fato ilegal for o mesmo que X, X é legal
Tudo que eu não puder provar ilegal, é legal
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 18 / 35
Programação Lógica – Prolog
Simulando Negação
Se não conseguimos provar, então é falso
legal(X) :- + ilegal(X)
+ objetivo será verdadeiro se o objetivo não puder ser
provado
O interpretador fará uma busca em todas as coisas
ilegais, comparando-as com X
Se nenhum fato ilegal for o mesmo que X, X é legal
Tudo que eu não puder provar ilegal, é legal
Perigoso, se não soubermos tudo sobre o domı́nio
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 18 / 35
Programação Lógica – Prolog
Simulando Negação
Se não conseguimos provar, então é falso
legal(X) :- + ilegal(X)
+ objetivo será verdadeiro se o objetivo não puder ser
provado
O interpretador fará uma busca em todas as coisas
ilegais, comparando-as com X
Se nenhum fato ilegal for o mesmo que X, X é legal
Tudo que eu não puder provar ilegal, é legal
Perigoso, se não soubermos tudo sobre o domı́nio
Em uma base vazia, qualquer coisa pode ser derivada assim
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 18 / 35
Programação Lógica – Prolog
Simulando Negação – Exemplo
legal(X) :- + ilegal(X).
ilegal(roubar).
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 19 / 35
Programação Lógica – Prolog
E o calcanhar de Aquiles...
caminho(X,Z) :- ligacao(X,Z).
caminho(X,Z) :- caminho(X,Y), ligacao(Y,Z).
ligacao(a,b).
ligacao(b,c).
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 20 / 35
Programação Lógica – Prolog
E o calcanhar de Aquiles...
caminho(X,Z) :- ligacao(X,Z).
caminho(X,Z) :- caminho(X,Y), ligacao(Y,Z).
ligacao(a,b).
ligacao(b,c).
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 20 / 35
Programação Lógica – Prolog
E o calcanhar de Aquiles...
caminho(X,Z) :- ligacao(X,Z).
caminho(X,Z) :- caminho(X,Y), ligacao(Y,Z).
ligacao(a,b).
ligacao(b,c).
caminho(X,Z) :- caminho(X,Y), ligacao(Y,Z).
caminho(X,Z) :- ligacao(X,Z).
ligacao(a,b).
ligacao(b,c).
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 20 / 35
Programação Lógica – Prolog
E o calcanhar de Aquiles...
caminho(X,Z) :- ligacao(X,Z).
caminho(X,Z) :- caminho(X,Y), ligacao(Y,Z).
ligacao(a,b).
ligacao(b,c).
caminho(X,Z) :- caminho(X,Y), ligacao(Y,Z).
caminho(X,Z) :- ligacao(X,Z).
ligacao(a,b).
ligacao(b,c).
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 20 / 35
Programação Lógica – Prolog
Outros problemas...
Prolog não faz o teste de ocorrência
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 21 / 35
Programação Lógica – Prolog
Outros problemas...
Prolog não faz o teste de ocorrência
Quanto unifica uma variável com um termo complexo, não
verifica se a variável ocorre dentro do termo ({x/f (x)})
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 21 / 35
Programação Lógica – Prolog
Outros problemas...
Prolog não faz o teste de ocorrência
Quanto unifica uma variável com um termo complexo, não
verifica se a variável ocorre dentro do termo ({x/f (x)})
Assim, algumas inferências inconsistentes podem ser feitas
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 21 / 35
Programação Lógica – Prolog
Outros problemas...
Prolog não faz o teste de ocorrência
Quanto unifica uma variável com um termo complexo, não
verifica se a variável ocorre dentro do termo ({x/f (x)})
Assim, algumas inferências inconsistentes podem ser feitas
Prolog não faz checagem para identificar recursão
infinita
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 21 / 35
Programação Lógica – Prolog
Outros problemas...
Prolog não faz o teste de ocorrência
Quanto unifica uma variável com um termo complexo, não
verifica se a variável ocorre dentro do termo ({x/f (x)})
Assim, algumas inferências inconsistentes podem ser feitas
Prolog não faz checagem para identificar recursão
infinita
Isso o torna rápido quando são dados os axiomas corretos
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 21 / 35
Programação Lógica – Prolog
Outros problemas...
Prolog não faz o teste de ocorrência
Quanto unifica uma variável com um termo complexo, não
verifica se a variável ocorre dentro do termo ({x/f (x)})
Assim, algumas inferências inconsistentes podem ser feitas
Prolog não faz checagem para identificar recursão
infinita
Isso o torna rápido quando são dados os axiomas corretos
E incompleto quando são dados os errados
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 21 / 35
Inferência em LPO
Usos
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 22 / 35
Inferência em LPO
Usos
Resolução
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 22 / 35
Inferência em LPO
Usos
Resolução
Usada por provadores automáticos de teoremas
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 22 / 35
Inferência em LPO
Usos
Resolução
Usada por provadores automáticos de teoremas
Forward Chaining:
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 22 / 35
Inferência em LPO
Usos
Resolução
Usada por provadores automáticos de teoremas
Forward Chaining:
Aplicada a bases dedutivas e sistemas de produção
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 22 / 35
Inferência em LPO
Usos
Resolução
Usada por provadores automáticos de teoremas
Forward Chaining:
Aplicada a bases dedutivas e sistemas de produção
Backward Chaining
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 22 / 35
Inferência em LPO
Usos
Resolução
Usada por provadores automáticos de teoremas
Forward Chaining:
Aplicada a bases dedutivas e sistemas de produção
Backward Chaining
Usada em programação lógica
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 22 / 35
Inferência em LPO e LProp: Fragilidades
Monotonicidade
O conjunto de sentenças acarretadas pode apenas
aumentar, na medida em que informação é
adicionada à base
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 23 / 35
Inferência em LPO e LProp: Fragilidades
Monotonicidade
O conjunto de sentenças acarretadas pode apenas
aumentar, na medida em que informação é
adicionada à base
Ou seja, a adição de premissas não podem mudar conclusões
antigas
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 23 / 35
Inferência em LPO e LProp: Fragilidades
Monotonicidade
O conjunto de sentenças acarretadas pode apenas
aumentar, na medida em que informação é
adicionada à base
Ou seja, a adição de premissas não podem mudar conclusões
antigas
Isso significa que, se BC |= α, então BC ∧ β |= α,
onde β é uma nova asserção na base
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 23 / 35
Inferência em LPO e LProp: Fragilidades
Monotonicidade
O conjunto de sentenças acarretadas pode apenas
aumentar, na medida em que informação é
adicionada à base
Ou seja, a adição de premissas não podem mudar conclusões
antigas
Isso significa que, se BC |= α, então BC ∧ β |= α,
onde β é uma nova asserção na base
Se antes BC |= α, a adição de β a BC não pode mudar isso,
e BC ∧ β |= α
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 23 / 35
Inferência em LPO e LProp: Fragilidades
Monotonicidade
O conjunto de sentenças acarretadas pode apenas
aumentar, na medida em que informação é
adicionada à base
Ou seja, a adição de premissas não podem mudar conclusões
antigas
Isso significa que, se BC |= α, então BC ∧ β |= α,
onde β é uma nova asserção na base
Se antes BC |= α, a adição de β a BC não pode mudar isso,
e BC ∧ β |= α
Propriedade chamada de monotonicidade do
acarretamento
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 23 / 35
Inferência em LPO e LProp: Fragilidades
Monotonicidade
Isso faz com que regras de inferência possam ser
aplicadas toda vez que suas premissas forem
encontradas na base
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 24 / 35
Inferência em LPO e LProp: Fragilidades
Monotonicidade
Isso faz com que regras de inferência possam ser
aplicadas toda vez que suas premissas forem
encontradas na base
Não haverá nada na base para invalidar a conclusão dessa
regra
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 24 / 35
Inferência em LPO e LProp: Fragilidades
Monotonicidade
Isso faz com que regras de inferência possam ser
aplicadas toda vez que suas premissas forem
encontradas na base
Não haverá nada na base para invalidar a conclusão dessa
regra
E qual o problema com isso?
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 24 / 35
Inferência em LPO e LProp: Fragilidades
Monotonicidade
Isso faz com que regras de inferência possam ser
aplicadas toda vez que suas premissas forem
encontradas na base
Não haverá nada na base para invalidar a conclusão dessa
regra
E qual o problema com isso?
Não captura uma propriedade comum do raciocı́nio humano
→ a mudança de ideia
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 24 / 35
Inferência em LPO e LProp: Fragilidades
Monotonicidade
Isso faz com que regras de inferência possam ser
aplicadas toda vez que suas premissas forem
encontradas na base
Não haverá nada na base para invalidar a conclusão dessa
regra
E qual o problema com isso?
Não captura uma propriedade comum do raciocı́nio humano
→ a mudança de ideia
Para esses casos, existe a lógica não monotônica
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 24 / 35
Inferência em LPO e LProp: Fragilidades
Monotonicidade
Na lógica não-monotônica, podemos tirar
conclusões provisoriamente
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 25 / 35
Inferência em LPO e LProp: Fragilidades
Monotonicidade
Na lógica não-monotônica, podemos tirar
conclusões provisoriamente
Nos reservando o direito de retratação à luz de nova
informação
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 25 / 35
Inferência em LPO e LProp: Fragilidades
Monotonicidade
Na lógica não-monotônica, podemos tirar
conclusões provisoriamente
Nos reservando o direito de retratação à luz de nova
informação
O conjunto de conclusões apoiadas pela base não
necessariamente aumenta
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 25 / 35
Inferência em LPO e LProp: Fragilidades
Monotonicidade
Na lógica não-monotônica, podemos tirar
conclusões provisoriamente
Nos reservando o direito de retratação à luz de nova
informação
O conjunto de conclusões apoiadas pela base não
necessariamente aumenta
Pode até reduzir
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 25 / 35
Inferência em LPO e LProp: Fragilidades
Tempo
Como lidar com tempo em LPO ou lógica
proposicional?
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 26 / 35
Inferência em LPO e LProp: Fragilidades
Tempo
Como lidar com tempo em LPO ou lógica
proposicional?
Como fazer uma afirmação valer apenas em um determinado
momento?
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 26 / 35
Inferência em LPO e LProp: Fragilidades
Tempo
Como lidar com tempo em LPO ou lógica
proposicional?
Como fazer uma afirmação valer apenas em um determinado
momento?
Para isso existe a lógica temporal
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 26 / 35
Inferência em LPO e LProp: Fragilidades
Tempo
Como lidar com tempo em LPO ou lógica
proposicional?
Como fazer uma afirmação valer apenas em um determinado
momento?
Para isso existe a lógica temporal
Assume que fatos valem em instantes particulares, e que
esses instantes são ordenados
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 26 / 35
Inferência em LPO e LProp: Fragilidades
Tempo
Como lidar com tempo em LPO ou lógica
proposicional?
Como fazer uma afirmação valer apenas em um determinado
momento?
Para isso existe a lógica temporal
Assume que fatos valem em instantes particulares, e que
esses instantes são ordenados
Instantes podem ser pontuais ou intervalos
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 26 / 35
Inferência em LPO e LProp: Fragilidades
Ordens mais altas
Em LPO trabalhamos com objetos e suas relações
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 27 / 35
Inferência em LPO e LProp: Fragilidades
Ordens mais altas
Em LPO trabalhamos com objetos e suas relações
Ex: ∃x ∀y P(f (x)) ⇒ Q(y)
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 27 / 35
Inferência em LPO e LProp: Fragilidades
Ordens mais altas
Em LPO trabalhamos com objetos e suas relações
Ex: ∃x ∀y P(f (x)) ⇒ Q(y)
E como podemos fazer afirmações sobre
propriedades de objetos?
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 27 / 35
Inferência em LPO e LProp: Fragilidades
Ordens mais altas
Em LPO trabalhamos com objetos e suas relações
Ex: ∃x ∀y P(f (x)) ⇒ Q(y)
E como podemos fazer afirmações sobre
propriedades de objetos?
Ex: Todas as raças de cães vem dos lobos?
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 27 / 35
Inferência em LPO e LProp: Fragilidades
Ordens mais altas
Em LPO trabalhamos com objetos e suas relações
Ex: ∃x ∀y P(f (x)) ⇒ Q(y)
E como podemos fazer afirmações sobre
propriedades de objetos?
Ex: Todas as raças de cães vem dos lobos?
Lógica de Segunda Ordem
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 27 / 35
Inferência em LPO e LProp: Fragilidades
Ordens mais altas
Em LPO trabalhamos com objetos e suas relações
Ex: ∃x ∀y P(f (x)) ⇒ Q(y)
E como podemos fazer afirmações sobre
propriedades de objetos?
Ex: Todas as raças de cães vem dos lobos?
Lógica de Segunda Ordem
Permite expressões como ∀Q ∃P ∃f ∃x ∀y P(f (x)) ⇒ Q(y)
(quantificador do tipo “para todo conjunto de objetos”)
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 27 / 35
Inferência em LPO e LProp: Fragilidades
Ordens mais altas
Em LPO trabalhamos com objetos e suas relações
Ex: ∃x ∀y P(f (x)) ⇒ Q(y)
E como podemos fazer afirmações sobre
propriedades de objetos?
Ex: Todas as raças de cães vem dos lobos?
Lógica de Segunda Ordem
Permite expressões como ∀Q ∃P ∃f ∃x ∀y P(f (x)) ⇒ Q(y)
(quantificador do tipo “para todo conjunto de objetos”)
Vê as relações e funções da LPO como objetos em si
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 27 / 35
Inferência em LPO e LProp: Fragilidades
E muito mais...
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 28 / 35
Inferência em LPO e LProp: Fragilidades
E muito mais...
Há ainda as que tratam de incerteza
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 28 / 35
Inferência em LPO e LProp: Fragilidades
E muito mais...
Há ainda as que tratam de incerteza
Lógica probabilı́stica
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 28 / 35
Inferência em LPO e LProp: Fragilidades
E muito mais...
Há ainda as que tratam de incerteza
Lógica probabilı́stica
De inconsistência
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 28 / 35
Inferência em LPO e LProp: Fragilidades
E muito mais...
Há ainda as que tratam de incerteza
Lógica probabilı́stica
De inconsistência
Lógica paraconsistente
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 28 / 35
Inferência em LPO e LProp: Fragilidades
E muito mais...
Há ainda as que tratam de incerteza
Lógica probabilı́stica
De inconsistência
Lógica paraconsistente
De imprecisão
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 28 / 35
Inferência em LPO e LProp: Fragilidades
E muito mais...
Há ainda as que tratam de incerteza
Lógica probabilı́stica
De inconsistência
Lógica paraconsistente
De imprecisão
Lógica difusa (Fuzzy) (veremos mais adiante)
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 28 / 35
Inferência em LPO e LProp: Fragilidades
E muito mais...
Há ainda as que tratam de incerteza
Lógica probabilı́stica
De inconsistência
Lógica paraconsistente
De imprecisão
Lógica difusa (Fuzzy) (veremos mais adiante)
etc
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 28 / 35
Lógica de Primeira Ordem
Considerações Finais
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 29 / 35
Lógica de Primeira Ordem
Considerações Finais
LPO é Completa (Gödel, 1929)
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 29 / 35
Lógica de Primeira Ordem
Considerações Finais
LPO é Completa (Gödel, 1929)
Se a base acarreta S, então podemos provar S a partir da
base
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 29 / 35
Lógica de Primeira Ordem
Considerações Finais
LPO é Completa (Gödel, 1929)
Se a base acarreta S, então podemos provar S a partir da
base
Resolução é um sistema de provas completo para
LPO (Robinson, 1965)
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 29 / 35
Lógica de Primeira Ordem
Considerações Finais
LPO é Completa (Gödel, 1929)
Se a base acarreta S, então podemos provar S a partir da
base
Resolução é um sistema de provas completo para
LPO (Robinson, 1965)
Se uma prova existir, podemos encontrá-la
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 29 / 35
Lógica de Primeira Ordem
Considerações Finais
LPO é Completa (Gödel, 1929)
Se a base acarreta S, então podemos provar S a partir da
base
Resolução é um sistema de provas completo para
LPO (Robinson, 1965)
Se uma prova existir, podemos encontrá-la
E se não existir? O processo pode continuar para
sempre
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 29 / 35
Lógica de Primeira Ordem
Considerações Finais
LPO é Completa (Gödel, 1929)
Se a base acarreta S, então podemos provar S a partir da
base
Resolução é um sistema de provas completo para
LPO (Robinson, 1965)
Se uma prova existir, podemos encontrá-la
E se não existir? O processo pode continuar para
sempre
LPO é semi-decidı́vel: se houver prova, encontramos, se não
houver, podemos ficar buscando eternamente
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 29 / 35
Lógica de Primeira Ordem
E o balde de água fria... Gödel (1931)
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 30 / 35
Lógica de Primeira Ordem
E o balde de água fria... Gödel (1931)
1o
Teorema da Incompletude:
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 30 / 35
Lógica de Primeira Ordem
E o balde de água fria... Gödel (1931)
1o
Teorema da Incompletude:
Em qualquer sistema formal consistente F, dentro do qual
possa ser feita uma certa quantidade de aritmética, é
possı́vel construir uma sentença (chamada sentença de
Gödel) G(F) tal que:
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 30 / 35
Lógica de Primeira Ordem
E o balde de água fria... Gödel (1931)
1o
Teorema da Incompletude:
Em qualquer sistema formal consistente F, dentro do qual
possa ser feita uma certa quantidade de aritmética, é
possı́vel construir uma sentença (chamada sentença de
Gödel) G(F) tal que:
G(F) é uma sentença de F mas não pode ser provada dentro de F
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 30 / 35
Lógica de Primeira Ordem
E o balde de água fria... Gödel (1931)
1o
Teorema da Incompletude:
Em qualquer sistema formal consistente F, dentro do qual
possa ser feita uma certa quantidade de aritmética, é
possı́vel construir uma sentença (chamada sentença de
Gödel) G(F) tal que:
G(F) é uma sentença de F mas não pode ser provada dentro de F
Se F for consistente, então G(F) é verdadeira
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 30 / 35
Lógica de Primeira Ordem
E o balde de água fria... Gödel (1931)
1o
Teorema da Incompletude:
Em qualquer sistema formal consistente F, dentro do qual
possa ser feita uma certa quantidade de aritmética, é
possı́vel construir uma sentença (chamada sentença de
Gödel) G(F) tal que:
G(F) é uma sentença de F mas não pode ser provada dentro de F
Se F for consistente, então G(F) é verdadeira
Ou seja, não há sistema de provas completo e consistente
para LPO + aritmética
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 30 / 35
Lógica de Primeira Ordem
E o balde de água fria... Gödel (1931)
1o
Teorema da Incompletude:
Em qualquer sistema formal consistente F, dentro do qual
possa ser feita uma certa quantidade de aritmética, é
possı́vel construir uma sentença (chamada sentença de
Gödel) G(F) tal que:
G(F) é uma sentença de F mas não pode ser provada dentro de F
Se F for consistente, então G(F) é verdadeira
Ou seja, não há sistema de provas completo e consistente
para LPO + aritmética
Ou há sentenças que são verdadeiras, mas não prováveis
(incompleto), ou que são prováveis, mas não verdadeiras
(inconsistente)
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 30 / 35
Lógica de Primeira Ordem
E o balde de água fria... Gödel (1931)
1o
Teorema da Incompletude (cont.):
Isso ocorre porque a aritmética nos permite construir
sentenças auto-referenciáveis
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 31 / 35
Lógica de Primeira Ordem
E o balde de água fria... Gödel (1931)
1o
Teorema da Incompletude (cont.):
Isso ocorre porque a aritmética nos permite construir
sentenças auto-referenciáveis
P: “P não pode ser provada”
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 31 / 35
Lógica de Primeira Ordem
E o balde de água fria... Gödel (1931)
1o
Teorema da Incompletude (cont.):
Isso ocorre porque a aritmética nos permite construir
sentenças auto-referenciáveis
P: “P não pode ser provada”
Se P for verdadeira, então não podemos prová-la, e o sistema é
incompleto
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 31 / 35
Lógica de Primeira Ordem
E o balde de água fria... Gödel (1931)
1o
Teorema da Incompletude (cont.):
Isso ocorre porque a aritmética nos permite construir
sentenças auto-referenciáveis
P: “P não pode ser provada”
Se P for verdadeira, então não podemos prová-la, e o sistema é
incompleto
Se P for falsa, então P pode ser provada, e acabamos de derivar
uma sentença falsa → o sistema é inconsistente
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 31 / 35
Lógica de Primeira Ordem
E o balde de água fria... Gödel (1931)
2o
Teorema da Incompletude:
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 32 / 35
Lógica de Primeira Ordem
E o balde de água fria... Gödel (1931)
2o
Teorema da Incompletude:
Em qualquer sistema formal consistente F, dentro do qual
possa ser feita uma certa quantidade de aritmética, não é
possı́vel provar que o sistema em si é consistente
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 32 / 35
Lógica de Primeira Ordem
E o balde de água fria... Gödel (1931)
2o
Teorema da Incompletude:
Em qualquer sistema formal consistente F, dentro do qual
possa ser feita uma certa quantidade de aritmética, não é
possı́vel provar que o sistema em si é consistente
E, com isso, não podemos provar todos os teoremas
da matemática dentro de qualquer sistema de
axiomas
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 32 / 35
Lógica de Primeira Ordem
E o balde de água fria... Gödel (1931)
2o
Teorema da Incompletude:
Em qualquer sistema formal consistente F, dentro do qual
possa ser feita uma certa quantidade de aritmética, não é
possı́vel provar que o sistema em si é consistente
E, com isso, não podemos provar todos os teoremas
da matemática dentro de qualquer sistema de
axiomas
Sequer conseguimos provar que o sistema como um todo é
consistente
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 32 / 35
Referências
Russell, S.; Norvig P. (2010): Artificial Intelligence: A Modern Approach.
Prentice Hall. 3a ed.
Slides do livro: aima.eecs.berkeley.edu/slides-pdf/
Hiż, A. (1957): Inferential Equivalence and Natural Deduction. The
Journal of Symbolic Logic, 22(3). pp. 237-240.
Nilsson, N. J. (1986): Probabilistic Logic. Artificial Intelligence, 28(1).
pp. 71-87.
ocw.mit.edu/OcwWeb/Electrical-Engineering-
and-Computer-Science/6-034Spring-2005/LectureNotes/index.
htm
jmvidal.cse.sc.edu/talks/learningrules/
first-orderlogicsdefs.xml
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 33 / 35
Referências
www.sciencedirect.com/topics/computer-science/
unification-algorithm
logic.stanford.edu/intrologic/secondary/notes/chapter_12.
html
plato.stanford.edu/entries/logic-nonmonotonic/
stanford.library.sydney.edu.au/archives/sum2008/entries/
logic-nonmonotonic/
philosophy.fandom.com/wiki/Monotonicity_of_entailment
plato.stanford.edu/entries/logic-higher-order/
math.stackexchange.com/questions/1052118/what-are-some-
examples-of-third-fourth-or-fifth-order-logic-sentences
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 34 / 35
Referências
plato.stanford.edu/entries/logic-paraconsistent/
www.scientificamerican.com/article/
what-is-fuzzy-logic-are-t/
www.sciencedirect.com/topics/computer-science/fuzzy-logic
https://plato.stanford.edu/entries/goedel-incompleteness/
https://www.scientificamerican.com/article/
what-is-godels-theorem/
https://en.wikipedia.org/wiki/G%C3%B6del%27s_
incompleteness_theorems
Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 35 / 35

Mais conteúdo relacionado

Mais procurados

Matemática - Aula 4
Matemática - Aula 4Matemática - Aula 4
Matemática - Aula 4IBEST ESCOLA
 
Intro teoria dos numerros cap3
Intro teoria dos numerros cap3Intro teoria dos numerros cap3
Intro teoria dos numerros cap3Paulo Martins
 
Tópicos em Biologia-Matemática II
Tópicos em Biologia-Matemática IITópicos em Biologia-Matemática II
Tópicos em Biologia-Matemática IIRoberto Kraenkel
 
18 algoritmos de busca de palavras em texto
18   algoritmos de busca de palavras em texto18   algoritmos de busca de palavras em texto
18 algoritmos de busca de palavras em textoRicardo Bolanho
 
ANTONIO CLAUDIO LAGE BUFFARA RESPONDE: QUESTÕES PUC-RIO - NOVAMENTE K^5 COMO ...
ANTONIO CLAUDIO LAGE BUFFARA RESPONDE: QUESTÕES PUC-RIO - NOVAMENTE K^5 COMO ...ANTONIO CLAUDIO LAGE BUFFARA RESPONDE: QUESTÕES PUC-RIO - NOVAMENTE K^5 COMO ...
ANTONIO CLAUDIO LAGE BUFFARA RESPONDE: QUESTÕES PUC-RIO - NOVAMENTE K^5 COMO ...Antonio Claudio Lage Buffara
 
Mini-Curso: Campos de gauge clássicos: Maxwell e Chern-Simons
Mini-Curso: Campos de gauge clássicos: Maxwell e Chern-SimonsMini-Curso: Campos de gauge clássicos: Maxwell e Chern-Simons
Mini-Curso: Campos de gauge clássicos: Maxwell e Chern-SimonsMaria Teresa Thomaz
 
Trabalho escrito física leis de Kepler By: Henrique
Trabalho escrito física leis de Kepler By: HenriqueTrabalho escrito física leis de Kepler By: Henrique
Trabalho escrito física leis de Kepler By: HenriqueHenrique Silva
 
Aula 10 recursãoe relaçãoderecorrência
Aula 10   recursãoe relaçãoderecorrênciaAula 10   recursãoe relaçãoderecorrência
Aula 10 recursãoe relaçãoderecorrênciawab030
 
Expoente 10 sintese tema i
Expoente 10 sintese tema iExpoente 10 sintese tema i
Expoente 10 sintese tema inunofq
 
Aritmética I - Unidade 10 e 11
Aritmética I - Unidade 10 e 11Aritmética I - Unidade 10 e 11
Aritmética I - Unidade 10 e 11luiz10filho
 
Programando em python recursao
Programando em python   recursaoProgramando em python   recursao
Programando em python recursaosamuelthiago
 
Aula 7: A partícula livre
Aula 7: A partícula livreAula 7: A partícula livre
Aula 7: A partícula livreAdriano Silva
 
Análise de Algoritmos - As classes P e NP
Análise de Algoritmos - As classes P e NPAnálise de Algoritmos - As classes P e NP
Análise de Algoritmos - As classes P e NPDelacyr Ferreira
 

Mais procurados (20)

Redes de-petri-2
Redes de-petri-2Redes de-petri-2
Redes de-petri-2
 
Calculo1 aula15
Calculo1 aula15Calculo1 aula15
Calculo1 aula15
 
Matemática - Aula 4
Matemática - Aula 4Matemática - Aula 4
Matemática - Aula 4
 
Intro teoria dos numerros cap3
Intro teoria dos numerros cap3Intro teoria dos numerros cap3
Intro teoria dos numerros cap3
 
Tópicos em Biologia-Matemática II
Tópicos em Biologia-Matemática IITópicos em Biologia-Matemática II
Tópicos em Biologia-Matemática II
 
dnarj20130504
dnarj20130504dnarj20130504
dnarj20130504
 
18 algoritmos de busca de palavras em texto
18   algoritmos de busca de palavras em texto18   algoritmos de busca de palavras em texto
18 algoritmos de busca de palavras em texto
 
ANTONIO CLAUDIO LAGE BUFFARA RESPONDE: QUESTÕES PUC-RIO - NOVAMENTE K^5 COMO ...
ANTONIO CLAUDIO LAGE BUFFARA RESPONDE: QUESTÕES PUC-RIO - NOVAMENTE K^5 COMO ...ANTONIO CLAUDIO LAGE BUFFARA RESPONDE: QUESTÕES PUC-RIO - NOVAMENTE K^5 COMO ...
ANTONIO CLAUDIO LAGE BUFFARA RESPONDE: QUESTÕES PUC-RIO - NOVAMENTE K^5 COMO ...
 
Mini-Curso: Campos de gauge clássicos: Maxwell e Chern-Simons
Mini-Curso: Campos de gauge clássicos: Maxwell e Chern-SimonsMini-Curso: Campos de gauge clássicos: Maxwell e Chern-Simons
Mini-Curso: Campos de gauge clássicos: Maxwell e Chern-Simons
 
Blog fis 26
Blog fis 26Blog fis 26
Blog fis 26
 
Trabalho escrito física leis de Kepler By: Henrique
Trabalho escrito física leis de Kepler By: HenriqueTrabalho escrito física leis de Kepler By: Henrique
Trabalho escrito física leis de Kepler By: Henrique
 
Teorema de Bolzano
Teorema de BolzanoTeorema de Bolzano
Teorema de Bolzano
 
Aula 10 recursãoe relaçãoderecorrência
Aula 10   recursãoe relaçãoderecorrênciaAula 10   recursãoe relaçãoderecorrência
Aula 10 recursãoe relaçãoderecorrência
 
Expoente 10 sintese tema i
Expoente 10 sintese tema iExpoente 10 sintese tema i
Expoente 10 sintese tema i
 
Aritmética I - Unidade 10 e 11
Aritmética I - Unidade 10 e 11Aritmética I - Unidade 10 e 11
Aritmética I - Unidade 10 e 11
 
Semana 11
Semana 11Semana 11
Semana 11
 
Programando em python recursao
Programando em python   recursaoProgramando em python   recursao
Programando em python recursao
 
Aula 7: A partícula livre
Aula 7: A partícula livreAula 7: A partícula livre
Aula 7: A partícula livre
 
Análise de Algoritmos - As classes P e NP
Análise de Algoritmos - As classes P e NPAnálise de Algoritmos - As classes P e NP
Análise de Algoritmos - As classes P e NP
 
Knuth
KnuthKnuth
Knuth
 

Mais de Norton Trevisan Roman

(ACH2044) Inteligência Artificial - Aula 24
(ACH2044) Inteligência Artificial - Aula 24(ACH2044) Inteligência Artificial - Aula 24
(ACH2044) Inteligência Artificial - Aula 24Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 23
(ACH2044) Inteligência Artificial - Aula 23(ACH2044) Inteligência Artificial - Aula 23
(ACH2044) Inteligência Artificial - Aula 23Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 20
(ACH2044) Inteligência Artificial - Aula 20(ACH2044) Inteligência Artificial - Aula 20
(ACH2044) Inteligência Artificial - Aula 20Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 19
(ACH2044) Inteligência Artificial - Aula 19(ACH2044) Inteligência Artificial - Aula 19
(ACH2044) Inteligência Artificial - Aula 19Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 18
(ACH2044) Inteligência Artificial - Aula 18(ACH2044) Inteligência Artificial - Aula 18
(ACH2044) Inteligência Artificial - Aula 18Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 17
(ACH2044) Inteligência Artificial - Aula 17(ACH2044) Inteligência Artificial - Aula 17
(ACH2044) Inteligência Artificial - Aula 17Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 16
(ACH2044) Inteligência Artificial - Aula 16(ACH2044) Inteligência Artificial - Aula 16
(ACH2044) Inteligência Artificial - Aula 16Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 15
(ACH2044) Inteligência Artificial - Aula 15(ACH2044) Inteligência Artificial - Aula 15
(ACH2044) Inteligência Artificial - Aula 15Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 14
(ACH2044) Inteligência Artificial - Aula 14(ACH2044) Inteligência Artificial - Aula 14
(ACH2044) Inteligência Artificial - Aula 14Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 11
(ACH2044) Inteligência Artificial - Aula 11(ACH2044) Inteligência Artificial - Aula 11
(ACH2044) Inteligência Artificial - Aula 11Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 10
(ACH2044) Inteligência Artificial - Aula 10(ACH2044) Inteligência Artificial - Aula 10
(ACH2044) Inteligência Artificial - Aula 10Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 09
(ACH2044) Inteligência Artificial - Aula 09(ACH2044) Inteligência Artificial - Aula 09
(ACH2044) Inteligência Artificial - Aula 09Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 08
(ACH2044) Inteligência Artificial - Aula 08(ACH2044) Inteligência Artificial - Aula 08
(ACH2044) Inteligência Artificial - Aula 08Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 07
(ACH2044) Inteligência Artificial - Aula 07(ACH2044) Inteligência Artificial - Aula 07
(ACH2044) Inteligência Artificial - Aula 07Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 06
(ACH2044) Inteligência Artificial - Aula 06(ACH2044) Inteligência Artificial - Aula 06
(ACH2044) Inteligência Artificial - Aula 06Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 05
(ACH2044) Inteligência Artificial - Aula 05(ACH2044) Inteligência Artificial - Aula 05
(ACH2044) Inteligência Artificial - Aula 05Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 04
(ACH2044) Inteligência Artificial - Aula 04(ACH2044) Inteligência Artificial - Aula 04
(ACH2044) Inteligência Artificial - Aula 04Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 03
(ACH2044) Inteligência Artificial - Aula 03(ACH2044) Inteligência Artificial - Aula 03
(ACH2044) Inteligência Artificial - Aula 03Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 02
(ACH2044) Inteligência Artificial - Aula 02(ACH2044) Inteligência Artificial - Aula 02
(ACH2044) Inteligência Artificial - Aula 02Norton Trevisan Roman
 
(ACH2001) Introdução à Programação - Aula 23
(ACH2001) Introdução à Programação - Aula 23(ACH2001) Introdução à Programação - Aula 23
(ACH2001) Introdução à Programação - Aula 23Norton Trevisan Roman
 

Mais de Norton Trevisan Roman (20)

(ACH2044) Inteligência Artificial - Aula 24
(ACH2044) Inteligência Artificial - Aula 24(ACH2044) Inteligência Artificial - Aula 24
(ACH2044) Inteligência Artificial - Aula 24
 
(ACH2044) Inteligência Artificial - Aula 23
(ACH2044) Inteligência Artificial - Aula 23(ACH2044) Inteligência Artificial - Aula 23
(ACH2044) Inteligência Artificial - Aula 23
 
(ACH2044) Inteligência Artificial - Aula 20
(ACH2044) Inteligência Artificial - Aula 20(ACH2044) Inteligência Artificial - Aula 20
(ACH2044) Inteligência Artificial - Aula 20
 
(ACH2044) Inteligência Artificial - Aula 19
(ACH2044) Inteligência Artificial - Aula 19(ACH2044) Inteligência Artificial - Aula 19
(ACH2044) Inteligência Artificial - Aula 19
 
(ACH2044) Inteligência Artificial - Aula 18
(ACH2044) Inteligência Artificial - Aula 18(ACH2044) Inteligência Artificial - Aula 18
(ACH2044) Inteligência Artificial - Aula 18
 
(ACH2044) Inteligência Artificial - Aula 17
(ACH2044) Inteligência Artificial - Aula 17(ACH2044) Inteligência Artificial - Aula 17
(ACH2044) Inteligência Artificial - Aula 17
 
(ACH2044) Inteligência Artificial - Aula 16
(ACH2044) Inteligência Artificial - Aula 16(ACH2044) Inteligência Artificial - Aula 16
(ACH2044) Inteligência Artificial - Aula 16
 
(ACH2044) Inteligência Artificial - Aula 15
(ACH2044) Inteligência Artificial - Aula 15(ACH2044) Inteligência Artificial - Aula 15
(ACH2044) Inteligência Artificial - Aula 15
 
(ACH2044) Inteligência Artificial - Aula 14
(ACH2044) Inteligência Artificial - Aula 14(ACH2044) Inteligência Artificial - Aula 14
(ACH2044) Inteligência Artificial - Aula 14
 
(ACH2044) Inteligência Artificial - Aula 11
(ACH2044) Inteligência Artificial - Aula 11(ACH2044) Inteligência Artificial - Aula 11
(ACH2044) Inteligência Artificial - Aula 11
 
(ACH2044) Inteligência Artificial - Aula 10
(ACH2044) Inteligência Artificial - Aula 10(ACH2044) Inteligência Artificial - Aula 10
(ACH2044) Inteligência Artificial - Aula 10
 
(ACH2044) Inteligência Artificial - Aula 09
(ACH2044) Inteligência Artificial - Aula 09(ACH2044) Inteligência Artificial - Aula 09
(ACH2044) Inteligência Artificial - Aula 09
 
(ACH2044) Inteligência Artificial - Aula 08
(ACH2044) Inteligência Artificial - Aula 08(ACH2044) Inteligência Artificial - Aula 08
(ACH2044) Inteligência Artificial - Aula 08
 
(ACH2044) Inteligência Artificial - Aula 07
(ACH2044) Inteligência Artificial - Aula 07(ACH2044) Inteligência Artificial - Aula 07
(ACH2044) Inteligência Artificial - Aula 07
 
(ACH2044) Inteligência Artificial - Aula 06
(ACH2044) Inteligência Artificial - Aula 06(ACH2044) Inteligência Artificial - Aula 06
(ACH2044) Inteligência Artificial - Aula 06
 
(ACH2044) Inteligência Artificial - Aula 05
(ACH2044) Inteligência Artificial - Aula 05(ACH2044) Inteligência Artificial - Aula 05
(ACH2044) Inteligência Artificial - Aula 05
 
(ACH2044) Inteligência Artificial - Aula 04
(ACH2044) Inteligência Artificial - Aula 04(ACH2044) Inteligência Artificial - Aula 04
(ACH2044) Inteligência Artificial - Aula 04
 
(ACH2044) Inteligência Artificial - Aula 03
(ACH2044) Inteligência Artificial - Aula 03(ACH2044) Inteligência Artificial - Aula 03
(ACH2044) Inteligência Artificial - Aula 03
 
(ACH2044) Inteligência Artificial - Aula 02
(ACH2044) Inteligência Artificial - Aula 02(ACH2044) Inteligência Artificial - Aula 02
(ACH2044) Inteligência Artificial - Aula 02
 
(ACH2001) Introdução à Programação - Aula 23
(ACH2001) Introdução à Programação - Aula 23(ACH2001) Introdução à Programação - Aula 23
(ACH2001) Introdução à Programação - Aula 23
 

Último

Ficha de trabalho com palavras- simples e complexas.pdf
Ficha de trabalho com palavras- simples e complexas.pdfFicha de trabalho com palavras- simples e complexas.pdf
Ficha de trabalho com palavras- simples e complexas.pdfFtimaMoreira35
 
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdfLeloIurk1
 
CRUZADINHA - Leitura e escrita dos números
CRUZADINHA   -   Leitura e escrita dos números CRUZADINHA   -   Leitura e escrita dos números
CRUZADINHA - Leitura e escrita dos números Mary Alvarenga
 
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...azulassessoria9
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...azulassessoria9
 
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptxSlides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptxLuizHenriquedeAlmeid6
 
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptxSlides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptxLuizHenriquedeAlmeid6
 
Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)ElliotFerreira
 
Revolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividadesRevolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividadesFabianeMartins35
 
COMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕES
COMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕESCOMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕES
COMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕESEduardaReis50
 
Slides sobre as Funções da Linguagem.pptx
Slides sobre as Funções da Linguagem.pptxSlides sobre as Funções da Linguagem.pptx
Slides sobre as Funções da Linguagem.pptxMauricioOliveira258223
 
Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"Ilda Bicacro
 
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....LuizHenriquedeAlmeid6
 
ATIVIDADE PARA ENTENDER -Pizzaria dos Descritores
ATIVIDADE PARA ENTENDER -Pizzaria dos DescritoresATIVIDADE PARA ENTENDER -Pizzaria dos Descritores
ATIVIDADE PARA ENTENDER -Pizzaria dos DescritoresAnaCarinaKucharski1
 
Discurso Direto, Indireto e Indireto Livre.pptx
Discurso Direto, Indireto e Indireto Livre.pptxDiscurso Direto, Indireto e Indireto Livre.pptx
Discurso Direto, Indireto e Indireto Livre.pptxferreirapriscilla84
 
ATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇ
ATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇ
ATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇJaineCarolaineLima
 
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃO
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃOFASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃO
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃOAulasgravadas3
 
Atividade - Letra da música Esperando na Janela.
Atividade -  Letra da música Esperando na Janela.Atividade -  Letra da música Esperando na Janela.
Atividade - Letra da música Esperando na Janela.Mary Alvarenga
 
A QUATRO MÃOS - MARILDA CASTANHA . pdf
A QUATRO MÃOS  -  MARILDA CASTANHA . pdfA QUATRO MÃOS  -  MARILDA CASTANHA . pdf
A QUATRO MÃOS - MARILDA CASTANHA . pdfAna Lemos
 

Último (20)

Ficha de trabalho com palavras- simples e complexas.pdf
Ficha de trabalho com palavras- simples e complexas.pdfFicha de trabalho com palavras- simples e complexas.pdf
Ficha de trabalho com palavras- simples e complexas.pdf
 
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
 
CRUZADINHA - Leitura e escrita dos números
CRUZADINHA   -   Leitura e escrita dos números CRUZADINHA   -   Leitura e escrita dos números
CRUZADINHA - Leitura e escrita dos números
 
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
 
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptxSlides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
 
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptxSlides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
 
Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)
 
Revolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividadesRevolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividades
 
COMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕES
COMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕESCOMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕES
COMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕES
 
Slides sobre as Funções da Linguagem.pptx
Slides sobre as Funções da Linguagem.pptxSlides sobre as Funções da Linguagem.pptx
Slides sobre as Funções da Linguagem.pptx
 
Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"
 
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
 
ATIVIDADE PARA ENTENDER -Pizzaria dos Descritores
ATIVIDADE PARA ENTENDER -Pizzaria dos DescritoresATIVIDADE PARA ENTENDER -Pizzaria dos Descritores
ATIVIDADE PARA ENTENDER -Pizzaria dos Descritores
 
Discurso Direto, Indireto e Indireto Livre.pptx
Discurso Direto, Indireto e Indireto Livre.pptxDiscurso Direto, Indireto e Indireto Livre.pptx
Discurso Direto, Indireto e Indireto Livre.pptx
 
ATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇ
ATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇ
ATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇ
 
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃO
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃOFASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃO
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃO
 
Atividade - Letra da música Esperando na Janela.
Atividade -  Letra da música Esperando na Janela.Atividade -  Letra da música Esperando na Janela.
Atividade - Letra da música Esperando na Janela.
 
Aula sobre o Imperialismo Europeu no século XIX
Aula sobre o Imperialismo Europeu no século XIXAula sobre o Imperialismo Europeu no século XIX
Aula sobre o Imperialismo Europeu no século XIX
 
A QUATRO MÃOS - MARILDA CASTANHA . pdf
A QUATRO MÃOS  -  MARILDA CASTANHA . pdfA QUATRO MÃOS  -  MARILDA CASTANHA . pdf
A QUATRO MÃOS - MARILDA CASTANHA . pdf
 

Backward Chaining Programação Lógica

  • 1. Inteligência Artificial – ACH2016 Aula 13 – Backward Chaining e Programação Lógica Norton Trevisan Roman (norton@usp.br) 11 de abril de 2019 Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 1 / 35
  • 2. L.P.O. – Backward Chaining Funcionamento Começando do objetivo, “voltamos” nas regras de modo a encontrar fatos conhecidos que suportem a prova Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 2 / 35
  • 3. L.P.O. – Backward Chaining Funcionamento Começando do objetivo, “voltamos” nas regras de modo a encontrar fatos conhecidos que suportem a prova Trata de regras do tipo antecedente ⇒ consequente Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 2 / 35
  • 4. L.P.O. – Backward Chaining Funcionamento Começando do objetivo, “voltamos” nas regras de modo a encontrar fatos conhecidos que suportem a prova Trata de regras do tipo antecedente ⇒ consequente Fatos são tratados como uma implicação com um consequente e nenhum antecedente Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 2 / 35
  • 5. L.P.O. – Backward Chaining Funcionamento Começando do objetivo, “voltamos” nas regras de modo a encontrar fatos conhecidos que suportem a prova Trata de regras do tipo antecedente ⇒ consequente Fatos são tratados como uma implicação com um consequente e nenhum antecedente Usado em programação lógica Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 2 / 35
  • 6. L.P.O. – Backward Chaining Algoritmo Função Backward(BC,obj,θ): conjunto de substituições resposta ← {} se obj estiver vazia então retorna {θ} q0 ← (Primeiro(obj)) θ para cada sentença s em BC onde são aplicados com sucesso Padroniza(s) = (p1 ∧ . . . ∧ pn ⇒ q) e θ0 ← Unifica(q, q0 ) faça novoObj ← [p1, . . . , pn|Resto(obj)] resposta ← Backward(BC, novoObj, Composição(θ0 , θ)) ∪ resposta retorna resposta Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 3 / 35
  • 7. L.P.O. – Backward Chaining Algoritmo Base de Conhecimento Função Backward(BC,obj,θ): conjunto de substituições resposta ← {} se obj estiver vazia então retorna {θ} q0 ← (Primeiro(obj)) θ para cada sentença s em BC onde são aplicados com sucesso Padroniza(s) = (p1 ∧ . . . ∧ pn ⇒ q) e θ0 ← Unifica(q, q0 ) faça novoObj ← [p1, . . . , pn|Resto(obj)] resposta ← Backward(BC, novoObj, Composição(θ0 , θ)) ∪ resposta retorna resposta Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 3 / 35
  • 8. L.P.O. – Backward Chaining Algoritmo Lista dos elementos que for- mam a query (θ já aplicado) Função Backward(BC,obj,θ): conjunto de substituições resposta ← {} se obj estiver vazia então retorna {θ} q0 ← (Primeiro(obj)) θ para cada sentença s em BC onde são aplicados com sucesso Padroniza(s) = (p1 ∧ . . . ∧ pn ⇒ q) e θ0 ← Unifica(q, q0 ) faça novoObj ← [p1, . . . , pn|Resto(obj)] resposta ← Backward(BC, novoObj, Composição(θ0 , θ)) ∪ resposta retorna resposta Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 3 / 35
  • 9. L.P.O. – Backward Chaining Algoritmo A substituição atual (inicialmente {}) Função Backward(BC,obj,θ): conjunto de substituições resposta ← {} se obj estiver vazia então retorna {θ} q0 ← (Primeiro(obj)) θ para cada sentença s em BC onde são aplicados com sucesso Padroniza(s) = (p1 ∧ . . . ∧ pn ⇒ q) e θ0 ← Unifica(q, q0 ) faça novoObj ← [p1, . . . , pn|Resto(obj)] resposta ← Backward(BC, novoObj, Composição(θ0 , θ)) ∪ resposta retorna resposta Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 3 / 35
  • 10. L.P.O. – Backward Chaining Algoritmo Conjunto de todas as substi- tuições que satisfazem a query Função Backward(BC,obj,θ): conjunto de substituições resposta ← {} se obj estiver vazia então retorna {θ} q0 ← (Primeiro(obj)) θ para cada sentença s em BC onde são aplicados com sucesso Padroniza(s) = (p1 ∧ . . . ∧ pn ⇒ q) e θ0 ← Unifica(q, q0 ) faça novoObj ← [p1, . . . , pn|Resto(obj)] resposta ← Backward(BC, novoObj, Composição(θ0 , θ)) ∪ resposta retorna resposta Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 3 / 35
  • 11. L.P.O. – Backward Chaining Algoritmo Conjunto de substituições Função Backward(BC,obj,θ): conjunto de substituições resposta ← {} se obj estiver vazia então retorna {θ} q0 ← (Primeiro(obj)) θ para cada sentença s em BC onde são aplicados com sucesso Padroniza(s) = (p1 ∧ . . . ∧ pn ⇒ q) e θ0 ← Unifica(q, q0 ) faça novoObj ← [p1, . . . , pn|Resto(obj)] resposta ← Backward(BC, novoObj, Composição(θ0 , θ)) ∪ resposta retorna resposta Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 3 / 35
  • 12. L.P.O. – Backward Chaining Algoritmo Retira o primeiro objetivo em obj Função Backward(BC,obj,θ): conjunto de substituições resposta ← {} se obj estiver vazia então retorna {θ} q0 ← (Primeiro(obj)) θ para cada sentença s em BC onde são aplicados com sucesso Padroniza(s) = (p1 ∧ . . . ∧ pn ⇒ q) e θ0 ← Unifica(q, q0 ) faça novoObj ← [p1, . . . , pn|Resto(obj)] resposta ← Backward(BC, novoObj, Composição(θ0 , θ)) ∪ resposta retorna resposta Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 3 / 35
  • 13. L.P.O. – Backward Chaining Algoritmo Verifica toda cláusula na BC cujo consequente se unifica com esse objetivo Função Backward(BC,obj,θ): conjunto de substituições resposta ← {} se obj estiver vazia então retorna {θ} q0 ← (Primeiro(obj)) θ para cada sentença s em BC onde são aplicados com sucesso Padroniza(s) = (p1 ∧ . . . ∧ pn ⇒ q) e θ0 ← Unifica(q, q0 ) faça novoObj ← [p1, . . . , pn|Resto(obj)] resposta ← Backward(BC, novoObj, Composição(θ0 , θ)) ∪ resposta retorna resposta Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 3 / 35
  • 14. L.P.O. – Backward Chaining Algoritmo Cada uma dessas cláusulas cria uma nova chamada recursiva ao algoritmo Função Backward(BC,obj,θ): conjunto de substituições resposta ← {} se obj estiver vazia então retorna {θ} q0 ← (Primeiro(obj)) θ para cada sentença s em BC onde são aplicados com sucesso Padroniza(s) = (p1 ∧ . . . ∧ pn ⇒ q) e θ0 ← Unifica(q, q0 ) faça novoObj ← [p1, . . . , pn|Resto(obj)] resposta ← Backward(BC, novoObj, Composição(θ0 , θ)) ∪ resposta retorna resposta Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 3 / 35
  • 15. L.P.O. – Backward Chaining Algoritmo Suas premissas (antecedentes) são adicionadas a (obj − q0 ) e passadas a essa nova chamada Função Backward(BC,obj,θ): conjunto de substituições resposta ← {} se obj estiver vazia então retorna {θ} q0 ← (Primeiro(obj)) θ para cada sentença s em BC onde são aplicados com sucesso Padroniza(s) = (p1 ∧ . . . ∧ pn ⇒ q) e θ0 ← Unifica(q, q0 ) faça novoObj ← [p1, . . . , pn|Resto(obj)] resposta ← Backward(BC, novoObj, Composição(θ0 , θ)) ∪ resposta retorna resposta Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 3 / 35
  • 16. L.P.O. – Backward Chaining Algoritmo Função Backward(BC,obj,θ): conjunto de substituições resposta ← {} se obj estiver vazia então retorna {θ} q0 ← (Primeiro(obj)) θ para cada sentença s em BC onde são aplicados com sucesso Padroniza(s) = (p1 ∧ . . . ∧ pn ⇒ q) e θ0 ← Unifica(q, q0 ) faça novoObj ← [p1, . . . , pn|Resto(obj)] resposta ← Backward(BC, novoObj, Composição(θ0 , θ)) ∪ resposta retorna resposta Composição(θ0 , θ) é a substituição cujo efeito é idêntico ao de aplicar cada uma das substituições em sequência Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 3 / 35
  • 17. L.P.O. – Backward Chaining Algoritmo Função Backward(BC,obj,θ): conjunto de substituições resposta ← {} se obj estiver vazia então retorna {θ} q0 ← (Primeiro(obj)) θ para cada sentença s em BC onde são aplicados com sucesso Padroniza(s) = (p1 ∧ . . . ∧ pn ⇒ q) e θ0 ← Unifica(q, q0 ) faça novoObj ← [p1, . . . , pn|Resto(obj)] resposta ← Backward(BC, novoObj, Composição(θ0 , θ)) ∪ resposta retorna resposta Composição(θ0 , θ) é a substituição cujo efeito é idêntico ao de aplicar cada uma das substituições em sequência Ou seja, (p) Composição(θ0 , θ) = ((p) θ0 ) θ Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 3 / 35
  • 18. L.P.O. – Backward Chaining Exemplo 1 Compatriota(x) ∧ Arma(y) ∧ Vender(x, y, z) ∧ Hostil(z) ⇒ Criminoso(x) axioma 2 Inimigo(Pit) axioma 3 Mı́ssil(M) axioma 4 Ter(Pit, M) axioma 5 Mı́ssil(x) ∧ Ter(Pit, x) ⇒ Vender(Os, x, Pit) axioma 6 Mı́ssil(x) ⇒ Arma(x) axioma 7 Inimigo(x) ⇒ Hostil(x) axioma 8 Compatriota(Os) axioma Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 4 / 35
  • 19. L.P.O. – Backward Chaining Exemplo 1 Compatriota(x) ∧ Arma(y) ∧ Vender(x, y, z) ∧ Hostil(z) ⇒ Criminoso(x) axioma 2 Inimigo(Pit) axioma 3 Mı́ssil(M) axioma 4 Ter(Pit, M) axioma 5 Mı́ssil(x) ∧ Ter(Pit, x) ⇒ Vender(Os, x, Pit) axioma 6 Mı́ssil(x) ⇒ Arma(x) axioma 7 Inimigo(x) ⇒ Hostil(x) axioma 8 Compatriota(Os) axioma Criminoso(Os) θ = {} Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 4 / 35
  • 20. L.P.O. – Backward Chaining Exemplo 1 Compatriota(x) ∧ Arma(y) ∧ Vender(x, y, z) ∧ Hostil(z) ⇒ Criminoso(x) axioma 2 Inimigo(Pit) axioma 3 Mı́ssil(M) axioma 4 Ter(Pit, M) axioma 5 Mı́ssil(x) ∧ Ter(Pit, x) ⇒ Vender(Os, x, Pit) axioma 6 Mı́ssil(x) ⇒ Arma(x) axioma 7 Inimigo(x) ⇒ Hostil(x) axioma 8 Compatriota(Os) axioma Criminoso(Os) θ = {x/Os} {x/Os} Compatriota(Os) Arma(y) Vender(Os, y, z) Hostil(z) Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 4 / 35
  • 21. L.P.O. – Backward Chaining Exemplo 1 Compatriota(x) ∧ Arma(y) ∧ Vender(x, y, z) ∧ Hostil(z) ⇒ Criminoso(x) axioma 2 Inimigo(Pit) axioma 3 Mı́ssil(M) axioma 4 Ter(Pit, M) axioma 5 Mı́ssil(x) ∧ Ter(Pit, x) ⇒ Vender(Os, x, Pit) axioma 6 Mı́ssil(x) ⇒ Arma(x) axioma 7 Inimigo(x) ⇒ Hostil(x) axioma 8 Compatriota(Os) axioma Criminoso(Os) θ = {x/Os} {x/Os} Compatriota(Os) Arma(y) Vender(Os, y, z) Hostil(z) Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 4 / 35
  • 22. L.P.O. – Backward Chaining Exemplo 1 Compatriota(x) ∧ Arma(y) ∧ Vender(x, y, z) ∧ Hostil(z) ⇒ Criminoso(x) axioma 2 Inimigo(Pit) axioma 3 Mı́ssil(M) axioma 4 Ter(Pit, M) axioma 5 Mı́ssil(x) ∧ Ter(Pit, x) ⇒ Vender(Os, x, Pit) axioma 6 Mı́ssil(x) ⇒ Arma(x) axioma 7 Inimigo(x) ⇒ Hostil(x) axioma 8 Compatriota(Os) axioma Criminoso(Os) θ = {x/Os} {x/Os} Compatriota(Os) Arma(y) Vender(Os, y, z) Hostil(z) Mı́ssil(y) {x/y} Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 4 / 35
  • 23. L.P.O. – Backward Chaining Exemplo 1 Compatriota(x) ∧ Arma(y) ∧ Vender(x, y, z) ∧ Hostil(z) ⇒ Criminoso(x) axioma 2 Inimigo(Pit) axioma 3 Mı́ssil(M) axioma 4 Ter(Pit, M) axioma 5 Mı́ssil(x) ∧ Ter(Pit, x) ⇒ Vender(Os, x, Pit) axioma 6 Mı́ssil(x) ⇒ Arma(x) axioma 7 Inimigo(x) ⇒ Hostil(x) axioma 8 Compatriota(Os) axioma Criminoso(Os) θ = {x/Os, y/M} {x/Os} Compatriota(Os) Arma(y) Vender(Os, y, z) Hostil(z) Mı́ssil(y) {x/y} Mı́ssil(M) {y/M} Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 4 / 35
  • 24. L.P.O. – Backward Chaining Exemplo 1 Compatriota(x) ∧ Arma(y) ∧ Vender(x, y, z) ∧ Hostil(z) ⇒ Criminoso(x) axioma 2 Inimigo(Pit) axioma 3 Mı́ssil(M) axioma 4 Ter(Pit, M) axioma 5 Mı́ssil(x) ∧ Ter(Pit, x) ⇒ Vender(Os, x, Pit) axioma 6 Mı́ssil(x) ⇒ Arma(x) axioma 7 Inimigo(x) ⇒ Hostil(x) axioma 8 Compatriota(Os) axioma Criminoso(Os) θ = {x/Os, y/M} {x/Os} Compatriota(Os) Arma(y) Vender(Os, M, z) Hostil(z) Mı́ssil(y) {x/y} Mı́ssil(M) {y/M} Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 4 / 35
  • 25. L.P.O. – Backward Chaining Exemplo 1 Compatriota(x) ∧ Arma(y) ∧ Vender(x, y, z) ∧ Hostil(z) ⇒ Criminoso(x) axioma 2 Inimigo(Pit) axioma 3 Mı́ssil(M) axioma 4 Ter(Pit, M) axioma 5 Mı́ssil(x) ∧ Ter(Pit, x) ⇒ Vender(Os, x, Pit) axioma 6 Mı́ssil(x) ⇒ Arma(x) axioma 7 Inimigo(x) ⇒ Hostil(x) axioma 8 Compatriota(Os) axioma Criminoso(Os) θ = {x/Os, y/M, z/Pit} {x/Os} Compatriota(Os) Arma(y) Vender(Os, M, Pit) Hostil(z) Mı́ssil(y) {x/y} Mı́ssil(M) {y/M} Mı́ssil(M) Ter(Pit,M) {x/M, z/Pit} Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 4 / 35
  • 26. L.P.O. – Backward Chaining Exemplo 1 Compatriota(x) ∧ Arma(y) ∧ Vender(x, y, z) ∧ Hostil(z) ⇒ Criminoso(x) axioma 2 Inimigo(Pit) axioma 3 Mı́ssil(M) axioma 4 Ter(Pit, M) axioma 5 Mı́ssil(x) ∧ Ter(Pit, x) ⇒ Vender(Os, x, Pit) axioma 6 Mı́ssil(x) ⇒ Arma(x) axioma 7 Inimigo(x) ⇒ Hostil(x) axioma 8 Compatriota(Os) axioma Criminoso(Os) θ = {x/Os, y/M, z/Pit} {x/Os} Compatriota(Os) Arma(y) Vender(Os, M, Pit) Hostil(z) Mı́ssil(y) {x/y} Mı́ssil(M) {y/M} Mı́ssil(M) Ter(Pit,M) {x/M, z/Pit} Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 4 / 35
  • 27. L.P.O. – Backward Chaining Exemplo 1 Compatriota(x) ∧ Arma(y) ∧ Vender(x, y, z) ∧ Hostil(z) ⇒ Criminoso(x) axioma 2 Inimigo(Pit) axioma 3 Mı́ssil(M) axioma 4 Ter(Pit, M) axioma 5 Mı́ssil(x) ∧ Ter(Pit, x) ⇒ Vender(Os, x, Pit) axioma 6 Mı́ssil(x) ⇒ Arma(x) axioma 7 Inimigo(x) ⇒ Hostil(x) axioma 8 Compatriota(Os) axioma Criminoso(Os) θ = {x/Os, y/M, z/Pit} {x/Os} Compatriota(Os) Arma(y) Vender(Os, M, Pit) Hostil(z) Mı́ssil(y) {x/y} Mı́ssil(M) {y/M} Mı́ssil(M) Ter(Pit,M) {x/M, z/Pit} Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 4 / 35
  • 28. L.P.O. – Backward Chaining Exemplo 1 Compatriota(x) ∧ Arma(y) ∧ Vender(x, y, z) ∧ Hostil(z) ⇒ Criminoso(x) axioma 2 Inimigo(Pit) axioma 3 Mı́ssil(M) axioma 4 Ter(Pit, M) axioma 5 Mı́ssil(x) ∧ Ter(Pit, x) ⇒ Vender(Os, x, Pit) axioma 6 Mı́ssil(x) ⇒ Arma(x) axioma 7 Inimigo(x) ⇒ Hostil(x) axioma 8 Compatriota(Os) axioma Criminoso(Os) θ = {x/Os, y/M, z/Pit} {x/Os} Compatriota(Os) Arma(y) Vender(Os, M, Pit) Hostil(Pit) Mı́ssil(y) {x/y} Mı́ssil(M) {y/M} Mı́ssil(M) Ter(Pit,M) {x/M, z/Pit} Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 4 / 35
  • 29. L.P.O. – Backward Chaining Exemplo 1 Compatriota(x) ∧ Arma(y) ∧ Vender(x, y, z) ∧ Hostil(z) ⇒ Criminoso(x) axioma 2 Inimigo(Pit) axioma 3 Mı́ssil(M) axioma 4 Ter(Pit, M) axioma 5 Mı́ssil(x) ∧ Ter(Pit, x) ⇒ Vender(Os, x, Pit) axioma 6 Mı́ssil(x) ⇒ Arma(x) axioma 7 Inimigo(x) ⇒ Hostil(x) axioma 8 Compatriota(Os) axioma Criminoso(Os) θ = {x/Os, y/M, z/Pit} {x/Os} Compatriota(Os) Arma(y) Vender(Os, M, Pit) Hostil(Pit) Mı́ssil(y) {x/y} Mı́ssil(M) {y/M} Mı́ssil(M) Ter(Pit,M) {x/M, z/Pit} Inimigo(Pit) {x/Pit} Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 4 / 35
  • 30. L.P.O. – Backward Chaining Exemplo 1 Compatriota(x) ∧ Arma(y) ∧ Vender(x, y, z) ∧ Hostil(z) ⇒ Criminoso(x) axioma 2 Inimigo(Pit) axioma 3 Mı́ssil(M) axioma 4 Ter(Pit, M) axioma 5 Mı́ssil(x) ∧ Ter(Pit, x) ⇒ Vender(Os, x, Pit) axioma 6 Mı́ssil(x) ⇒ Arma(x) axioma 7 Inimigo(x) ⇒ Hostil(x) axioma 8 Compatriota(Os) axioma Criminoso(Os) θ = {x/Os, y/M, z/Pit} {x/Os} Compatriota(Os) Arma(y) Vender(Os, M, Pit) Hostil(Pit) Mı́ssil(y) {x/y} Mı́ssil(M) {y/M} Mı́ssil(M) Ter(Pit,M) {x/M, z/Pit} Inimigo(Pit) {x/Pit} Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 4 / 35
  • 31. L.P.O. – Backward Chaining Exemplo 1 Compatriota(x) ∧ Arma(y) ∧ Vender(x, y, z) ∧ Hostil(z) ⇒ Criminoso(x) axioma 2 Inimigo(Pit) axioma 3 Mı́ssil(M) axioma 4 Ter(Pit, M) axioma 5 Mı́ssil(x) ∧ Ter(Pit, x) ⇒ Vender(Os, x, Pit) axioma 6 Mı́ssil(x) ⇒ Arma(x) axioma 7 Inimigo(x) ⇒ Hostil(x) axioma 8 Compatriota(Os) axioma Criminoso(Os) θ = {x/Os, y/M, z/Pit} {x/Os} Compatriota(Os) Arma(y) Vender(Os, M, Pit) Hostil(Pit) Mı́ssil(y) {x/y} Mı́ssil(M) {y/M} Mı́ssil(M) Ter(Pit,M) {x/M, z/Pit} Inimigo(Pit) {x/Pit} Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 4 / 35
  • 32. L.P.O. – Backward Chaining Caracterı́sticas É uma busca em profundidade recursiva Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 5 / 35
  • 33. L.P.O. – Backward Chaining Caracterı́sticas É uma busca em profundidade recursiva Cláusulas são testadas na ordem em que ocorrem na base Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 5 / 35
  • 34. L.P.O. – Backward Chaining Caracterı́sticas É uma busca em profundidade recursiva Cláusulas são testadas na ordem em que ocorrem na base Sofre com presença de laços Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 5 / 35
  • 35. L.P.O. – Backward Chaining Caracterı́sticas É uma busca em profundidade recursiva Cláusulas são testadas na ordem em que ocorrem na base Sofre com presença de laços Ex: Encontre um caminho de A a C, a partir da base (testando as alternativas em ordem) 1 Ligação(A,B) 2 Ligação(B,C) 3 Ligação(x,z) ⇒ Caminho(x,z) 4 Ligação(y,z) ∧ Caminho(x,y) ⇒ Caminho(x,z) Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 5 / 35
  • 36. L.P.O. – Backward Chaining Caracterı́sticas Caminho(A,C)? 1 Ligação(A,B) 2 Ligação(B,C) 3 Ligação(x,z) ⇒ Caminho(x,z) 4 Ligação(y,z) ∧ Caminho(x,y) ⇒ Caminho(x,z) Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 6 / 35
  • 37. L.P.O. – Backward Chaining Caracterı́sticas Caminho(A,C)? 1 Ligação(A,B) 2 Ligação(B,C) 3 Ligação(x,z) ⇒ Caminho(x,z) 4 Ligação(y,z) ∧ Caminho(x,y) ⇒ Caminho(x,z) Caminho(A,C) Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 6 / 35
  • 38. L.P.O. – Backward Chaining Caracterı́sticas Caminho(A,C)? 1 Ligação(A,B) 2 Ligação(B,C) 3 Ligação(x,z) ⇒ Caminho(x,z) 4 Ligação(y,z) ∧ Caminho(x,y) ⇒ Caminho(x,z) Caminho(A,C) Ligação(A,C) Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 6 / 35
  • 39. L.P.O. – Backward Chaining Caracterı́sticas Caminho(A,C)? 1 Ligação(A,B) 2 Ligação(B,C) 3 Ligação(x,z) ⇒ Caminho(x,z) 4 Ligação(y,z) ∧ Caminho(x,y) ⇒ Caminho(x,z) Caminho(A,C) Ligação(A,C) Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 6 / 35
  • 40. L.P.O. – Backward Chaining Caracterı́sticas Caminho(A,C)? 1 Ligação(A,B) 2 Ligação(B,C) 3 Ligação(x,z) ⇒ Caminho(x,z) 4 Ligação(y,z) ∧ Caminho(x,y) ⇒ Caminho(x,z) Caminho(A,C) Ligação(y,C) Caminho(A,y) Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 6 / 35
  • 41. L.P.O. – Backward Chaining Caracterı́sticas Caminho(A,C)? 1 Ligação(A,B) 2 Ligação(B,C) 3 Ligação(x,z) ⇒ Caminho(x,z) 4 Ligação(y,z) ∧ Caminho(x,y) ⇒ Caminho(x,z) Caminho(A,C) Ligação(y,C) Caminho(A,B) Ligação(B,C) Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 6 / 35
  • 42. L.P.O. – Backward Chaining Caracterı́sticas Caminho(A,C)? 1 Ligação(A,B) 2 Ligação(B,C) 3 Ligação(x,z) ⇒ Caminho(x,z) 4 Ligação(y,z) ∧ Caminho(x,y) ⇒ Caminho(x,z) Caminho(A,C) Ligação(y,C) Caminho(A,B) Ligação(B,C) Ligação(A,B) Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 6 / 35
  • 43. L.P.O. – Backward Chaining Caracterı́sticas Caminho(A,C)? 1 Ligação(A,B) 2 Ligação(B,C) 3 Ligação(x,z) ⇒ Caminho(x,z) 4 Ligação(y,z) ∧ Caminho(x,y) ⇒ Caminho(x,z) Caminho(A,C) Ligação(y,C) Caminho(A,B) Ligação(B,C) Ligação(A,B) Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 6 / 35
  • 44. L.P.O. – Backward Chaining Caracterı́sticas Caminho(A,C)? 1 Ligação(A,B) 2 Ligação(B,C) 3 Ligação(x,z) ⇒ Caminho(x,z) 4 Ligação(y,z) ∧ Caminho(x,y) ⇒ Caminho(x,z) Caminho(A,C) Ligação(y,C) Caminho(A,B) Ligação(B,C) Ligação(A,B) OK Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 6 / 35
  • 45. L.P.O. – Backward Chaining Caracterı́sticas Caminho(A,C)? 1 Ligação(A,B) 2 Ligação(B,C) 3 Ligação(y,z) ∧ Caminho(x,y) ⇒ Caminho(x,z) 4 Ligação(x,z) ⇒ Caminho(x,z) Caminho(A,C) Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 7 / 35
  • 46. L.P.O. – Backward Chaining Caracterı́sticas Caminho(A,C)? 1 Ligação(A,B) 2 Ligação(B,C) 3 Ligação(y,z) ∧ Caminho(x,y) ⇒ Caminho(x,z) 4 Ligação(x,z) ⇒ Caminho(x,z) Caminho(A,C) Ligação(y,C) Caminho(A,y) Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 7 / 35
  • 47. L.P.O. – Backward Chaining Caracterı́sticas Caminho(A,C)? 1 Ligação(A,B) 2 Ligação(B,C) 3 Ligação(y,z) ∧ Caminho(x,y) ⇒ Caminho(x,z) 4 Ligação(x,z) ⇒ Caminho(x,z) Caminho(A,C) Ligação(y,C) Caminho(A,B) Ligação(B,C) Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 7 / 35
  • 48. L.P.O. – Backward Chaining Caracterı́sticas Caminho(A,C)? 1 Ligação(A,B) 2 Ligação(B,C) 3 Ligação(y,z) ∧ Caminho(x,y) ⇒ Caminho(x,z) 4 Ligação(x,z) ⇒ Caminho(x,z) Caminho(A,C) Ligação(y,C) Caminho(A,B) Ligação(B,C) Ligação(y,B) Caminho(A,y) Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 7 / 35
  • 49. L.P.O. – Backward Chaining Caracterı́sticas Caminho(A,C)? 1 Ligação(A,B) 2 Ligação(B,C) 3 Ligação(y,z) ∧ Caminho(x,y) ⇒ Caminho(x,z) 4 Ligação(x,z) ⇒ Caminho(x,z) Caminho(A,C) Ligação(y,C) Caminho(A,B) Ligação(B,C) Ligação(y,B) Caminho(A,A) Ligação(A,B) Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 7 / 35
  • 50. L.P.O. – Backward Chaining Caracterı́sticas Caminho(A,C)? 1 Ligação(A,B) 2 Ligação(B,C) 3 Ligação(y,z) ∧ Caminho(x,y) ⇒ Caminho(x,z) 4 Ligação(x,z) ⇒ Caminho(x,z) Caminho(A,C) Ligação(y,C) Caminho(A,B) Ligação(B,C) Ligação(y,B) Caminho(A,A) Ligação(A,B) . . . Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 7 / 35
  • 51. L.P.O. – Backward Chaining Caracterı́sticas Caminho(A,C)? 1 Ligação(A,B) 2 Ligação(B,C) 3 Ligação(y,z) ∧ Caminho(x,y) ⇒ Caminho(x,z) 4 Ligação(x,z) ⇒ Caminho(x,z) Caminho(A,C) Ligação(y,C) Caminho(A,B) Ligação(B,C) Ligação(y,B) Caminho(A,A) Ligação(A,B) . . . Bastou invertermos a ordem para gerar- mos mais tentativas. Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 7 / 35
  • 52. L.P.O. – Backward Chaining Caracterı́sticas Caminho(A,C)? 1 Ligação(A,B) 2 Ligação(B,C) 3 Ligação(y,z) ∧ Caminho(x,y) ⇒ Caminho(x,z) 4 Ligação(x,z) ⇒ Caminho(x,z) Caminho(A,C) Ligação(y,C) Caminho(A,B) Ligação(B,C) Ligação(y,B) Caminho(A,A) Ligação(A,B) . . . Dependendo da ordem, até infinitas tentativas... Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 7 / 35
  • 53. L.P.O. – Backward Chaining Caracterı́sticas Caminho(A,C)? 1 Ligação(A,B) 2 Ligação(B,C) 3 Ligação(y,z) ∧ Caminho(x,y) ⇒ Caminho(x,z) 4 Ligação(x,z) ⇒ Caminho(x,z) Caminho(A,C) Ligação(y,C) Caminho(A,B) Ligação(B,C) Ligação(y,B) Caminho(A,A) Ligação(A,B) . . . Note que forward chaining não sofre desse problema Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 7 / 35
  • 54. L.P.O. – Backward Chaining Caracterı́sticas Caminho(A,C)? 1 Ligação(A,B) 2 Ligação(B,C) 3 Ligação(y,z) ∧ Caminho(x,y) ⇒ Caminho(x,z) 4 Ligação(x,z) ⇒ Caminho(x,z) Caminho(A,C) Ligação(y,C) Caminho(A,B) Ligação(B,C) Ligação(y,B) Caminho(A,A) Ligação(A,B) . . . De Caminho(A,B) e Caminho(B,C) sai di- reto Caminho(A,C) Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 7 / 35
  • 55. L.P.O. – Backward Chaining Caracterı́sticas Sofre com computações redundantes Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 8 / 35
  • 56. L.P.O. – Backward Chaining Caracterı́sticas Sofre com computações redundantes Solução: Guarde resultados já obtidos para sub-objetivos e reuse-os. Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 8 / 35
  • 57. L.P.O. – Backward Chaining Programação Lógica Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 9 / 35
  • 58. Programação Lógica Caracterı́sticas Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 10 / 35
  • 59. Programação Lógica Caracterı́sticas Programas são construı́dos pela expressão do conhecimento em uma linguagem formal Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 10 / 35
  • 60. Programação Lógica Caracterı́sticas Programas são construı́dos pela expressão do conhecimento em uma linguagem formal São conjuntos de cláusulas definidas Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 10 / 35
  • 61. Programação Lógica Caracterı́sticas Programas são construı́dos pela expressão do conhecimento em uma linguagem formal São conjuntos de cláusulas definidas Problemas são resolvidos via inferência a partir desse conhecimento Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 10 / 35
  • 62. Programação Lógica Caracterı́sticas Programas são construı́dos pela expressão do conhecimento em uma linguagem formal São conjuntos de cláusulas definidas Problemas são resolvidos via inferência a partir desse conhecimento Alguns usos: Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 10 / 35
  • 63. Programação Lógica Caracterı́sticas Programas são construı́dos pela expressão do conhecimento em uma linguagem formal São conjuntos de cláusulas definidas Problemas são resolvidos via inferência a partir desse conhecimento Alguns usos: Linguagem de prototipação, Análise sintática de lı́ngua natural, Sistemas especialistas etc Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 10 / 35
  • 64. Programação Lógica Caracterı́sticas Programas são construı́dos pela expressão do conhecimento em uma linguagem formal São conjuntos de cláusulas definidas Problemas são resolvidos via inferência a partir desse conhecimento Alguns usos: Linguagem de prototipação, Análise sintática de lı́ngua natural, Sistemas especialistas etc Prolog é a linguagem mais usada, mas não a única Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 10 / 35
  • 65. Programação Lógica Programação Lógica × Não Lógica Lógica Não Lógica Identifique o problema Identifique o problema Reúna a informação Reúna a informação (Pausa para o café) Identifique soluções Codifique a informação na base Programe a solução Codifique instâncias do problema como fatos Codifique instâncias do problema como dados Faça perguntas (queries) Aplique o programa aos dados Encontre fatos falsos Corrija erros de procedimento Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 11 / 35
  • 66. Programação Lógica – Prolog Notação Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 12 / 35
  • 67. Programação Lógica – Prolog Notação Variáveis: iniciam com letras maiúsculas Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 12 / 35
  • 68. Programação Lógica – Prolog Notação Variáveis: iniciam com letras maiúsculas Contantes: escritas com letras minúsculas Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 12 / 35
  • 69. Programação Lógica – Prolog Notação Variáveis: iniciam com letras maiúsculas Contantes: escritas com letras minúsculas Cláusulas são escritas com o consequente antes dos antecedentes: Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 12 / 35
  • 70. Programação Lógica – Prolog Notação Variáveis: iniciam com letras maiúsculas Contantes: escritas com letras minúsculas Cláusulas são escritas com o consequente antes dos antecedentes: criminoso(X) :- compatriota(X), arma(Y), vender(X,Y,Z), hostil(Z). (compatriota(x)∧arma(y)∧vender(x, y, z)∧hostil(z) ⇒ criminoso(x)) Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 12 / 35
  • 71. Programação Lógica – Prolog Notação Variáveis: iniciam com letras maiúsculas Contantes: escritas com letras minúsculas Cláusulas são escritas com o consequente antes dos antecedentes: criminoso(X) :- compatriota(X), arma(Y), vender(X,Y,Z), hostil(Z). (compatriota(x)∧arma(y)∧vender(x, y, z)∧hostil(z) ⇒ criminoso(x)) Queries são feitas diretamente ao interpretador Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 12 / 35
  • 72. Programação Lógica – Prolog Notação Variáveis: iniciam com letras maiúsculas Contantes: escritas com letras minúsculas Cláusulas são escritas com o consequente antes dos antecedentes: criminoso(X) :- compatriota(X), arma(Y), vender(X,Y,Z), hostil(Z). (compatriota(x)∧arma(y)∧vender(x, y, z)∧hostil(z) ⇒ criminoso(x)) Queries são feitas diretamente ao interpretador Sim... é interpretada, mas há versões compiladas Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 12 / 35
  • 73. Programação Lógica – Prolog Caracterı́sticas A execução de um programa é feita via backward chaining, usando busca em profundidade Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 13 / 35
  • 74. Programação Lógica – Prolog Caracterı́sticas A execução de um programa é feita via backward chaining, usando busca em profundidade Cláusulas são testadas na ordem em que foram escritas Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 13 / 35
  • 75. Programação Lógica – Prolog Caracterı́sticas A execução de um programa é feita via backward chaining, usando busca em profundidade Cláusulas são testadas na ordem em que foram escritas A base de conhecimento (ou seja, regras e fatos) só pode ser lida de arquivos Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 13 / 35
  • 76. Programação Lógica – Prolog Caracterı́sticas A execução de um programa é feita via backward chaining, usando busca em profundidade Cláusulas são testadas na ordem em que foram escritas A base de conhecimento (ou seja, regras e fatos) só pode ser lida de arquivos Via “[’nome do arquivo’].” Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 13 / 35
  • 77. Programação Lógica – Prolog Caracterı́sticas A execução de um programa é feita via backward chaining, usando busca em profundidade Cláusulas são testadas na ordem em que foram escritas A base de conhecimento (ou seja, regras e fatos) só pode ser lida de arquivos Via “[’nome do arquivo’].” Repare o ’.’ ao final → Todo comando em prolog termina em ’.’ Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 13 / 35
  • 78. Programação Lógica – Prolog Funcionalidades externas à inferência lógica: Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 14 / 35
  • 79. Programação Lógica – Prolog Funcionalidades externas à inferência lógica: Funções aritméticas Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 14 / 35
  • 80. Programação Lógica – Prolog Funcionalidades externas à inferência lógica: Funções aritméticas Ex: “X is 7+4.”, “X is 3*5+2.” etc Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 14 / 35
  • 81. Programação Lógica – Prolog Funcionalidades externas à inferência lógica: Funções aritméticas Ex: “X is 7+4.”, “X is 3*5+2.” etc “Provadas” pela execução de código, em vez de inferência Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 14 / 35
  • 82. Programação Lógica – Prolog Funcionalidades externas à inferência lógica: Funções aritméticas Ex: “X is 7+4.”, “X is 3*5+2.” etc “Provadas” pela execução de código, em vez de inferência Predicados de entrada e saı́da Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 14 / 35
  • 83. Programação Lógica – Prolog Funcionalidades externas à inferência lógica: Funções aritméticas Ex: “X is 7+4.”, “X is 3*5+2.” etc “Provadas” pela execução de código, em vez de inferência Predicados de entrada e saı́da “write(termo)” e “read(variável)” Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 14 / 35
  • 84. Programação Lógica – Prolog Funcionalidades externas à inferência lógica: Funções aritméticas Ex: “X is 7+4.”, “X is 3*5+2.” etc “Provadas” pela execução de código, em vez de inferência Predicados de entrada e saı́da “write(termo)” e “read(variável)” assert/retract: modificam a base de conhecimento Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 14 / 35
  • 85. Programação Lógica – Prolog Funcionalidades externas à inferência lógica: Funções aritméticas Ex: “X is 7+4.”, “X is 3*5+2.” etc “Provadas” pela execução de código, em vez de inferência Predicados de entrada e saı́da “write(termo)” e “read(variável)” assert/retract: modificam a base de conhecimento Igualdade (operador =) Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 14 / 35
  • 86. Programação Lógica – Prolog Funcionalidades externas à inferência lógica: Funções aritméticas Ex: “X is 7+4.”, “X is 3*5+2.” etc “Provadas” pela execução de código, em vez de inferência Predicados de entrada e saı́da “write(termo)” e “read(variável)” assert/retract: modificam a base de conhecimento Igualdade (operador =) Verifica se ambos os termos são unificáveis (em vez de referenciarem o mesmo objeto) Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 14 / 35
  • 87. Programação Lógica – Prolog Exemplo criminoso(X) :- compatriota(X),arma(Y),vender(X,Y,Z),hostil(Z). arma(X) :- missil(X). hostil(X) :- inimigo(X). vender(osmar,X,pitbullandia):- missil(X), ter(pitbullandia,X). ter(pitbullandia,m1). missil(m1). compatriota(osmar). inimigo(pitbullandia). Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 15 / 35
  • 88. Programação Lógica – Prolog Negação E se quisermos dizer que algo não é verdade? Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 16 / 35
  • 89. Programação Lógica – Prolog Negação E se quisermos dizer que algo não é verdade? Problemas: Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 16 / 35
  • 90. Programação Lógica – Prolog Negação E se quisermos dizer que algo não é verdade? Problemas: A regra resultante não é uma cláusula definida (literais devem ser positivos) Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 16 / 35
  • 91. Programação Lógica – Prolog Negação E se quisermos dizer que algo não é verdade? Problemas: A regra resultante não é uma cláusula definida (literais devem ser positivos) Em LPO, não temos como concluir uma negação → Somente fatos positivos são derivados Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 16 / 35
  • 92. Programação Lógica – Prolog Negação Em programação lógica, tipicamente assumimos um mundo fechado Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 17 / 35
  • 93. Programação Lógica – Prolog Negação Em programação lógica, tipicamente assumimos um mundo fechado Sabemos tudo que há para saber sobre o domı́nio Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 17 / 35
  • 94. Programação Lógica – Prolog Negação Em programação lógica, tipicamente assumimos um mundo fechado Sabemos tudo que há para saber sobre o domı́nio Se não sabemos algo (ou não podemos prová-lo), então deve ser falso Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 17 / 35
  • 95. Programação Lógica – Prolog Negação Em programação lógica, tipicamente assumimos um mundo fechado Sabemos tudo que há para saber sobre o domı́nio Se não sabemos algo (ou não podemos prová-lo), então deve ser falso Que fazer então? Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 17 / 35
  • 96. Programação Lógica – Prolog Negação Em programação lógica, tipicamente assumimos um mundo fechado Sabemos tudo que há para saber sobre o domı́nio Se não sabemos algo (ou não podemos prová-lo), então deve ser falso Que fazer então? Simular a negação usando a falha em prová-la Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 17 / 35
  • 97. Programação Lógica – Prolog Simulando Negação Se não conseguimos provar, então é falso Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 18 / 35
  • 98. Programação Lógica – Prolog Simulando Negação Se não conseguimos provar, então é falso legal(X) :- + ilegal(X) Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 18 / 35
  • 99. Programação Lógica – Prolog Simulando Negação Se não conseguimos provar, então é falso legal(X) :- + ilegal(X) + objetivo será verdadeiro se o objetivo não puder ser provado Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 18 / 35
  • 100. Programação Lógica – Prolog Simulando Negação Se não conseguimos provar, então é falso legal(X) :- + ilegal(X) + objetivo será verdadeiro se o objetivo não puder ser provado O interpretador fará uma busca em todas as coisas ilegais, comparando-as com X Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 18 / 35
  • 101. Programação Lógica – Prolog Simulando Negação Se não conseguimos provar, então é falso legal(X) :- + ilegal(X) + objetivo será verdadeiro se o objetivo não puder ser provado O interpretador fará uma busca em todas as coisas ilegais, comparando-as com X Se nenhum fato ilegal for o mesmo que X, X é legal Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 18 / 35
  • 102. Programação Lógica – Prolog Simulando Negação Se não conseguimos provar, então é falso legal(X) :- + ilegal(X) + objetivo será verdadeiro se o objetivo não puder ser provado O interpretador fará uma busca em todas as coisas ilegais, comparando-as com X Se nenhum fato ilegal for o mesmo que X, X é legal Tudo que eu não puder provar ilegal, é legal Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 18 / 35
  • 103. Programação Lógica – Prolog Simulando Negação Se não conseguimos provar, então é falso legal(X) :- + ilegal(X) + objetivo será verdadeiro se o objetivo não puder ser provado O interpretador fará uma busca em todas as coisas ilegais, comparando-as com X Se nenhum fato ilegal for o mesmo que X, X é legal Tudo que eu não puder provar ilegal, é legal Perigoso, se não soubermos tudo sobre o domı́nio Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 18 / 35
  • 104. Programação Lógica – Prolog Simulando Negação Se não conseguimos provar, então é falso legal(X) :- + ilegal(X) + objetivo será verdadeiro se o objetivo não puder ser provado O interpretador fará uma busca em todas as coisas ilegais, comparando-as com X Se nenhum fato ilegal for o mesmo que X, X é legal Tudo que eu não puder provar ilegal, é legal Perigoso, se não soubermos tudo sobre o domı́nio Em uma base vazia, qualquer coisa pode ser derivada assim Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 18 / 35
  • 105. Programação Lógica – Prolog Simulando Negação – Exemplo legal(X) :- + ilegal(X). ilegal(roubar). Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 19 / 35
  • 106. Programação Lógica – Prolog E o calcanhar de Aquiles... caminho(X,Z) :- ligacao(X,Z). caminho(X,Z) :- caminho(X,Y), ligacao(Y,Z). ligacao(a,b). ligacao(b,c). Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 20 / 35
  • 107. Programação Lógica – Prolog E o calcanhar de Aquiles... caminho(X,Z) :- ligacao(X,Z). caminho(X,Z) :- caminho(X,Y), ligacao(Y,Z). ligacao(a,b). ligacao(b,c). Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 20 / 35
  • 108. Programação Lógica – Prolog E o calcanhar de Aquiles... caminho(X,Z) :- ligacao(X,Z). caminho(X,Z) :- caminho(X,Y), ligacao(Y,Z). ligacao(a,b). ligacao(b,c). caminho(X,Z) :- caminho(X,Y), ligacao(Y,Z). caminho(X,Z) :- ligacao(X,Z). ligacao(a,b). ligacao(b,c). Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 20 / 35
  • 109. Programação Lógica – Prolog E o calcanhar de Aquiles... caminho(X,Z) :- ligacao(X,Z). caminho(X,Z) :- caminho(X,Y), ligacao(Y,Z). ligacao(a,b). ligacao(b,c). caminho(X,Z) :- caminho(X,Y), ligacao(Y,Z). caminho(X,Z) :- ligacao(X,Z). ligacao(a,b). ligacao(b,c). Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 20 / 35
  • 110. Programação Lógica – Prolog Outros problemas... Prolog não faz o teste de ocorrência Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 21 / 35
  • 111. Programação Lógica – Prolog Outros problemas... Prolog não faz o teste de ocorrência Quanto unifica uma variável com um termo complexo, não verifica se a variável ocorre dentro do termo ({x/f (x)}) Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 21 / 35
  • 112. Programação Lógica – Prolog Outros problemas... Prolog não faz o teste de ocorrência Quanto unifica uma variável com um termo complexo, não verifica se a variável ocorre dentro do termo ({x/f (x)}) Assim, algumas inferências inconsistentes podem ser feitas Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 21 / 35
  • 113. Programação Lógica – Prolog Outros problemas... Prolog não faz o teste de ocorrência Quanto unifica uma variável com um termo complexo, não verifica se a variável ocorre dentro do termo ({x/f (x)}) Assim, algumas inferências inconsistentes podem ser feitas Prolog não faz checagem para identificar recursão infinita Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 21 / 35
  • 114. Programação Lógica – Prolog Outros problemas... Prolog não faz o teste de ocorrência Quanto unifica uma variável com um termo complexo, não verifica se a variável ocorre dentro do termo ({x/f (x)}) Assim, algumas inferências inconsistentes podem ser feitas Prolog não faz checagem para identificar recursão infinita Isso o torna rápido quando são dados os axiomas corretos Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 21 / 35
  • 115. Programação Lógica – Prolog Outros problemas... Prolog não faz o teste de ocorrência Quanto unifica uma variável com um termo complexo, não verifica se a variável ocorre dentro do termo ({x/f (x)}) Assim, algumas inferências inconsistentes podem ser feitas Prolog não faz checagem para identificar recursão infinita Isso o torna rápido quando são dados os axiomas corretos E incompleto quando são dados os errados Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 21 / 35
  • 116. Inferência em LPO Usos Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 22 / 35
  • 117. Inferência em LPO Usos Resolução Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 22 / 35
  • 118. Inferência em LPO Usos Resolução Usada por provadores automáticos de teoremas Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 22 / 35
  • 119. Inferência em LPO Usos Resolução Usada por provadores automáticos de teoremas Forward Chaining: Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 22 / 35
  • 120. Inferência em LPO Usos Resolução Usada por provadores automáticos de teoremas Forward Chaining: Aplicada a bases dedutivas e sistemas de produção Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 22 / 35
  • 121. Inferência em LPO Usos Resolução Usada por provadores automáticos de teoremas Forward Chaining: Aplicada a bases dedutivas e sistemas de produção Backward Chaining Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 22 / 35
  • 122. Inferência em LPO Usos Resolução Usada por provadores automáticos de teoremas Forward Chaining: Aplicada a bases dedutivas e sistemas de produção Backward Chaining Usada em programação lógica Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 22 / 35
  • 123. Inferência em LPO e LProp: Fragilidades Monotonicidade O conjunto de sentenças acarretadas pode apenas aumentar, na medida em que informação é adicionada à base Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 23 / 35
  • 124. Inferência em LPO e LProp: Fragilidades Monotonicidade O conjunto de sentenças acarretadas pode apenas aumentar, na medida em que informação é adicionada à base Ou seja, a adição de premissas não podem mudar conclusões antigas Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 23 / 35
  • 125. Inferência em LPO e LProp: Fragilidades Monotonicidade O conjunto de sentenças acarretadas pode apenas aumentar, na medida em que informação é adicionada à base Ou seja, a adição de premissas não podem mudar conclusões antigas Isso significa que, se BC |= α, então BC ∧ β |= α, onde β é uma nova asserção na base Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 23 / 35
  • 126. Inferência em LPO e LProp: Fragilidades Monotonicidade O conjunto de sentenças acarretadas pode apenas aumentar, na medida em que informação é adicionada à base Ou seja, a adição de premissas não podem mudar conclusões antigas Isso significa que, se BC |= α, então BC ∧ β |= α, onde β é uma nova asserção na base Se antes BC |= α, a adição de β a BC não pode mudar isso, e BC ∧ β |= α Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 23 / 35
  • 127. Inferência em LPO e LProp: Fragilidades Monotonicidade O conjunto de sentenças acarretadas pode apenas aumentar, na medida em que informação é adicionada à base Ou seja, a adição de premissas não podem mudar conclusões antigas Isso significa que, se BC |= α, então BC ∧ β |= α, onde β é uma nova asserção na base Se antes BC |= α, a adição de β a BC não pode mudar isso, e BC ∧ β |= α Propriedade chamada de monotonicidade do acarretamento Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 23 / 35
  • 128. Inferência em LPO e LProp: Fragilidades Monotonicidade Isso faz com que regras de inferência possam ser aplicadas toda vez que suas premissas forem encontradas na base Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 24 / 35
  • 129. Inferência em LPO e LProp: Fragilidades Monotonicidade Isso faz com que regras de inferência possam ser aplicadas toda vez que suas premissas forem encontradas na base Não haverá nada na base para invalidar a conclusão dessa regra Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 24 / 35
  • 130. Inferência em LPO e LProp: Fragilidades Monotonicidade Isso faz com que regras de inferência possam ser aplicadas toda vez que suas premissas forem encontradas na base Não haverá nada na base para invalidar a conclusão dessa regra E qual o problema com isso? Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 24 / 35
  • 131. Inferência em LPO e LProp: Fragilidades Monotonicidade Isso faz com que regras de inferência possam ser aplicadas toda vez que suas premissas forem encontradas na base Não haverá nada na base para invalidar a conclusão dessa regra E qual o problema com isso? Não captura uma propriedade comum do raciocı́nio humano → a mudança de ideia Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 24 / 35
  • 132. Inferência em LPO e LProp: Fragilidades Monotonicidade Isso faz com que regras de inferência possam ser aplicadas toda vez que suas premissas forem encontradas na base Não haverá nada na base para invalidar a conclusão dessa regra E qual o problema com isso? Não captura uma propriedade comum do raciocı́nio humano → a mudança de ideia Para esses casos, existe a lógica não monotônica Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 24 / 35
  • 133. Inferência em LPO e LProp: Fragilidades Monotonicidade Na lógica não-monotônica, podemos tirar conclusões provisoriamente Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 25 / 35
  • 134. Inferência em LPO e LProp: Fragilidades Monotonicidade Na lógica não-monotônica, podemos tirar conclusões provisoriamente Nos reservando o direito de retratação à luz de nova informação Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 25 / 35
  • 135. Inferência em LPO e LProp: Fragilidades Monotonicidade Na lógica não-monotônica, podemos tirar conclusões provisoriamente Nos reservando o direito de retratação à luz de nova informação O conjunto de conclusões apoiadas pela base não necessariamente aumenta Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 25 / 35
  • 136. Inferência em LPO e LProp: Fragilidades Monotonicidade Na lógica não-monotônica, podemos tirar conclusões provisoriamente Nos reservando o direito de retratação à luz de nova informação O conjunto de conclusões apoiadas pela base não necessariamente aumenta Pode até reduzir Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 25 / 35
  • 137. Inferência em LPO e LProp: Fragilidades Tempo Como lidar com tempo em LPO ou lógica proposicional? Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 26 / 35
  • 138. Inferência em LPO e LProp: Fragilidades Tempo Como lidar com tempo em LPO ou lógica proposicional? Como fazer uma afirmação valer apenas em um determinado momento? Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 26 / 35
  • 139. Inferência em LPO e LProp: Fragilidades Tempo Como lidar com tempo em LPO ou lógica proposicional? Como fazer uma afirmação valer apenas em um determinado momento? Para isso existe a lógica temporal Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 26 / 35
  • 140. Inferência em LPO e LProp: Fragilidades Tempo Como lidar com tempo em LPO ou lógica proposicional? Como fazer uma afirmação valer apenas em um determinado momento? Para isso existe a lógica temporal Assume que fatos valem em instantes particulares, e que esses instantes são ordenados Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 26 / 35
  • 141. Inferência em LPO e LProp: Fragilidades Tempo Como lidar com tempo em LPO ou lógica proposicional? Como fazer uma afirmação valer apenas em um determinado momento? Para isso existe a lógica temporal Assume que fatos valem em instantes particulares, e que esses instantes são ordenados Instantes podem ser pontuais ou intervalos Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 26 / 35
  • 142. Inferência em LPO e LProp: Fragilidades Ordens mais altas Em LPO trabalhamos com objetos e suas relações Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 27 / 35
  • 143. Inferência em LPO e LProp: Fragilidades Ordens mais altas Em LPO trabalhamos com objetos e suas relações Ex: ∃x ∀y P(f (x)) ⇒ Q(y) Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 27 / 35
  • 144. Inferência em LPO e LProp: Fragilidades Ordens mais altas Em LPO trabalhamos com objetos e suas relações Ex: ∃x ∀y P(f (x)) ⇒ Q(y) E como podemos fazer afirmações sobre propriedades de objetos? Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 27 / 35
  • 145. Inferência em LPO e LProp: Fragilidades Ordens mais altas Em LPO trabalhamos com objetos e suas relações Ex: ∃x ∀y P(f (x)) ⇒ Q(y) E como podemos fazer afirmações sobre propriedades de objetos? Ex: Todas as raças de cães vem dos lobos? Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 27 / 35
  • 146. Inferência em LPO e LProp: Fragilidades Ordens mais altas Em LPO trabalhamos com objetos e suas relações Ex: ∃x ∀y P(f (x)) ⇒ Q(y) E como podemos fazer afirmações sobre propriedades de objetos? Ex: Todas as raças de cães vem dos lobos? Lógica de Segunda Ordem Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 27 / 35
  • 147. Inferência em LPO e LProp: Fragilidades Ordens mais altas Em LPO trabalhamos com objetos e suas relações Ex: ∃x ∀y P(f (x)) ⇒ Q(y) E como podemos fazer afirmações sobre propriedades de objetos? Ex: Todas as raças de cães vem dos lobos? Lógica de Segunda Ordem Permite expressões como ∀Q ∃P ∃f ∃x ∀y P(f (x)) ⇒ Q(y) (quantificador do tipo “para todo conjunto de objetos”) Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 27 / 35
  • 148. Inferência em LPO e LProp: Fragilidades Ordens mais altas Em LPO trabalhamos com objetos e suas relações Ex: ∃x ∀y P(f (x)) ⇒ Q(y) E como podemos fazer afirmações sobre propriedades de objetos? Ex: Todas as raças de cães vem dos lobos? Lógica de Segunda Ordem Permite expressões como ∀Q ∃P ∃f ∃x ∀y P(f (x)) ⇒ Q(y) (quantificador do tipo “para todo conjunto de objetos”) Vê as relações e funções da LPO como objetos em si Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 27 / 35
  • 149. Inferência em LPO e LProp: Fragilidades E muito mais... Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 28 / 35
  • 150. Inferência em LPO e LProp: Fragilidades E muito mais... Há ainda as que tratam de incerteza Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 28 / 35
  • 151. Inferência em LPO e LProp: Fragilidades E muito mais... Há ainda as que tratam de incerteza Lógica probabilı́stica Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 28 / 35
  • 152. Inferência em LPO e LProp: Fragilidades E muito mais... Há ainda as que tratam de incerteza Lógica probabilı́stica De inconsistência Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 28 / 35
  • 153. Inferência em LPO e LProp: Fragilidades E muito mais... Há ainda as que tratam de incerteza Lógica probabilı́stica De inconsistência Lógica paraconsistente Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 28 / 35
  • 154. Inferência em LPO e LProp: Fragilidades E muito mais... Há ainda as que tratam de incerteza Lógica probabilı́stica De inconsistência Lógica paraconsistente De imprecisão Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 28 / 35
  • 155. Inferência em LPO e LProp: Fragilidades E muito mais... Há ainda as que tratam de incerteza Lógica probabilı́stica De inconsistência Lógica paraconsistente De imprecisão Lógica difusa (Fuzzy) (veremos mais adiante) Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 28 / 35
  • 156. Inferência em LPO e LProp: Fragilidades E muito mais... Há ainda as que tratam de incerteza Lógica probabilı́stica De inconsistência Lógica paraconsistente De imprecisão Lógica difusa (Fuzzy) (veremos mais adiante) etc Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 28 / 35
  • 157. Lógica de Primeira Ordem Considerações Finais Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 29 / 35
  • 158. Lógica de Primeira Ordem Considerações Finais LPO é Completa (Gödel, 1929) Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 29 / 35
  • 159. Lógica de Primeira Ordem Considerações Finais LPO é Completa (Gödel, 1929) Se a base acarreta S, então podemos provar S a partir da base Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 29 / 35
  • 160. Lógica de Primeira Ordem Considerações Finais LPO é Completa (Gödel, 1929) Se a base acarreta S, então podemos provar S a partir da base Resolução é um sistema de provas completo para LPO (Robinson, 1965) Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 29 / 35
  • 161. Lógica de Primeira Ordem Considerações Finais LPO é Completa (Gödel, 1929) Se a base acarreta S, então podemos provar S a partir da base Resolução é um sistema de provas completo para LPO (Robinson, 1965) Se uma prova existir, podemos encontrá-la Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 29 / 35
  • 162. Lógica de Primeira Ordem Considerações Finais LPO é Completa (Gödel, 1929) Se a base acarreta S, então podemos provar S a partir da base Resolução é um sistema de provas completo para LPO (Robinson, 1965) Se uma prova existir, podemos encontrá-la E se não existir? O processo pode continuar para sempre Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 29 / 35
  • 163. Lógica de Primeira Ordem Considerações Finais LPO é Completa (Gödel, 1929) Se a base acarreta S, então podemos provar S a partir da base Resolução é um sistema de provas completo para LPO (Robinson, 1965) Se uma prova existir, podemos encontrá-la E se não existir? O processo pode continuar para sempre LPO é semi-decidı́vel: se houver prova, encontramos, se não houver, podemos ficar buscando eternamente Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 29 / 35
  • 164. Lógica de Primeira Ordem E o balde de água fria... Gödel (1931) Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 30 / 35
  • 165. Lógica de Primeira Ordem E o balde de água fria... Gödel (1931) 1o Teorema da Incompletude: Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 30 / 35
  • 166. Lógica de Primeira Ordem E o balde de água fria... Gödel (1931) 1o Teorema da Incompletude: Em qualquer sistema formal consistente F, dentro do qual possa ser feita uma certa quantidade de aritmética, é possı́vel construir uma sentença (chamada sentença de Gödel) G(F) tal que: Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 30 / 35
  • 167. Lógica de Primeira Ordem E o balde de água fria... Gödel (1931) 1o Teorema da Incompletude: Em qualquer sistema formal consistente F, dentro do qual possa ser feita uma certa quantidade de aritmética, é possı́vel construir uma sentença (chamada sentença de Gödel) G(F) tal que: G(F) é uma sentença de F mas não pode ser provada dentro de F Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 30 / 35
  • 168. Lógica de Primeira Ordem E o balde de água fria... Gödel (1931) 1o Teorema da Incompletude: Em qualquer sistema formal consistente F, dentro do qual possa ser feita uma certa quantidade de aritmética, é possı́vel construir uma sentença (chamada sentença de Gödel) G(F) tal que: G(F) é uma sentença de F mas não pode ser provada dentro de F Se F for consistente, então G(F) é verdadeira Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 30 / 35
  • 169. Lógica de Primeira Ordem E o balde de água fria... Gödel (1931) 1o Teorema da Incompletude: Em qualquer sistema formal consistente F, dentro do qual possa ser feita uma certa quantidade de aritmética, é possı́vel construir uma sentença (chamada sentença de Gödel) G(F) tal que: G(F) é uma sentença de F mas não pode ser provada dentro de F Se F for consistente, então G(F) é verdadeira Ou seja, não há sistema de provas completo e consistente para LPO + aritmética Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 30 / 35
  • 170. Lógica de Primeira Ordem E o balde de água fria... Gödel (1931) 1o Teorema da Incompletude: Em qualquer sistema formal consistente F, dentro do qual possa ser feita uma certa quantidade de aritmética, é possı́vel construir uma sentença (chamada sentença de Gödel) G(F) tal que: G(F) é uma sentença de F mas não pode ser provada dentro de F Se F for consistente, então G(F) é verdadeira Ou seja, não há sistema de provas completo e consistente para LPO + aritmética Ou há sentenças que são verdadeiras, mas não prováveis (incompleto), ou que são prováveis, mas não verdadeiras (inconsistente) Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 30 / 35
  • 171. Lógica de Primeira Ordem E o balde de água fria... Gödel (1931) 1o Teorema da Incompletude (cont.): Isso ocorre porque a aritmética nos permite construir sentenças auto-referenciáveis Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 31 / 35
  • 172. Lógica de Primeira Ordem E o balde de água fria... Gödel (1931) 1o Teorema da Incompletude (cont.): Isso ocorre porque a aritmética nos permite construir sentenças auto-referenciáveis P: “P não pode ser provada” Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 31 / 35
  • 173. Lógica de Primeira Ordem E o balde de água fria... Gödel (1931) 1o Teorema da Incompletude (cont.): Isso ocorre porque a aritmética nos permite construir sentenças auto-referenciáveis P: “P não pode ser provada” Se P for verdadeira, então não podemos prová-la, e o sistema é incompleto Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 31 / 35
  • 174. Lógica de Primeira Ordem E o balde de água fria... Gödel (1931) 1o Teorema da Incompletude (cont.): Isso ocorre porque a aritmética nos permite construir sentenças auto-referenciáveis P: “P não pode ser provada” Se P for verdadeira, então não podemos prová-la, e o sistema é incompleto Se P for falsa, então P pode ser provada, e acabamos de derivar uma sentença falsa → o sistema é inconsistente Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 31 / 35
  • 175. Lógica de Primeira Ordem E o balde de água fria... Gödel (1931) 2o Teorema da Incompletude: Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 32 / 35
  • 176. Lógica de Primeira Ordem E o balde de água fria... Gödel (1931) 2o Teorema da Incompletude: Em qualquer sistema formal consistente F, dentro do qual possa ser feita uma certa quantidade de aritmética, não é possı́vel provar que o sistema em si é consistente Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 32 / 35
  • 177. Lógica de Primeira Ordem E o balde de água fria... Gödel (1931) 2o Teorema da Incompletude: Em qualquer sistema formal consistente F, dentro do qual possa ser feita uma certa quantidade de aritmética, não é possı́vel provar que o sistema em si é consistente E, com isso, não podemos provar todos os teoremas da matemática dentro de qualquer sistema de axiomas Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 32 / 35
  • 178. Lógica de Primeira Ordem E o balde de água fria... Gödel (1931) 2o Teorema da Incompletude: Em qualquer sistema formal consistente F, dentro do qual possa ser feita uma certa quantidade de aritmética, não é possı́vel provar que o sistema em si é consistente E, com isso, não podemos provar todos os teoremas da matemática dentro de qualquer sistema de axiomas Sequer conseguimos provar que o sistema como um todo é consistente Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 32 / 35
  • 179. Referências Russell, S.; Norvig P. (2010): Artificial Intelligence: A Modern Approach. Prentice Hall. 3a ed. Slides do livro: aima.eecs.berkeley.edu/slides-pdf/ Hiż, A. (1957): Inferential Equivalence and Natural Deduction. The Journal of Symbolic Logic, 22(3). pp. 237-240. Nilsson, N. J. (1986): Probabilistic Logic. Artificial Intelligence, 28(1). pp. 71-87. ocw.mit.edu/OcwWeb/Electrical-Engineering- and-Computer-Science/6-034Spring-2005/LectureNotes/index. htm jmvidal.cse.sc.edu/talks/learningrules/ first-orderlogicsdefs.xml Norton Trevisan Roman(norton@usp.br) 11 de abril de 2019 33 / 35