SlideShare uma empresa Scribd logo
1 de 236
Baixar para ler offline
Inteligência Artificial – ACH2016
Aula 11 – Inferência em Lógica de Primeira
Ordem
Norton Trevisan Roman
(norton@usp.br)
5 de abril de 2019
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 1 / 34
Bases em Lógica de Primeira Ordem
Interagindo com uma BC
Fazemos buscas (queries) na base
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 2 / 34
Bases em Lógica de Primeira Ordem
Interagindo com uma BC
Fazemos buscas (queries) na base
Feitas por meio de sentenças lógicas em LPO
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 2 / 34
Bases em Lógica de Primeira Ordem
Interagindo com uma BC
Fazemos buscas (queries) na base
Feitas por meio de sentenças lógicas em LPO
Qualquer query que possa ser inferida logicamente pela base
de dados será respondida afirmativamente
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 2 / 34
Bases em Lógica de Primeira Ordem
Interagindo com uma BC
Fazemos buscas (queries) na base
Feitas por meio de sentenças lógicas em LPO
Qualquer query que possa ser inferida logicamente pela base
de dados será respondida afirmativamente
A BC é composta por:
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 2 / 34
Bases em Lógica de Primeira Ordem
Interagindo com uma BC
Fazemos buscas (queries) na base
Feitas por meio de sentenças lógicas em LPO
Qualquer query que possa ser inferida logicamente pela base
de dados será respondida afirmativamente
A BC é composta por:
Axiomas: informação factual básica da qual conclusões
úteis podem ser derivadas
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 2 / 34
Bases em Lógica de Primeira Ordem
Interagindo com uma BC
Fazemos buscas (queries) na base
Feitas por meio de sentenças lógicas em LPO
Qualquer query que possa ser inferida logicamente pela base
de dados será respondida afirmativamente
A BC é composta por:
Axiomas: informação factual básica da qual conclusões
úteis podem ser derivadas
Ex: ∀p, f Progenitor(p, f ) ⇔ Prole(f , p); Homem(Pedro); etc
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 2 / 34
Bases em Lógica de Primeira Ordem
Interagindo com uma BC
Fazemos buscas (queries) na base
Feitas por meio de sentenças lógicas em LPO
Qualquer query que possa ser inferida logicamente pela base
de dados será respondida afirmativamente
A BC é composta por:
Axiomas: informação factual básica da qual conclusões
úteis podem ser derivadas
Ex: ∀p, f Progenitor(p, f ) ⇔ Prole(f , p); Homem(Pedro); etc
Teoremas: sentenças acarretadas pelos axiomas
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 2 / 34
Bases em Lógica de Primeira Ordem
Interagindo com uma BC
Fazemos buscas (queries) na base
Feitas por meio de sentenças lógicas em LPO
Qualquer query que possa ser inferida logicamente pela base
de dados será respondida afirmativamente
A BC é composta por:
Axiomas: informação factual básica da qual conclusões
úteis podem ser derivadas
Ex: ∀p, f Progenitor(p, f ) ⇔ Prole(f , p); Homem(Pedro); etc
Teoremas: sentenças acarretadas pelos axiomas
Não precisam existir na base, bastam os axiomas
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 2 / 34
Bases em Lógica de Primeira Ordem
Interagindo com uma BC
Fazemos buscas (queries) na base
Feitas por meio de sentenças lógicas em LPO
Qualquer query que possa ser inferida logicamente pela base
de dados será respondida afirmativamente
A BC é composta por:
Axiomas: informação factual básica da qual conclusões
úteis podem ser derivadas
Ex: ∀p, f Progenitor(p, f ) ⇔ Prole(f , p); Homem(Pedro); etc
Teoremas: sentenças acarretadas pelos axiomas
Não precisam existir na base, bastam os axiomas
Reduzem o custo computacional de derivar novas sentenças
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 2 / 34
Lógica de Primeira Ordem
Inferência
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 3 / 34
Lógica de Primeira Ordem
Inferência
Como em lógica proposicional
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 3 / 34
Lógica de Primeira Ordem
Inferência
Como em lógica proposicional
Uma sentença pode ser inferida de uma BC sse for
verdadeira em toda interpretação na qual a BC é verdadeira
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 3 / 34
Lógica de Primeira Ordem
Inferência
Como em lógica proposicional
Uma sentença pode ser inferida de uma BC sse for
verdadeira em toda interpretação na qual a BC é verdadeira
Força bruta está fora de questão
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 3 / 34
Lógica de Primeira Ordem
Inferência
Como em lógica proposicional
Uma sentença pode ser inferida de uma BC sse for
verdadeira em toda interpretação na qual a BC é verdadeira
Força bruta está fora de questão
Número enorme (possivelmente ∞) de interpretações
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 3 / 34
Lógica de Primeira Ordem
Inferência
Como em lógica proposicional
Uma sentença pode ser inferida de uma BC sse for
verdadeira em toda interpretação na qual a BC é verdadeira
Força bruta está fora de questão
Número enorme (possivelmente ∞) de interpretações
Quantificadores ∀ e ∃
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 3 / 34
Lógica de Primeira Ordem
Inferência
Como em lógica proposicional
Uma sentença pode ser inferida de uma BC sse for
verdadeira em toda interpretação na qual a BC é verdadeira
Força bruta está fora de questão
Número enorme (possivelmente ∞) de interpretações
Quantificadores ∀ e ∃
Para ∃ existe skolemização (mais adiante), contudo...
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 3 / 34
Lógica de Primeira Ordem
Inferência
Como em lógica proposicional
Uma sentença pode ser inferida de uma BC sse for
verdadeira em toda interpretação na qual a BC é verdadeira
Força bruta está fora de questão
Número enorme (possivelmente ∞) de interpretações
Quantificadores ∀ e ∃
Para ∃ existe skolemização (mais adiante), contudo...
∀ pode mapear a infinitos elementos, dependendo do domı́nio
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 3 / 34
Lógica de Primeira Ordem
Inferência
Como em lógica proposicional
Uma sentença pode ser inferida de uma BC sse for
verdadeira em toda interpretação na qual a BC é verdadeira
Força bruta está fora de questão
Número enorme (possivelmente ∞) de interpretações
Quantificadores ∀ e ∃
Para ∃ existe skolemização (mais adiante), contudo...
∀ pode mapear a infinitos elementos, dependendo do domı́nio
Solução: provas
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 3 / 34
Lógica de Primeira Ordem – Inferência
Provas
Há versões de primeira ordem para cada técnica
vista em lógica proposicional
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 4 / 34
Lógica de Primeira Ordem – Inferência
Provas
Há versões de primeira ordem para cada técnica
vista em lógica proposicional
Forward Chaining, Backward Chaining e Resolução
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 4 / 34
Lógica de Primeira Ordem – Inferência
Provas
Há versões de primeira ordem para cada técnica
vista em lógica proposicional
Forward Chaining, Backward Chaining e Resolução
Forward Chaining e Backward Chaining exigem que
a base contenha apenas cláusulas definidas
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 4 / 34
Lógica de Primeira Ordem – Inferência
Provas
Há versões de primeira ordem para cada técnica
vista em lógica proposicional
Forward Chaining, Backward Chaining e Resolução
Forward Chaining e Backward Chaining exigem que
a base contenha apenas cláusulas definidas
Disjunções de literais dos quais exatamente um é positivo
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 4 / 34
Lógica de Primeira Ordem – Inferência
Provas
Há versões de primeira ordem para cada técnica
vista em lógica proposicional
Forward Chaining, Backward Chaining e Resolução
Forward Chaining e Backward Chaining exigem que
a base contenha apenas cláusulas definidas
Disjunções de literais dos quais exatamente um é positivo
Literais
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 4 / 34
Lógica de Primeira Ordem – Inferência
Provas
Há versões de primeira ordem para cada técnica
vista em lógica proposicional
Forward Chaining, Backward Chaining e Resolução
Forward Chaining e Backward Chaining exigem que
a base contenha apenas cláusulas definidas
Disjunções de literais dos quais exatamente um é positivo
Literais
Literais em LPO podem incluir variáveis
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 4 / 34
Lógica de Primeira Ordem – Inferência
Provas
Há versões de primeira ordem para cada técnica
vista em lógica proposicional
Forward Chaining, Backward Chaining e Resolução
Forward Chaining e Backward Chaining exigem que
a base contenha apenas cláusulas definidas
Disjunções de literais dos quais exatamente um é positivo
Literais
Literais em LPO podem incluir variáveis
“Amigo(Pedro)” (constante)
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 4 / 34
Lógica de Primeira Ordem – Inferência
Provas
Há versões de primeira ordem para cada técnica
vista em lógica proposicional
Forward Chaining, Backward Chaining e Resolução
Forward Chaining e Backward Chaining exigem que
a base contenha apenas cláusulas definidas
Disjunções de literais dos quais exatamente um é positivo
Literais
Literais em LPO podem incluir variáveis
“Amigo(Pedro)” (constante)
“Grande(x)” (variável)
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 4 / 34
Lógica de Primeira Ordem – Inferência
Provas
Em qualquer técnica, expressões com variáveis são
assumidas como universalmente quantificadas
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 5 / 34
Lógica de Primeira Ordem – Inferência
Provas
Em qualquer técnica, expressões com variáveis são
assumidas como universalmente quantificadas
Ou seja, todas são naturalmente precedidas por ∀
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 5 / 34
Lógica de Primeira Ordem – Inferência
Provas
Em qualquer técnica, expressões com variáveis são
assumidas como universalmente quantificadas
Ou seja, todas são naturalmente precedidas por ∀
“Grande(x)” ≡ “∀x Grande(x)” (literal)
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 5 / 34
Lógica de Primeira Ordem – Inferência
Provas
Em qualquer técnica, expressões com variáveis são
assumidas como universalmente quantificadas
Ou seja, todas são naturalmente precedidas por ∀
“Grande(x)” ≡ “∀x Grande(x)” (literal)
“Tio(x, y) ⇔ Sobrinho(y, x)” ≡
“∀x, y Tio(x, y) ⇔ Sobrinho(y, x)”
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 5 / 34
Lógica de Primeira Ordem – Inferência
Provas
Em qualquer técnica, expressões com variáveis são
assumidas como universalmente quantificadas
Ou seja, todas são naturalmente precedidas por ∀
“Grande(x)” ≡ “∀x Grande(x)” (literal)
“Tio(x, y) ⇔ Sobrinho(y, x)” ≡
“∀x, y Tio(x, y) ⇔ Sobrinho(y, x)”
Começaremos pela resolução, por ser mais geral
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 5 / 34
Lógica de Primeira Ordem – Inferência
Resolução
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 6 / 34
Lógica de Primeira Ordem – Resolução
Passos
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 7 / 34
Lógica de Primeira Ordem – Resolução
Passos
∀x∃y P(x) ⇒ R(x, y)
¬P(x) ∨ R(x, F(x))
1 Converter de LPO para forma clausal
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 7 / 34
Lógica de Primeira Ordem – Resolução
Passos
∀x∃y P(x) ⇒ R(x, y)
¬P(x) ∨ R(x, F(x))
1 Converter de LPO para forma clausal
Generalização da Forma Normal
Conjuntiva para LPO
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 7 / 34
Lógica de Primeira Ordem – Resolução
Passos
∀x∃y P(x) ⇒ R(x, y)
¬P(x) ∨ R(x, F(x))
1 Converter de LPO para forma clausal
Generalização da Forma Normal
Conjuntiva para LPO
Uma conjunção de disjunções
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 7 / 34
Lógica de Primeira Ordem – Resolução
Passos
∀x∃y P(x) ⇒ R(x, y)
¬P(x) ∨ R(x, F(x))
1 Converter de LPO para forma clausal
Generalização da Forma Normal
Conjuntiva para LPO
Uma conjunção de disjunções
Sem quantificadores
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 7 / 34
Lógica de Primeira Ordem – Resolução
Passos
∀x∃y P(x) ⇒ R(x, y)
¬P(x) ∨ R(x, F(x))
1 Converter de LPO para forma clausal
Generalização da Forma Normal
Conjuntiva para LPO
Uma conjunção de disjunções
Sem quantificadores
2 Determinar que variáveis substituir por quais quando
da resolução
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 7 / 34
Lógica de Primeira Ordem – Resolução
Passos
∀x∃y P(x) ⇒ R(x, y)
¬P(x) ∨ R(x, F(x))
1 Converter de LPO para forma clausal
Generalização da Forma Normal
Conjuntiva para LPO
Uma conjunção de disjunções
Sem quantificadores
2 Determinar que variáveis substituir por quais quando
da resolução
Processo chamado Unificação
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 7 / 34
Lógica de Primeira Ordem – Resolução
Passos
∀x∃y P(x) ⇒ R(x, y)
¬P(x) ∨ R(x, F(x))
1 Converter de LPO para forma clausal
Generalização da Forma Normal
Conjuntiva para LPO
Uma conjunção de disjunções
Sem quantificadores
2 Determinar que variáveis substituir por quais quando
da resolução
Processo chamado Unificação
3 Executar a resolução
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 7 / 34
Lógica de Primeira Ordem – Resolução
Passos
∀x∃y P(x) ⇒ R(x, y)
¬P(x) ∨ R(x, F(x))
1 Converter de LPO para forma clausal +
Generalização da Forma Normal
Conjuntiva para LPO
Uma conjunção de disjunções
Sem quantificadores
2 Determinar que variáveis substituir por quais quando
da resolução
Processo chamado Unificação
3 Executar a resolução
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 7 / 34
Lógica de Primeira Ordem – Resolução
Forma Normal Conjuntiva
Como no caso proposicional, resolução em LPO
também exige que as sentenças estejam na FNC
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 8 / 34
Lógica de Primeira Ordem – Resolução
Forma Normal Conjuntiva
Como no caso proposicional, resolução em LPO
também exige que as sentenças estejam na FNC
Conjunção de cláusulas, onde cada cláusula é uma disjunção
de literais
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 8 / 34
Lógica de Primeira Ordem – Resolução
Forma Normal Conjuntiva
Como no caso proposicional, resolução em LPO
também exige que as sentenças estejam na FNC
Conjunção de cláusulas, onde cada cláusula é uma disjunção
de literais
Lembrando que literais podem conter variáveis
universalmente quantificadas
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 8 / 34
Lógica de Primeira Ordem – Resolução
Forma Normal Conjuntiva
Como no caso proposicional, resolução em LPO
também exige que as sentenças estejam na FNC
Conjunção de cláusulas, onde cada cláusula é uma disjunção
de literais
Lembrando que literais podem conter variáveis
universalmente quantificadas
Também chamada de Forma Clausal
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 8 / 34
Lógica de Primeira Ordem – Resolução
Forma Normal Conjuntiva
Como no caso proposicional, resolução em LPO
também exige que as sentenças estejam na FNC
Conjunção de cláusulas, onde cada cláusula é uma disjunção
de literais
Lembrando que literais podem conter variáveis
universalmente quantificadas
Também chamada de Forma Clausal
Também como no caso proposicional, toda sentença
em LPO pode ser convertida em uma sentença
inferencialmente equivalente na FNC
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 8 / 34
Lógica de Primeira Ordem – Resolução
Equivalência Inferencial
Duas sentenças são tidas como inferencialmente
equivalentes quando uma for satisfatı́vel sse a
outra for satisfatı́vel também
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 9 / 34
Lógica de Primeira Ordem – Resolução
Equivalência Inferencial
Duas sentenças são tidas como inferencialmente
equivalentes quando uma for satisfatı́vel sse a
outra for satisfatı́vel também
Alternativamente, uma será insatisfatı́vel somente quando a
outra também o for
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 9 / 34
Lógica de Primeira Ordem – Resolução
Equivalência Inferencial
Duas sentenças são tidas como inferencialmente
equivalentes quando uma for satisfatı́vel sse a
outra for satisfatı́vel também
Alternativamente, uma será insatisfatı́vel somente quando a
outra também o for
A ` B e B ` A
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 9 / 34
Lógica de Primeira Ordem – Resolução
Equivalência Inferencial
Duas sentenças são tidas como inferencialmente
equivalentes quando uma for satisfatı́vel sse a
outra for satisfatı́vel também
Alternativamente, uma será insatisfatı́vel somente quando a
outra também o for
A ` B e B ` A
Elas não precisam ser logicamente equivalentes
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 9 / 34
Lógica de Primeira Ordem – Resolução
Equivalência Inferencial
Duas sentenças são tidas como inferencialmente
equivalentes quando uma for satisfatı́vel sse a
outra for satisfatı́vel também
Alternativamente, uma será insatisfatı́vel somente quando a
outra também o for
A ` B e B ` A
Elas não precisam ser logicamente equivalentes
Apenas permitem que o mesmo conjunto de inferências seja
feito
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 9 / 34
Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 10 / 34
Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal
1 Elimine implicações
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 10 / 34
Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal
α ⇔ β ≡ (α ⇒ β) ∧ (β ⇒ α)
α ⇒ β ≡ ¬α ∨ β
1 Elimine implicações
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 10 / 34
Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal
α ⇔ β ≡ (α ⇒ β) ∧ (β ⇒ α)
α ⇒ β ≡ ¬α ∨ β
1 Elimine implicações
2 Mova a negação “para dentro”
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 10 / 34
Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal
α ⇔ β ≡ (α ⇒ β) ∧ (β ⇒ α)
α ⇒ β ≡ ¬α ∨ β
1 Elimine implicações
2 Mova a negação “para dentro”
Leis de de Morgan
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 10 / 34
Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal
α ⇔ β ≡ (α ⇒ β) ∧ (β ⇒ α)
α ⇒ β ≡ ¬α ∨ β
¬(α ∨ β) ≡ ¬α ∧ ¬β
¬(α ∧ β) ≡ ¬α ∨ ¬β
1 Elimine implicações
2 Mova a negação “para dentro”
Leis de de Morgan
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 10 / 34
Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal
α ⇔ β ≡ (α ⇒ β) ∧ (β ⇒ α)
α ⇒ β ≡ ¬α ∨ β
¬(α ∨ β) ≡ ¬α ∧ ¬β
¬(α ∧ β) ≡ ¬α ∨ ¬β
1 Elimine implicações
2 Mova a negação “para dentro”
Leis de de Morgan
Eliminação de negações duplas
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 10 / 34
Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal
α ⇔ β ≡ (α ⇒ β) ∧ (β ⇒ α)
α ⇒ β ≡ ¬α ∨ β
¬(α ∨ β) ≡ ¬α ∧ ¬β
¬(α ∧ β) ≡ ¬α ∨ ¬β
¬¬α ≡ α
1 Elimine implicações
2 Mova a negação “para dentro”
Leis de de Morgan
Eliminação de negações duplas
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 10 / 34
Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal
α ⇔ β ≡ (α ⇒ β) ∧ (β ⇒ α)
α ⇒ β ≡ ¬α ∨ β
¬(α ∨ β) ≡ ¬α ∧ ¬β
¬(α ∧ β) ≡ ¬α ∨ ¬β
¬¬α ≡ α
1 Elimine implicações
2 Mova a negação “para dentro”
Leis de de Morgan
Eliminação de negações duplas
Extensões a de Morgan
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 10 / 34
Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal
α ⇔ β ≡ (α ⇒ β) ∧ (β ⇒ α)
α ⇒ β ≡ ¬α ∨ β
¬(α ∨ β) ≡ ¬α ∧ ¬β
¬(α ∧ β) ≡ ¬α ∨ ¬β
¬¬α ≡ α
¬∀x α ≡ ∃x ¬α
¬∃x α ≡ ∀x ¬α
1 Elimine implicações
2 Mova a negação “para dentro”
Leis de de Morgan
Eliminação de negações duplas
Extensões a de Morgan
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 10 / 34
Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal
α ⇔ β ≡ (α ⇒ β) ∧ (β ⇒ α)
α ⇒ β ≡ ¬α ∨ β
¬(α ∨ β) ≡ ¬α ∧ ¬β
¬(α ∧ β) ≡ ¬α ∨ ¬β
¬¬α ≡ α
¬∀x α ≡ ∃x ¬α
¬∃x α ≡ ∀x ¬α
1 Elimine implicações
2 Mova a negação “para dentro”
Leis de de Morgan
Eliminação de negações duplas
Extensões a de Morgan
3 Padronize as variáveis
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 10 / 34
Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal
α ⇔ β ≡ (α ⇒ β) ∧ (β ⇒ α)
α ⇒ β ≡ ¬α ∨ β
¬(α ∨ β) ≡ ¬α ∧ ¬β
¬(α ∧ β) ≡ ¬α ∨ ¬β
¬¬α ≡ α
¬∀x α ≡ ∃x ¬α
¬∃x α ≡ ∀x ¬α
1 Elimine implicações
2 Mova a negação “para dentro”
Leis de de Morgan
Eliminação de negações duplas
Extensões a de Morgan
3 Padronize as variáveis
Cada quantificador deve agir sobre uma variável diferente
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 10 / 34
Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal
α ⇔ β ≡ (α ⇒ β) ∧ (β ⇒ α)
α ⇒ β ≡ ¬α ∨ β
¬(α ∨ β) ≡ ¬α ∧ ¬β
¬(α ∧ β) ≡ ¬α ∨ ¬β
¬¬α ≡ α
¬∀x α ≡ ∃x ¬α
¬∃x α ≡ ∀x ¬α
1 Elimine implicações
2 Mova a negação “para dentro”
Leis de de Morgan
Eliminação de negações duplas
Extensões a de Morgan
3 Padronize as variáveis
Cada quantificador deve agir sobre uma variável diferente
Se a sentença usar um mesmo nome de variável duas vezes
em escopos diferentes, mude o nome de uma delas
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 10 / 34
Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal
4 Skolemize
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 11 / 34
Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal
4 Skolemize
Skolemização é o processo de remoção de quantificadores
existenciais (∃) por eliminação
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 11 / 34
Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal
4 Skolemize
Skolemização é o processo de remoção de quantificadores
existenciais (∃) por eliminação
Deve-se a Thoralf Skolem
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 11 / 34
Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal
4 Skolemize
Skolemização é o processo de remoção de quantificadores
existenciais (∃) por eliminação
Deve-se a Thoralf Skolem
5 Remova quantificadores universais
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 11 / 34
Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal
4 Skolemize
Skolemização é o processo de remoção de quantificadores
existenciais (∃) por eliminação
Deve-se a Thoralf Skolem
5 Remova quantificadores universais
Já removemos ∃ e não temos mais o problema do escopo →
as variáveis restantes estão quantificadas universalmente
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 11 / 34
Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal
4 Skolemize
Skolemização é o processo de remoção de quantificadores
existenciais (∃) por eliminação
Deve-se a Thoralf Skolem
5 Remova quantificadores universais
Já removemos ∃ e não temos mais o problema do escopo →
as variáveis restantes estão quantificadas universalmente
Podemos então mover os quantificadores para a esquerda e
sumir com eles (FNC já assume ∀ nas variáveis)
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 11 / 34
Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal
4 Skolemize
Skolemização é o processo de remoção de quantificadores
existenciais (∃) por eliminação
Deve-se a Thoralf Skolem
5 Remova quantificadores universais
Já removemos ∃ e não temos mais o problema do escopo →
as variáveis restantes estão quantificadas universalmente
Podemos então mover os quantificadores para a esquerda e
sumir com eles (FNC já assume ∀ nas variáveis)
6 Distribua ∨ sobre ∧
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 11 / 34
Lógica de Primeira Ordem – Resolução
Skolemização
No caso do padrão simples “∃x P(x)”, basta
substituir a variável x por uma constante inédita
(não existente na base de conhecimento)
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 12 / 34
Lógica de Primeira Ordem – Resolução
Skolemização
No caso do padrão simples “∃x P(x)”, basta
substituir a variável x por uma constante inédita
(não existente na base de conhecimento)
Ex:
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 12 / 34
Lógica de Primeira Ordem – Resolução
Skolemização
No caso do padrão simples “∃x P(x)”, basta
substituir a variável x por uma constante inédita
(não existente na base de conhecimento)
Ex:
∃x Unicórnio(x)
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 12 / 34
Lógica de Primeira Ordem – Resolução
Skolemização
No caso do padrão simples “∃x P(x)”, basta
substituir a variável x por uma constante inédita
(não existente na base de conhecimento)
Ex:
∃x Unicórnio(x)
Se existe um unicórnio, vamos chamá-lo de Fred
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 12 / 34
Lógica de Primeira Ordem – Resolução
Skolemização
No caso do padrão simples “∃x P(x)”, basta
substituir a variável x por uma constante inédita
(não existente na base de conhecimento)
Ex:
∃x Unicórnio(x)
Se existe um unicórnio, vamos chamá-lo de Fred
Funciona se não houver nenhum outro objeto chamado
Fred, pois nesse caso afirmarı́amos que ele é um unicórnio
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 12 / 34
Lógica de Primeira Ordem – Resolução
Skolemização
No caso do padrão simples “∃x P(x)”, basta
substituir a variável x por uma constante inédita
(não existente na base de conhecimento)
Ex:
∃x Unicórnio(x)
Se existe um unicórnio, vamos chamá-lo de Fred
Funciona se não houver nenhum outro objeto chamado
Fred, pois nesse caso afirmarı́amos que ele é um unicórnio
Podemos então trocar ∃x Unicórnio(x) por Unicórnio(Fred)
livremente
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 12 / 34
Lógica de Primeira Ordem – Resolução
Skolemização
Então
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 13 / 34
Lógica de Primeira Ordem – Resolução
Skolemização
Então
∃x P(x) → P(C1)
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 13 / 34
Lógica de Primeira Ordem – Resolução
Skolemização
Então
∃x P(x) → P(C1)
∃x, y R(x, y) → R(C1, C2) (2 variáveis)
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 13 / 34
Lógica de Primeira Ordem – Resolução
Skolemização
Então
∃x P(x) → P(C1)
∃x, y R(x, y) → R(C1, C2) (2 variáveis)
∃x P(x) ∧ Q(x) → P(C1) ∧ Q(C1)
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 13 / 34
Lógica de Primeira Ordem – Resolução
Skolemização
Então
∃x P(x) → P(C1)
∃x, y R(x, y) → R(C1, C2) (2 variáveis)
∃x P(x) ∧ Q(x) → P(C1) ∧ Q(C1)
Cada ocorrência da variável é mapeada ao mesmo nome
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 13 / 34
Lógica de Primeira Ordem – Resolução
Skolemização
Então
∃x P(x) → P(C1)
∃x, y R(x, y) → R(C1, C2) (2 variáveis)
∃x P(x) ∧ Q(x) → P(C1) ∧ Q(C1)
Cada ocorrência da variável é mapeada ao mesmo nome
∃x P(x) ∧ ∃x Q(x) → P(C1) ∧ Q(C2)
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 13 / 34
Lógica de Primeira Ordem – Resolução
Skolemização
Então
∃x P(x) → P(C1)
∃x, y R(x, y) → R(C1, C2) (2 variáveis)
∃x P(x) ∧ Q(x) → P(C1) ∧ Q(C1)
Cada ocorrência da variável é mapeada ao mesmo nome
∃x P(x) ∧ ∃x Q(x) → P(C1) ∧ Q(C2)
Diferentes quantificadores exigem nomes diferentes
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 13 / 34
Lógica de Primeira Ordem – Resolução
Skolemização
Então
∃x P(x) → P(C1)
∃x, y R(x, y) → R(C1, C2) (2 variáveis)
∃x P(x) ∧ Q(x) → P(C1) ∧ Q(C1)
Cada ocorrência da variável é mapeada ao mesmo nome
∃x P(x) ∧ ∃x Q(x) → P(C1) ∧ Q(C2)
Diferentes quantificadores exigem nomes diferentes
Note que isso fica claro após a padronização:
∃x P(x) ∧ ∃x Q(x) ≡ ∃x P(x) ∧ ∃y Q(y) → P(C1) ∧ Q(C2)
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 13 / 34
Lógica de Primeira Ordem – Resolução
Skolemização
∃y∀x Ama(x, y)
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 14 / 34
Lógica de Primeira Ordem – Resolução
Skolemização
∃y∀x Ama(x, y)
(Existe um y que é amado por todos)
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 14 / 34
Lógica de Primeira Ordem – Resolução
Skolemização
∃y∀x Ama(x, y)
(Existe um y que é amado por todos)
Skolemização padrão: ∃y∀x Ama(x, y) → ∀x Ama(x, C1)
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 14 / 34
Lógica de Primeira Ordem – Resolução
Skolemização
∃y∀x Ama(x, y)
(Existe um y que é amado por todos)
Skolemização padrão: ∃y∀x Ama(x, y) → ∀x Ama(x, C1)
E quanto a “∀x∃y Ama(x, y)”?
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 14 / 34
Lógica de Primeira Ordem – Resolução
Skolemização
∃y∀x Ama(x, y)
(Existe um y que é amado por todos)
Skolemização padrão: ∃y∀x Ama(x, y) → ∀x Ama(x, C1)
E quanto a “∀x∃y Ama(x, y)”?
(Todo mundo ama alguém)
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 14 / 34
Lógica de Primeira Ordem – Resolução
Skolemização
∃y∀x Ama(x, y)
(Existe um y que é amado por todos)
Skolemização padrão: ∃y∀x Ama(x, y) → ∀x Ama(x, C1)
E quanto a “∀x∃y Ama(x, y)”?
(Todo mundo ama alguém)
“∀x Ama(x, C1)”?
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 14 / 34
Lógica de Primeira Ordem – Resolução
Skolemização
∃y∀x Ama(x, y)
(Existe um y que é amado por todos)
Skolemização padrão: ∃y∀x Ama(x, y) → ∀x Ama(x, C1)
E quanto a “∀x∃y Ama(x, y)”?
(Todo mundo ama alguém)
“∀x Ama(x, C1)”?
Certamente não é “Todo mundo ama C1” que pretendı́amos
dizer...
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 14 / 34
Lógica de Primeira Ordem – Resolução
Skolemização
∃y∀x Ama(x, y)
(Existe um y que é amado por todos)
Skolemização padrão: ∃y∀x Ama(x, y) → ∀x Ama(x, C1)
E quanto a “∀x∃y Ama(x, y)”?
(Todo mundo ama alguém)
“∀x Ama(x, C1)”?
Certamente não é “Todo mundo ama C1” que pretendı́amos
dizer...
Simples substituição não funciona
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 14 / 34
Lógica de Primeira Ordem – Resolução
Skolemização
O que aconteceu?
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 15 / 34
Lógica de Primeira Ordem – Resolução
Skolemização
O que aconteceu?
Embora possamos sim dizer que “∀x∃y Ama(x, y)” se refere
a um alguém especı́fico, ele o faz para cada valor de x, ou
seja, potencialmente um alguém diferente para cada x
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 15 / 34
Lógica de Primeira Ordem – Resolução
Skolemização
O que aconteceu?
Embora possamos sim dizer que “∀x∃y Ama(x, y)” se refere
a um alguém especı́fico, ele o faz para cada valor de x, ou
seja, potencialmente um alguém diferente para cada x
“∀x Ama(x, C1)” força que todo x ame um único sujeito
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 15 / 34
Lógica de Primeira Ordem – Resolução
Skolemização
O que aconteceu?
Embora possamos sim dizer que “∀x∃y Ama(x, y)” se refere
a um alguém especı́fico, ele o faz para cada valor de x, ou
seja, potencialmente um alguém diferente para cada x
“∀x Ama(x, C1)” força que todo x ame um único sujeito
Que fazer então?
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 15 / 34
Lógica de Primeira Ordem – Resolução
Skolemização
O que aconteceu?
Embora possamos sim dizer que “∀x∃y Ama(x, y)” se refere
a um alguém especı́fico, ele o faz para cada valor de x, ou
seja, potencialmente um alguém diferente para cada x
“∀x Ama(x, C1)” força que todo x ame um único sujeito
Que fazer então?
Fazer com que a constante utilizada dependa de x
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 15 / 34
Lógica de Primeira Ordem – Resolução
Skolemização
O que aconteceu?
Embora possamos sim dizer que “∀x∃y Ama(x, y)” se refere
a um alguém especı́fico, ele o faz para cada valor de x, ou
seja, potencialmente um alguém diferente para cada x
“∀x Ama(x, C1)” força que todo x ame um único sujeito
Que fazer então?
Fazer com que a constante utilizada dependa de x
∀x∃y Ama(x, y) → ∀x Ama(x, AmadoPor(x))
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 15 / 34
Lógica de Primeira Ordem – Resolução
Skolemização
O que aconteceu?
Embora possamos sim dizer que “∀x∃y Ama(x, y)” se refere
a um alguém especı́fico, ele o faz para cada valor de x, ou
seja, potencialmente um alguém diferente para cada x
“∀x Ama(x, C1)” força que todo x ame um único sujeito
Que fazer então?
Fazer com que a constante utilizada dependa de x
∀x∃y Ama(x, y) → ∀x Ama(x, AmadoPor(x))
Em vez de substituirmos por uma constante, substituı́mos
por uma Função de Skolem
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 15 / 34
Lógica de Primeira Ordem – Resolução
Skolemização
Função de Skolem – Regra geral:
Os argumentos da função de Skolem são todas as variáveis
universalmente quantificadas em cujo escopo o quantificador
existencial aparecer
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 16 / 34
Lógica de Primeira Ordem – Resolução
Skolemização
Função de Skolem – Regra geral:
Os argumentos da função de Skolem são todas as variáveis
universalmente quantificadas em cujo escopo o quantificador
existencial aparecer
Ex:
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 16 / 34
Lógica de Primeira Ordem – Resolução
Skolemização
Função de Skolem – Regra geral:
Os argumentos da função de Skolem são todas as variáveis
universalmente quantificadas em cujo escopo o quantificador
existencial aparecer
Ex:
∀x∃y∀z∃w P(x, y, z) ∧ R(y, z, w)
→ ∀x∀z P(x, F(x), z) ∧ R(F(x), z, G(x, z))
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 16 / 34
Lógica de Primeira Ordem – Resolução
Skolemização
y = F(x) porque y está
apenas no escopo de ∀x
Função de Skolem – Regra geral:
Os argumentos da função de Skolem são todas as variáveis
universalmente quantificadas em cujo escopo o quantificador
existencial aparecer
Ex:
∀x∃y∀z∃w P(x, y, z) ∧ R(y, z, w)
→ ∀x∀z P(x, F(x), z) ∧ R(F(x), z, G(x, z))
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 16 / 34
Lógica de Primeira Ordem – Resolução
Skolemização
Já w = G(x, z) porque
há 2 quantificadores
universais (∀x e ∀z)
em cujo escopo está w
Função de Skolem – Regra geral:
Os argumentos da função de Skolem são todas as variáveis
universalmente quantificadas em cujo escopo o quantificador
existencial aparecer
Ex:
∀x∃y∀z∃w P(x, y, z) ∧ R(y, z, w)
→ ∀x∀z P(x, F(x), z) ∧ R(F(x), z, G(x, z))
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 16 / 34
Lógica de Primeira Ordem – Resolução
Skolemização
Já w = G(x, z) porque
há 2 quantificadores
universais (∀x e ∀z)
em cujo escopo está w
Função de Skolem – Regra geral:
Os argumentos da função de Skolem são todas as variáveis
universalmente quantificadas em cujo escopo o quantificador
existencial aparecer
Ex:
∀x∃y∀z∃w P(x, y, z) ∧ R(y, z, w)
→ ∀x∀z P(x, F(x), z) ∧ R(F(x), z, G(x, z))
A sentença Skolemizada é satisfatı́vel exatamente
quando a sentença original for satisfatı́vel
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 16 / 34
Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal: Exemplo
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 17 / 34
Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal: Exemplo
Todo mundo que ama todos os animais é amado
por alguém
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 17 / 34
Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal: Exemplo
Todo mundo que ama todos os animais é amado
por alguém
∀x [∀y Animal(y) ⇒ Ama(x, y)] ⇒ [∃y Ama(y, x)]
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 17 / 34
Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal: Exemplo
Todo mundo que ama todos os animais é amado
por alguém
∀x [∀y Animal(y) ⇒ Ama(x, y)] ⇒ [∃y Ama(y, x)]
Passos:
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 17 / 34
Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal: Exemplo
Todo mundo que ama todos os animais é amado
por alguém
∀x [∀y Animal(y) ⇒ Ama(x, y)] ⇒ [∃y Ama(y, x)]
Passos:
1 Elimine implicações
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 17 / 34
Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal: Exemplo
Todo mundo que ama todos os animais é amado
por alguém
∀x [∀y Animal(y) ⇒ Ama(x, y)] ⇒ [∃y Ama(y, x)]
Passos:
1 Elimine implicações
∀x [∀y ¬Animal(y) ∨ Ama(x, y)] ⇒ [∃y Ama(y, x)]
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 17 / 34
Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal: Exemplo
Todo mundo que ama todos os animais é amado
por alguém
∀x [∀y Animal(y) ⇒ Ama(x, y)] ⇒ [∃y Ama(y, x)]
Passos:
1 Elimine implicações
∀x [∀y ¬Animal(y) ∨ Ama(x, y)] ⇒ [∃y Ama(y, x)]
∀x [¬∀y ¬Animal(y) ∨ Ama(x, y)] ∨ [∃y Ama(y, x)]
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 17 / 34
Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal: Exemplo
Todo mundo que ama todos os animais é amado
por alguém
∀x [∀y Animal(y) ⇒ Ama(x, y)] ⇒ [∃y Ama(y, x)]
Passos:
1 Elimine implicações
∀x [∀y ¬Animal(y) ∨ Ama(x, y)] ⇒ [∃y Ama(y, x)]
∀x [¬∀y ¬Animal(y) ∨ Ama(x, y)] ∨ [∃y Ama(y, x)]
2 Mova a negação “para dentro”
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 17 / 34
Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal: Exemplo
Todo mundo que ama todos os animais é amado
por alguém
∀x [∀y Animal(y) ⇒ Ama(x, y)] ⇒ [∃y Ama(y, x)]
Passos:
1 Elimine implicações
∀x [∀y ¬Animal(y) ∨ Ama(x, y)] ⇒ [∃y Ama(y, x)]
∀x [¬∀y ¬Animal(y) ∨ Ama(x, y)] ∨ [∃y Ama(y, x)]
2 Mova a negação “para dentro”
∀x [∃y ¬(¬Animal(y) ∨ Ama(x, y))] ∨ [∃y Ama(y, x)]
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 17 / 34
Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal: Exemplo
Todo mundo que ama todos os animais é amado
por alguém
∀x [∀y Animal(y) ⇒ Ama(x, y)] ⇒ [∃y Ama(y, x)]
Passos:
1 Elimine implicações
∀x [∀y ¬Animal(y) ∨ Ama(x, y)] ⇒ [∃y Ama(y, x)]
∀x [¬∀y ¬Animal(y) ∨ Ama(x, y)] ∨ [∃y Ama(y, x)]
2 Mova a negação “para dentro”
∀x [∃y ¬(¬Animal(y) ∨ Ama(x, y))] ∨ [∃y Ama(y, x)]
∀x [∃y ¬¬Animal(y) ∧ ¬Ama(x, y)] ∨ [∃y Ama(y, x)]
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 17 / 34
Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal: Exemplo
Todo mundo que ama todos os animais é amado
por alguém
∀x [∀y Animal(y) ⇒ Ama(x, y)] ⇒ [∃y Ama(y, x)]
Passos:
1 Elimine implicações
∀x [∀y ¬Animal(y) ∨ Ama(x, y)] ⇒ [∃y Ama(y, x)]
∀x [¬∀y ¬Animal(y) ∨ Ama(x, y)] ∨ [∃y Ama(y, x)]
2 Mova a negação “para dentro”
∀x [∃y ¬(¬Animal(y) ∨ Ama(x, y))] ∨ [∃y Ama(y, x)]
∀x [∃y ¬¬Animal(y) ∧ ¬Ama(x, y)] ∨ [∃y Ama(y, x)]
∀x [∃y Animal(y) ∧ ¬Ama(x, y)] ∨ [∃y Ama(y, x)]
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 17 / 34
Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal: Exemplo
Passos (cont.):
∀x [∃y Animal(y) ∧ ¬Ama(x, y)] ∨ [∃y Ama(y, x)]
3 Padronize as variáveis
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 18 / 34
Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal: Exemplo
Passos (cont.):
∀x [∃y Animal(y) ∧ ¬Ama(x, y)] ∨ [∃y Ama(y, x)]
3 Padronize as variáveis
∀x [∃y Animal(y) ∧ ¬Ama(x, y)] ∨ [∃z Ama(z, x)]
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 18 / 34
Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal: Exemplo
Passos (cont.):
∀x [∃y Animal(y) ∧ ¬Ama(x, y)] ∨ [∃y Ama(y, x)]
3 Padronize as variáveis
∀x [∃y Animal(y) ∧ ¬Ama(x, y)] ∨ [∃z Ama(z, x)]
4 Skolemize
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 18 / 34
Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal: Exemplo
Passos (cont.):
∀x [∃y Animal(y) ∧ ¬Ama(x, y)] ∨ [∃y Ama(y, x)]
3 Padronize as variáveis
∀x [∃y Animal(y) ∧ ¬Ama(x, y)] ∨ [∃z Ama(z, x)]
4 Skolemize
∀x [Animal(F(x)) ∧ ¬Ama(x, F(x))] ∨ [Ama(G(x), x)]
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 18 / 34
Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal: Exemplo
Passos (cont.):
∀x [∃y Animal(y) ∧ ¬Ama(x, y)] ∨ [∃y Ama(y, x)]
3 Padronize as variáveis
∀x [∃y Animal(y) ∧ ¬Ama(x, y)] ∨ [∃z Ama(z, x)]
4 Skolemize
∀x [Animal(F(x)) ∧ ¬Ama(x, F(x))] ∨ [Ama(G(x), x)]
F(x): o animal potencialmente não amado por x
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 18 / 34
Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal: Exemplo
Passos (cont.):
∀x [∃y Animal(y) ∧ ¬Ama(x, y)] ∨ [∃y Ama(y, x)]
3 Padronize as variáveis
∀x [∃y Animal(y) ∧ ¬Ama(x, y)] ∨ [∃z Ama(z, x)]
4 Skolemize
∀x [Animal(F(x)) ∧ ¬Ama(x, F(x))] ∨ [Ama(G(x), x)]
F(x): o animal potencialmente não amado por x
G(x): alguém que poderia amar x
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 18 / 34
Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal: Exemplo
Passos (cont.):
∀x [Animal(F(x)) ∧ ¬Ama(x, F(x))] ∨ [Ama(G(x), x)]
5 Remova quantificadores universais
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 19 / 34
Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal: Exemplo
Passos (cont.):
∀x [Animal(F(x)) ∧ ¬Ama(x, F(x))] ∨ [Ama(G(x), x)]
5 Remova quantificadores universais
[Animal(F(x)) ∧ ¬Ama(x, F(x))] ∨ [Ama(G(x), x)]
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 19 / 34
Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal: Exemplo
Passos (cont.):
∀x [Animal(F(x)) ∧ ¬Ama(x, F(x))] ∨ [Ama(G(x), x)]
5 Remova quantificadores universais
[Animal(F(x)) ∧ ¬Ama(x, F(x))] ∨ [Ama(G(x), x)]
De fato, não foram removidos, apenas tornados implı́citos
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 19 / 34
Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal: Exemplo
Passos (cont.):
∀x [Animal(F(x)) ∧ ¬Ama(x, F(x))] ∨ [Ama(G(x), x)]
5 Remova quantificadores universais
[Animal(F(x)) ∧ ¬Ama(x, F(x))] ∨ [Ama(G(x), x)]
De fato, não foram removidos, apenas tornados implı́citos
6 Distribua ∨ sobre ∧
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 19 / 34
Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal: Exemplo
Passos (cont.):
∀x [Animal(F(x)) ∧ ¬Ama(x, F(x))] ∨ [Ama(G(x), x)]
5 Remova quantificadores universais
[Animal(F(x)) ∧ ¬Ama(x, F(x))] ∨ [Ama(G(x), x)]
De fato, não foram removidos, apenas tornados implı́citos
6 Distribua ∨ sobre ∧
[Animal(F(x)) ∨ Ama(G(x), x)] ∧ [¬Ama(x, F(x)) ∨ Ama(G(x), x)]
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 19 / 34
Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal: Exemplo
cláusula cláusula
Passos (cont.):
∀x [Animal(F(x)) ∧ ¬Ama(x, F(x))] ∨ [Ama(G(x), x)]
5 Remova quantificadores universais
[Animal(F(x)) ∧ ¬Ama(x, F(x))] ∨ [Ama(G(x), x)]
De fato, não foram removidos, apenas tornados implı́citos
6 Distribua ∨ sobre ∧
[Animal(F(x)) ∨ Ama(G(x), x)] ∧ [¬Ama(x, F(x)) ∨ Ama(G(x), x)]
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 19 / 34
Lógica de Primeira Ordem – Resolução
Convertendo para Forma Clausal: Exemplo
cláusula cláusula
Passos (cont.):
∀x [Animal(F(x)) ∧ ¬Ama(x, F(x))] ∨ [Ama(G(x), x)]
5 Remova quantificadores universais
[Animal(F(x)) ∧ ¬Ama(x, F(x))] ∨ [Ama(G(x), x)]
De fato, não foram removidos, apenas tornados implı́citos
6 Distribua ∨ sobre ∧
[Animal(F(x)) ∨ Ama(G(x), x)] ∧ [¬Ama(x, F(x)) ∨ Ama(G(x), x)]
(Conjunção de disjunções de literais)
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 19 / 34
Lógica de Primeira Ordem – Resolução
Passos
∀x∃y P(x) ⇒ R(x, y)
¬P(x) ∨ R(x, F(x))
1 Converter de LPO para forma clausal
Generalização da Forma Normal
Conjuntiva para LPO
Uma conjunção de disjunções
Sem quantificadores
2 Determinar que variáveis substituir por quais quando
da resolução
Processo chamado Unificação
3 Executar a resolução
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 20 / 34
Lógica de Primeira Ordem – Resolução
Passos
∀x∃y P(x) ⇒ R(x, y)
¬P(x) ∨ R(x, F(x))
1 Converter de LPO para forma clausal 4
Generalização da Forma Normal
Conjuntiva para LPO
Uma conjunção de disjunções
Sem quantificadores
2 Determinar que variáveis substituir por quais quando
da resolução
Processo chamado Unificação
3 Executar a resolução
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 20 / 34
Lógica de Primeira Ordem – Resolução
Passos
∀x∃y P(x) ⇒ R(x, y)
¬P(x) ∨ R(x, F(x))
1 Converter de LPO para forma clausal 4
Generalização da Forma Normal
Conjuntiva para LPO
Uma conjunção de disjunções
Sem quantificadores
2 Determinar que variáveis substituir por quais quando
da resolução +
Processo chamado Unificação
3 Executar a resolução
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 20 / 34
Lógica de Primeira Ordem – Resolução
Unificação: Substituição
Para entender unificação, precisamos antes do
concento de substituição
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 21 / 34
Lógica de Primeira Ordem – Resolução
Unificação: Substituição
Para entender unificação, precisamos antes do
concento de substituição
Considere a sentença atômica P(v1, v2, . . . , vn)
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 21 / 34
Lógica de Primeira Ordem – Resolução
Unificação: Substituição
Para entender unificação, precisamos antes do
concento de substituição
Considere a sentença atômica P(v1, v2, . . . , vn)
Uma substituição é um mapeamento finito de variáveis a
termos
{v1/t1, v2/t2, . . . , vn/tn}
em que
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 21 / 34
Lógica de Primeira Ordem – Resolução
Unificação: Substituição
Para entender unificação, precisamos antes do
concento de substituição
Considere a sentença atômica P(v1, v2, . . . , vn)
Uma substituição é um mapeamento finito de variáveis a
termos
{v1/t1, v2/t2, . . . , vn/tn}
em que
Toda e qualquer variável vi é substituı́da pelo termo ti (que pode ser
uma constante, outra variável, ou função)
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 21 / 34
Lógica de Primeira Ordem – Resolução
Unificação: Substituição
Para entender unificação, precisamos antes do
concento de substituição
Considere a sentença atômica P(v1, v2, . . . , vn)
Uma substituição é um mapeamento finito de variáveis a
termos
{v1/t1, v2/t2, . . . , vn/tn}
em que
Toda e qualquer variável vi é substituı́da pelo termo ti (que pode ser
uma constante, outra variável, ou função)
Não pode haver mais de uma substituição para cada variável
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 21 / 34
Lógica de Primeira Ordem – Resolução
Unificação: Substituição
Ex: P(x, f (y), B)
Substituição Resultado Obs
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 22 / 34
Lógica de Primeira Ordem – Resolução
Unificação: Substituição
Ex: P(x, f (y), B)
Substituição Resultado Obs
{x/z, y/w}
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 22 / 34
Lógica de Primeira Ordem – Resolução
Unificação: Substituição
Ex: P(x, f (y), B)
Substituição Resultado Obs
{x/z, y/w} P(z, f (w), B)
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 22 / 34
Lógica de Primeira Ordem – Resolução
Unificação: Substituição
Ex: P(x, f (y), B)
Substituição Resultado Obs
{x/z, y/w} P(z, f (w), B) Variação alfabética
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 22 / 34
Lógica de Primeira Ordem – Resolução
Unificação: Substituição
Ex: P(x, f (y), B)
Substituição Resultado Obs
{x/z, y/w} P(z, f (w), B) Variação alfabética
{y/A}
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 22 / 34
Lógica de Primeira Ordem – Resolução
Unificação: Substituição
Ex: P(x, f (y), B)
Substituição Resultado Obs
{x/z, y/w} P(z, f (w), B) Variação alfabética
{y/A} P(x, f (A), B)
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 22 / 34
Lógica de Primeira Ordem – Resolução
Unificação: Substituição
Ex: P(x, f (y), B)
Substituição Resultado Obs
{x/z, y/w} P(z, f (w), B) Variação alfabética
{y/A} P(x, f (A), B)
{x/g(z), y/A}
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 22 / 34
Lógica de Primeira Ordem – Resolução
Unificação: Substituição
Ex: P(x, f (y), B)
Substituição Resultado Obs
{x/z, y/w} P(z, f (w), B) Variação alfabética
{y/A} P(x, f (A), B)
{x/g(z), y/A} P(g(z), f (A), B)
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 22 / 34
Lógica de Primeira Ordem – Resolução
Unificação: Substituição
Ex: P(x, f (y), B)
Substituição Resultado Obs
{x/z, y/w} P(z, f (w), B) Variação alfabética
{y/A} P(x, f (A), B)
{x/g(z), y/A} P(g(z), f (A), B)
{x/C, y/A}
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 22 / 34
Lógica de Primeira Ordem – Resolução
Unificação: Substituição
Ex: P(x, f (y), B)
Substituição Resultado Obs
{x/z, y/w} P(z, f (w), B) Variação alfabética
{y/A} P(x, f (A), B)
{x/g(z), y/A} P(g(z), f (A), B)
{x/C, y/A} P(C, f (A), B)
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 22 / 34
Lógica de Primeira Ordem – Resolução
Unificação: Substituição
Ex: P(x, f (y), B)
Substituição Resultado Obs
{x/z, y/w} P(z, f (w), B) Variação alfabética
{y/A} P(x, f (A), B)
{x/g(z), y/A} P(g(z), f (A), B)
{x/C, y/A} P(C, f (A), B) Sentença constante
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 22 / 34
Lógica de Primeira Ordem – Resolução
Unificação: Substituição
Ex: P(x, f (y), B)
Substituição Resultado Obs
{x/z, y/w} P(z, f (w), B) Variação alfabética
{y/A} P(x, f (A), B)
{x/g(z), y/A} P(g(z), f (A), B)
{x/C, y/A} P(C, f (A), B) Sentença constante
{y/A, x/y}
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 22 / 34
Lógica de Primeira Ordem – Resolução
Unificação: Substituição
Ex: P(x, f (y), B)
Substituição Resultado Obs
{x/z, y/w} P(z, f (w), B) Variação alfabética
{y/A} P(x, f (A), B)
{x/g(z), y/A} P(g(z), f (A), B)
{x/C, y/A} P(C, f (A), B) Sentença constante
{y/A, x/y} P(A, f (A), B)
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 22 / 34
Lógica de Primeira Ordem – Resolução
Unificação: Substituição
Ex: P(x, f (y), B)
Substituição Resultado Obs
{x/z, y/w} P(z, f (w), B) Variação alfabética
{y/A} P(x, f (A), B)
{x/g(z), y/A} P(g(z), f (A), B)
{x/C, y/A} P(C, f (A), B) Sentença constante
{y/A, x/y} P(A, f (A), B) Sentença constante
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 22 / 34
Lógica de Primeira Ordem – Resolução
Unificação: Substituição
Ex: P(x, f (y), B)
Substituição Resultado Obs
{x/z, y/w} P(z, f (w), B) Variação alfabética
{y/A} P(x, f (A), B)
{x/g(z), y/A} P(g(z), f (A), B)
{x/C, y/A} P(C, f (A), B) Sentença constante
{y/A, x/y} P(A, f (A), B) Sentença constante
Variação alfabética: Quando apenas substituı́mos por
variáveis diferentes
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 22 / 34
Lógica de Primeira Ordem – Resolução
Unificação: Substituição
Ex: P(x, f (y), B)
Substituição Resultado Obs
{x/z, y/w} P(z, f (w), B) Variação alfabética
{y/A} P(x, f (A), B)
{x/g(z), y/A} P(g(z), f (A), B)
{x/C, y/A} P(C, f (A), B) Sentença constante
{y/A, x/y} P(A, f (A), B) Sentença constante
Variação alfabética: Quando apenas substituı́mos por
variáveis diferentes
Sentença constante (Ground instance): Sentença atômica
sem variáveis
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 22 / 34
Lógica de Primeira Ordem – Resolução
Unificação: Substituição
Sentenças com substituições são mais especı́ficas
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 23 / 34
Lógica de Primeira Ordem – Resolução
Unificação: Substituição
Sentenças com substituições são mais especı́ficas
Possuem menos interpretações sob as quais são verdadeiras
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 23 / 34
Lógica de Primeira Ordem – Resolução
Unificação: Substituição
Sentenças com substituições são mais especı́ficas
Possuem menos interpretações sob as quais são verdadeiras
Ex: P(g(z), f (A), B) é mais especı́fica que P(x, f (y), B)
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 23 / 34
Lógica de Primeira Ordem – Resolução
Unificação: Substituição
Sentenças com substituições são mais especı́ficas
Possuem menos interpretações sob as quais são verdadeiras
Ex: P(g(z), f (A), B) é mais especı́fica que P(x, f (y), B)
Não é permitido substituir constantes ou termos
compostos (funções etc)
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 23 / 34
Lógica de Primeira Ordem – Resolução
Unificação: Substituição
Sentenças com substituições são mais especı́ficas
Possuem menos interpretações sob as quais são verdadeiras
Ex: P(g(z), f (A), B) é mais especı́fica que P(x, f (y), B)
Não é permitido substituir constantes ou termos
compostos (funções etc)
Podemos apenas substituir as variáveis, mesmo que estas
estejam dentro de um termo composto (como o y em f (y))
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 23 / 34
Lógica de Primeira Ordem – Resolução
Unificação: Substituição
Não confunda com interpretação semântica:
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 24 / 34
Lógica de Primeira Ordem – Resolução
Unificação: Substituição
Não confunda com interpretação semântica:
A substituição troca uma variável por um termo (sintaxe) de
modo a produzir uma nova sentença
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 24 / 34
Lógica de Primeira Ordem – Resolução
Unificação: Substituição
Não confunda com interpretação semântica:
A substituição troca uma variável por um termo (sintaxe) de
modo a produzir uma nova sentença
A interpretação mapeia a variável a um objeto no domı́nio
(semântica)
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 24 / 34
Lógica de Primeira Ordem – Resolução
Unificação
Trata-se de encontrar uma substituição que faça
com que duas expressões se igualem
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 25 / 34
Lógica de Primeira Ordem – Resolução
Unificação
Trata-se de encontrar uma substituição que faça
com que duas expressões se igualem
Estamos interessados em modos de fazer expressões se
equivalerem, em toda interpretação de seus sı́mbolos
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 25 / 34
Lógica de Primeira Ordem – Resolução
Unificação
Trata-se de encontrar uma substituição que faça
com que duas expressões se igualem
Estamos interessados em modos de fazer expressões se
equivalerem, em toda interpretação de seus sı́mbolos
Expressões unificáveis:
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 25 / 34
Lógica de Primeira Ordem – Resolução
Unificação
Trata-se de encontrar uma substituição que faça
com que duas expressões se igualem
Estamos interessados em modos de fazer expressões se
equivalerem, em toda interpretação de seus sı́mbolos
Expressões unificáveis:
ω1 e ω2 são unificáveis sse existir uma substituição s tal que
ω1 s = ω2 s
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 25 / 34
Lógica de Primeira Ordem – Resolução
Unificação
Trata-se de encontrar uma substituição que faça
com que duas expressões se igualem
Estamos interessados em modos de fazer expressões se
equivalerem, em toda interpretação de seus sı́mbolos
Expressões unificáveis:
ω1 e ω2 são unificáveis sse existir uma substituição s tal que
ω1 s = ω2 s
Se existir uma substituição s que, quando aplicada a ω1 e ω2, nos
leva à mesma expressão
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 25 / 34
Lógica de Primeira Ordem – Resolução
Unificação
Trata-se de encontrar uma substituição que faça
com que duas expressões se igualem
Estamos interessados em modos de fazer expressões se
equivalerem, em toda interpretação de seus sı́mbolos
Expressões unificáveis:
ω1 e ω2 são unificáveis sse existir uma substituição s tal que
ω1 s = ω2 s
Se existir uma substituição s que, quando aplicada a ω1 e ω2, nos
leva à mesma expressão
s é então um unificador de ω1 e ω2
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 25 / 34
Lógica de Primeira Ordem – Resolução
Unificação
Ex: ω1 = x e ω2 = y
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 26 / 34
Lógica de Primeira Ordem – Resolução
Unificação
Ex: ω1 = x e ω2 = y
Unificadores:
s ω1 s ω2 s
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 26 / 34
Lógica de Primeira Ordem – Resolução
Unificação
Ex: ω1 = x e ω2 = y
Unificadores:
s ω1 s ω2 s
{y/x}
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 26 / 34
Lógica de Primeira Ordem – Resolução
Unificação
Ex: ω1 = x e ω2 = y
Unificadores:
s ω1 s ω2 s
{y/x} x
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 26 / 34
Lógica de Primeira Ordem – Resolução
Unificação
Ex: ω1 = x e ω2 = y
Unificadores:
s ω1 s ω2 s
{y/x} x x
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 26 / 34
Lógica de Primeira Ordem – Resolução
Unificação
Ex: ω1 = x e ω2 = y
Unificadores:
s ω1 s ω2 s
{y/x} x x
{x/y}
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 26 / 34
Lógica de Primeira Ordem – Resolução
Unificação
Ex: ω1 = x e ω2 = y
Unificadores:
s ω1 s ω2 s
{y/x} x x
{x/y} y
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 26 / 34
Lógica de Primeira Ordem – Resolução
Unificação
Ex: ω1 = x e ω2 = y
Unificadores:
s ω1 s ω2 s
{y/x} x x
{x/y} y y
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 26 / 34
Lógica de Primeira Ordem – Resolução
Unificação
Ex: ω1 = x e ω2 = y
Unificadores:
s ω1 s ω2 s
{y/x} x x
{x/y} y y
{x/f (f (A)), y/f (f (A))}
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 26 / 34
Lógica de Primeira Ordem – Resolução
Unificação
Ex: ω1 = x e ω2 = y
Unificadores:
s ω1 s ω2 s
{y/x} x x
{x/y} y y
{x/f (f (A)), y/f (f (A))} f (f (A))
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 26 / 34
Lógica de Primeira Ordem – Resolução
Unificação
Ex: ω1 = x e ω2 = y
Unificadores:
s ω1 s ω2 s
{y/x} x x
{x/y} y y
{x/f (f (A)), y/f (f (A))} f (f (A)) f (f (A))
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 26 / 34
Lógica de Primeira Ordem – Resolução
Unificação
Ex: ω1 = x e ω2 = y
Unificadores:
s ω1 s ω2 s
{y/x} x x
{x/y} y y
{x/f (f (A)), y/f (f (A))} f (f (A)) f (f (A))
{x/A, y/A}
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 26 / 34
Lógica de Primeira Ordem – Resolução
Unificação
Ex: ω1 = x e ω2 = y
Unificadores:
s ω1 s ω2 s
{y/x} x x
{x/y} y y
{x/f (f (A)), y/f (f (A))} f (f (A)) f (f (A))
{x/A, y/A} A
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 26 / 34
Lógica de Primeira Ordem – Resolução
Unificação
Ex: ω1 = x e ω2 = y
Unificadores:
s ω1 s ω2 s
{y/x} x x
{x/y} y y
{x/f (f (A)), y/f (f (A))} f (f (A)) f (f (A))
{x/A, y/A} A A
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 26 / 34
Lógica de Primeira Ordem – Resolução
Unificação
Ex: ω1 = x e ω2 = y
Unificadores:
s ω1 s ω2 s
{y/x} x x
{x/y} y y
{x/f (f (A)), y/f (f (A))} f (f (A)) f (f (A))
{x/A, y/A} A A
Pode haver vários unificadores para o mesmo par de
expressões, alguns mais gerais que outros
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 26 / 34
Lógica de Primeira Ordem – Resolução
Unificação
Ex: ω1 = x e ω2 = y
Unificadores:
s ω1 s ω2 s
{y/x} x x
{x/y} y y
{x/f (f (A)), y/f (f (A))} f (f (A)) f (f (A))
{x/A, y/A} A A
Pode haver vários unificadores para o mesmo par de
expressões, alguns mais gerais que outros
Ex: {y/x} é mais geral que {x/A, y/A}, por impor menos
restrições aos valores das variáveis
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 26 / 34
Lógica de Primeira Ordem – Resolução
Unificação
Para um algoritmo computacional, seria desejável
possuir uma única substituição – um único
unificador
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 27 / 34
Lógica de Primeira Ordem – Resolução
Unificação
Para um algoritmo computacional, seria desejável
possuir uma única substituição – um único
unificador
Ocorre que, para todo par de expressões unificáveis,
há um único unificador mais geral
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 27 / 34
Lógica de Primeira Ordem – Resolução
Unificação
Para um algoritmo computacional, seria desejável
possuir uma única substituição – um único
unificador
Ocorre que, para todo par de expressões unificáveis,
há um único unificador mais geral
Este é único até o ponto de renomeação de variáveis
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 27 / 34
Lógica de Primeira Ordem – Resolução
Unificação
Para um algoritmo computacional, seria desejável
possuir uma única substituição – um único
unificador
Ocorre que, para todo par de expressões unificáveis,
há um único unificador mais geral
Este é único até o ponto de renomeação de variáveis
Ex: {x/Pedro} e {y/Pedro} são consideradas equivalentes
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 27 / 34
Lógica de Primeira Ordem – Resolução
Unificação
Para um algoritmo computacional, seria desejável
possuir uma única substituição – um único
unificador
Ocorre que, para todo par de expressões unificáveis,
há um único unificador mais geral
Este é único até o ponto de renomeação de variáveis
Ex: {x/Pedro} e {y/Pedro} são consideradas equivalentes
Só diferem pelo nome das variáveis
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 27 / 34
Lógica de Primeira Ordem – Resolução
Unificação
Para um algoritmo computacional, seria desejável
possuir uma única substituição – um único
unificador
Ocorre que, para todo par de expressões unificáveis,
há um único unificador mais geral
Este é único até o ponto de renomeação de variáveis
Ex: {x/Pedro} e {y/Pedro} são consideradas equivalentes
Só diferem pelo nome das variáveis
Assim como {x/Pedro, y/x} e {y/Pedro, x/z}
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 27 / 34
Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG)
g é um unificador mais geral de ω1 e ω2 sse, para
todo unificador s, houver um s0
tal que
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 28 / 34
Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG)
g é um unificador mais geral de ω1 e ω2 sse, para
todo unificador s, houver um s0
tal que
ω1 s = (ω1 g) s0
, e
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 28 / 34
Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG)
g é um unificador mais geral de ω1 e ω2 sse, para
todo unificador s, houver um s0
tal que
ω1 s = (ω1 g) s0
, e
ω2 s = (ω2 g) s0
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 28 / 34
Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG)
g é um unificador mais geral de ω1 e ω2 sse, para
todo unificador s, houver um s0
tal que
ω1 s = (ω1 g) s0
, e
ω2 s = (ω2 g) s0
Ou seja, um unificador g é o mais geral se todo
outro unificador s puder ser expressado como uma
substituição extra s0
adicionada ao mais geral
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 28 / 34
Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG)
g é um unificador mais geral de ω1 e ω2 sse, para
todo unificador s, houver um s0
tal que
ω1 s = (ω1 g) s0
, e
ω2 s = (ω2 g) s0
Ou seja, um unificador g é o mais geral se todo
outro unificador s puder ser expressado como uma
substituição extra s0
adicionada ao mais geral
É então a substituição mais geral capaz de tornar as duas
expressões iguais
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 28 / 34
Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG): Exemplo
ω1 ω2 UMG(σ) ω0
1 e ω0
2
P(x) P(A) {x/A}
P(f (x), y, g(x)) P(f (x), x, g(x)) {y/x} (ou {x/y})
P(f (x), y, g(y)) P(f (x), z, g(x)) {y/x, z/x}
P(x, B, B) P(A, y, z) {x/A, y/B, z/B}
P(g(f (v)), g(u)) P(x, x) {x/g(f (v)), u/f (v)}
P(x, f (x)) P(x, x)
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 29 / 34
Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG): Exemplo
ω1 ω2 UMG(σ) ω0
1 e ω0
2
P(x) P(A) {x/A} P(A)
P(f (x), y, g(x)) P(f (x), x, g(x)) {y/x} (ou {x/y})
P(f (x), y, g(y)) P(f (x), z, g(x)) {y/x, z/x}
P(x, B, B) P(A, y, z) {x/A, y/B, z/B}
P(g(f (v)), g(u)) P(x, x) {x/g(f (v)), u/f (v)}
P(x, f (x)) P(x, x)
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 29 / 34
Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG): Exemplo
ω1 ω2 UMG(σ) ω0
1 e ω0
2
P(x) P(A) {x/A} P(A)
P(f (x), y, g(x)) P(f (x), x, g(x)) {y/x} (ou {x/y}) P(f (x), x, g(x))
P(f (x), y, g(y)) P(f (x), z, g(x)) {y/x, z/x}
P(x, B, B) P(A, y, z) {x/A, y/B, z/B}
P(g(f (v)), g(u)) P(x, x) {x/g(f (v)), u/f (v)}
P(x, f (x)) P(x, x)
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 29 / 34
Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG): Exemplo
ω1 ω2 UMG(σ) ω0
1 e ω0
2
P(x) P(A) {x/A} P(A)
P(f (x), y, g(x)) P(f (x), x, g(x)) {y/x} (ou {x/y}) P(f (x), x, g(x))
P(f (x), y, g(y)) P(f (x), z, g(x)) {y/x, z/x} P(f (x), x, g(x))
P(x, B, B) P(A, y, z) {x/A, y/B, z/B}
P(g(f (v)), g(u)) P(x, x) {x/g(f (v)), u/f (v)}
P(x, f (x)) P(x, x)
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 29 / 34
Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG): Exemplo
ω1 ω2 UMG(σ) ω0
1 e ω0
2
P(x) P(A) {x/A} P(A)
P(f (x), y, g(x)) P(f (x), x, g(x)) {y/x} (ou {x/y}) P(f (x), x, g(x))
P(f (x), y, g(y)) P(f (x), z, g(x)) {y/x, z/x} P(f (x), x, g(x))
P(x, B, B) P(A, y, z) {x/A, y/B, z/B} P(A, B, B)
P(g(f (v)), g(u)) P(x, x) {x/g(f (v)), u/f (v)}
P(x, f (x)) P(x, x)
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 29 / 34
Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG): Exemplo
ω1 ω2 UMG(σ) ω0
1 e ω0
2
P(x) P(A) {x/A} P(A)
P(f (x), y, g(x)) P(f (x), x, g(x)) {y/x} (ou {x/y}) P(f (x), x, g(x))
P(f (x), y, g(y)) P(f (x), z, g(x)) {y/x, z/x} P(f (x), x, g(x))
P(x, B, B) P(A, y, z) {x/A, y/B, z/B} P(A, B, B)
P(g(f (v)), g(u)) P(x, x) {x/g(f (v)), u/f (v)} P(g(f (v)), g(f (v)))
P(x, f (x)) P(x, x)
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 29 / 34
Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG): Exemplo
ω1 ω2 UMG(σ) ω0
1 e ω0
2
P(x) P(A) {x/A} P(A)
P(f (x), y, g(x)) P(f (x), x, g(x)) {y/x} (ou {x/y}) P(f (x), x, g(x))
P(f (x), y, g(y)) P(f (x), z, g(x)) {y/x, z/x} P(f (x), x, g(x))
P(x, B, B) P(A, y, z) {x/A, y/B, z/B} P(A, B, B)
P(g(f (v)), g(u)) P(x, x) {x/g(f (v)), u/f (v)} P(g(f (v)), g(f (v)))
P(x, f (x)) P(x, x) Não há
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 29 / 34
Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG): Funcionamento
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 30 / 34
Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG): Funcionamento
O algoritmo recursivamente compara a estrutura de
duas expressões, x e y, elemento por elemento
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 30 / 34
Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG): Funcionamento
O algoritmo recursivamente compara a estrutura de
duas expressões, x e y, elemento por elemento
Ao longo do caminho, constrói um unificador s para as
expressões
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 30 / 34
Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG): Funcionamento
O algoritmo recursivamente compara a estrutura de
duas expressões, x e y, elemento por elemento
Ao longo do caminho, constrói um unificador s para as
expressões
Falha se dois pontos correspondentes nas estruturas não
baterem
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 30 / 34
Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG): Funcionamento
O algoritmo recursivamente compara a estrutura de
duas expressões, x e y, elemento por elemento
Ao longo do caminho, constrói um unificador s para as
expressões
Falha se dois pontos correspondentes nas estruturas não
baterem
Usa assim s para garantir que comparações futuras sejam
consistentes com ligações estabelecidas anteriormente
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 30 / 34
Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG): Funcionamento
Ao comparar uma variável com um termo complexo,
o algoritmo faz a checagem de ocorrência:
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 31 / 34
Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG): Funcionamento
Ao comparar uma variável com um termo complexo,
o algoritmo faz a checagem de ocorrência:
Verifica se essa variável já não ocorre dentro desse termo
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 31 / 34
Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG): Funcionamento
Ao comparar uma variável com um termo complexo,
o algoritmo faz a checagem de ocorrência:
Verifica se essa variável já não ocorre dentro desse termo
Se sim, falha, pois nenhum unificador consistente pode ser
construı́do
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 31 / 34
Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG): Funcionamento
Ao comparar uma variável com um termo complexo,
o algoritmo faz a checagem de ocorrência:
Verifica se essa variável já não ocorre dentro desse termo
Se sim, falha, pois nenhum unificador consistente pode ser
construı́do
Ex: S(x) não pode ser unificado a S(S(x))
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 31 / 34
Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG): Algoritmo
Função Unifica(x,y,s): substituição
se s = falha então retorna falha
se x = y então retorna s
se x for uma variável então
retorna UnificaVar(x,y,s)
se y for uma variável então
retorna UnificaVar(y,x,s)
se x e y forem expressões compostas então
retorna Unifica(args(x), args(y), Unifica(op(x),op(y),s))
se x e y forem listas então
retorna Unifica(resto(x), resto(y), Unifica(primeiro(x),
primeiro(y), s))
retorna falha
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 32 / 34
Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG): Algoritmo
Variável, constante, lista
ou expressão composta
Função Unifica(x,y,s): substituição
se s = falha então retorna falha
se x = y então retorna s
se x for uma variável então
retorna UnificaVar(x,y,s)
se y for uma variável então
retorna UnificaVar(y,x,s)
se x e y forem expressões compostas então
retorna Unifica(args(x), args(y), Unifica(op(x),op(y),s))
se x e y forem listas então
retorna Unifica(resto(x), resto(y), Unifica(primeiro(x),
primeiro(y), s))
retorna falha
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 32 / 34
Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG): Algoritmo
A substituição construı́da
até então (no inı́cio, vazia)
Função Unifica(x,y,s): substituição
se s = falha então retorna falha
se x = y então retorna s
se x for uma variável então
retorna UnificaVar(x,y,s)
se y for uma variável então
retorna UnificaVar(y,x,s)
se x e y forem expressões compostas então
retorna Unifica(args(x), args(y), Unifica(op(x),op(y),s))
se x e y forem listas então
retorna Unifica(resto(x), resto(y), Unifica(primeiro(x),
primeiro(y), s))
retorna falha
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 32 / 34
Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG): Algoritmo
Retorna uma substituição, se x e
y forem unificáveis no contexto
de s. Do contrário, falha
Função Unifica(x,y,s): substituição
se s = falha então retorna falha
se x = y então retorna s
se x for uma variável então
retorna UnificaVar(x,y,s)
se y for uma variável então
retorna UnificaVar(y,x,s)
se x e y forem expressões compostas então
retorna Unifica(args(x), args(y), Unifica(op(x),op(y),s))
se x e y forem listas então
retorna Unifica(resto(x), resto(y), Unifica(primeiro(x),
primeiro(y), s))
retorna falha
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 32 / 34
Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG): Algoritmo
x e y contém valores ou ex-
pressões idênticos (esses
podem ter sido atribuı́dos
a elas em UnificaVar)
Função Unifica(x,y,s): substituição
se s = falha então retorna falha
se x = y então retorna s
se x for uma variável então
retorna UnificaVar(x,y,s)
se y for uma variável então
retorna UnificaVar(y,x,s)
se x e y forem expressões compostas então
retorna Unifica(args(x), args(y), Unifica(op(x),op(y),s))
se x e y forem listas então
retorna Unifica(resto(x), resto(y), Unifica(primeiro(x),
primeiro(y), s))
retorna falha
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 32 / 34
Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG): Algoritmo
Se x ou y forem variáveis, tenta
unificá-las à outra expressão
Função Unifica(x,y,s): substituição
se s = falha então retorna falha
se x = y então retorna s
se x for uma variável então
retorna UnificaVar(x,y,s)
se y for uma variável então
retorna UnificaVar(y,x,s)
se x e y forem expressões compostas então
retorna Unifica(args(x), args(y), Unifica(op(x),op(y),s))
se x e y forem listas então
retorna Unifica(resto(x), resto(y), Unifica(primeiro(x),
primeiro(y), s))
retorna falha
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 32 / 34
Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG): Algoritmo
UnificaVar tenta unificar a
variável do primeiro argu-
mento com a expressão do
segundo, no contexto de s
Função Unifica(x,y,s): substituição
se s = falha então retorna falha
se x = y então retorna s
se x for uma variável então
retorna UnificaVar(x,y,s)
se y for uma variável então
retorna UnificaVar(y,x,s)
se x e y forem expressões compostas então
retorna Unifica(args(x), args(y), Unifica(op(x),op(y),s))
se x e y forem listas então
retorna Unifica(resto(x), resto(y), Unifica(primeiro(x),
primeiro(y), s))
retorna falha
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 32 / 34
Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG): Algoritmo
Em uma expressão composta,
como F(A, B), op() captura
o sı́mbolo de função F, en-
quanto que args() captura a
lista de argumentos (A, B)
Função Unifica(x,y,s): substituição
se s = falha então retorna falha
se x = y então retorna s
se x for uma variável então
retorna UnificaVar(x,y,s)
se y for uma variável então
retorna UnificaVar(y,x,s)
se x e y forem expressões compostas então
retorna Unifica(args(x), args(y), Unifica(op(x),op(y),s))
se x e y forem listas então
retorna Unifica(resto(x), resto(y), Unifica(primeiro(x),
primeiro(y), s))
retorna falha
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 32 / 34
Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG): Algoritmo
Unificamos antes os operadores.
E estes precisam ser idênticos
Função Unifica(x,y,s): substituição
se s = falha então retorna falha
se x = y então retorna s
se x for uma variável então
retorna UnificaVar(x,y,s)
se y for uma variável então
retorna UnificaVar(y,x,s)
se x e y forem expressões compostas então
retorna Unifica(args(x), args(y), Unifica(op(x),op(y),s))
se x e y forem listas então
retorna Unifica(resto(x), resto(y), Unifica(primeiro(x),
primeiro(y), s))
retorna falha
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 32 / 34
Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG): Algoritmo
Unificamos então a lista de argu-
mentos de x e y no contexto de s
Função Unifica(x,y,s): substituição
se s = falha então retorna falha
se x = y então retorna s
se x for uma variável então
retorna UnificaVar(x,y,s)
se y for uma variável então
retorna UnificaVar(y,x,s)
se x e y forem expressões compostas então
retorna Unifica(args(x), args(y), Unifica(op(x),op(y),s))
se x e y forem listas então
retorna Unifica(resto(x), resto(y), Unifica(primeiro(x),
primeiro(y), s))
retorna falha
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 32 / 34
Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG): Algoritmo
No caso de listas, tenta-
mos unificar o primeiro
elemento, para então recur-
sivamente unificar os demais
Função Unifica(x,y,s): substituição
se s = falha então retorna falha
se x = y então retorna s
se x for uma variável então
retorna UnificaVar(x,y,s)
se y for uma variável então
retorna UnificaVar(y,x,s)
se x e y forem expressões compostas então
retorna Unifica(args(x), args(y), Unifica(op(x),op(y),s))
se x e y forem listas então
retorna Unifica(resto(x), resto(y), Unifica(primeiro(x),
primeiro(y), s))
retorna falha
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 32 / 34
Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG): Algoritmo
Nesse ponto, x e y são
constantes distintas
Função Unifica(x,y,s): substituição
se s = falha então retorna falha
se x = y então retorna s
se x for uma variável então
retorna UnificaVar(x,y,s)
se y for uma variável então
retorna UnificaVar(y,x,s)
se x e y forem expressões compostas então
retorna Unifica(args(x), args(y), Unifica(op(x),op(y),s))
se x e y forem listas então
retorna Unifica(resto(x), resto(y), Unifica(primeiro(x),
primeiro(y), s))
retorna falha
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 32 / 34
Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG): Algoritmo
Função UnificaVar(var,x,s): substituição
se {var/val} ∈ s então
retorna Unifica(val, x, s)
se {x/val} ∈ s então
retorna Unifica(var, val, s)
se var ocorre em x, com a substituição s aplicada a ele (x s)
então
retorna falha (teste de ocorrência)
Adicione {var/x} a s
retorna s
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 33 / 34
Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG): Algoritmo
Variável
Função UnificaVar(var,x,s): substituição
se {var/val} ∈ s então
retorna Unifica(val, x, s)
se {x/val} ∈ s então
retorna Unifica(var, val, s)
se var ocorre em x, com a substituição s aplicada a ele (x s)
então
retorna falha (teste de ocorrência)
Adicione {var/x} a s
retorna s
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 33 / 34
Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG): Algoritmo
Expressão
Função UnificaVar(var,x,s): substituição
se {var/val} ∈ s então
retorna Unifica(val, x, s)
se {x/val} ∈ s então
retorna Unifica(var, val, s)
se var ocorre em x, com a substituição s aplicada a ele (x s)
então
retorna falha (teste de ocorrência)
Adicione {var/x} a s
retorna s
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 33 / 34
Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG): Algoritmo
Substituição atual
Função UnificaVar(var,x,s): substituição
se {var/val} ∈ s então
retorna Unifica(val, x, s)
se {x/val} ∈ s então
retorna Unifica(var, val, s)
se var ocorre em x, com a substituição s aplicada a ele (x s)
então
retorna falha (teste de ocorrência)
Adicione {var/x} a s
retorna s
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 33 / 34
Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG): Algoritmo
Primeiro aplicamos as
substituições existen-
tes em s a var e x
Função UnificaVar(var,x,s): substituição
se {var/val} ∈ s então
retorna Unifica(val, x, s)
se {x/val} ∈ s então
retorna Unifica(var, val, s)
se var ocorre em x, com a substituição s aplicada a ele (x s)
então
retorna falha (teste de ocorrência)
Adicione {var/x} a s
retorna s
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 33 / 34
Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG): Algoritmo
val pode ser um va-
lor ou expressão
Função UnificaVar(var,x,s): substituição
se {var/val} ∈ s então
retorna Unifica(val, x, s)
se {x/val} ∈ s então
retorna Unifica(var, val, s)
se var ocorre em x, com a substituição s aplicada a ele (x s)
então
retorna falha (teste de ocorrência)
Adicione {var/x} a s
retorna s
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 33 / 34
Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG): Algoritmo
Unificamos então a subs-
tituição recém feita à
outra expressão (x ou var)
Função UnificaVar(var,x,s): substituição
se {var/val} ∈ s então
retorna Unifica(val, x, s)
se {x/val} ∈ s então
retorna Unifica(var, val, s)
se var ocorre em x, com a substituição s aplicada a ele (x s)
então
retorna falha (teste de ocorrência)
Adicione {var/x} a s
retorna s
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 33 / 34
Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG): Algoritmo
No inı́cio, s = ∅ →
P s = P, ∀P
Função UnificaVar(var,x,s): substituição
se {var/val} ∈ s então
retorna Unifica(val, x, s)
se {x/val} ∈ s então
retorna Unifica(var, val, s)
se var ocorre em x, com a substituição s aplicada a ele (x s)
então
retorna falha (teste de ocorrência)
Adicione {var/x} a s
retorna s
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 33 / 34
Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG): Algoritmo
Evita laços como {x/f (x)}
Função UnificaVar(var,x,s): substituição
se {var/val} ∈ s então
retorna Unifica(val, x, s)
se {x/val} ∈ s então
retorna Unifica(var, val, s)
se var ocorre em x, com a substituição s aplicada a ele (x s)
então
retorna falha (teste de ocorrência)
Adicione {var/x} a s
retorna s
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 33 / 34
Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG): Algoritmo
Se nem var nem x partici-
parem de s, e passarem no
teste de ocorrência, então
substituı́mos a variável
var pelo que estiver em
x, de modo a alinhá-las
Função UnificaVar(var,x,s): substituição
se {var/val} ∈ s então
retorna Unifica(val, x, s)
se {x/val} ∈ s então
retorna Unifica(var, val, s)
se var ocorre em x, com a substituição s aplicada a ele (x s)
então
retorna falha (teste de ocorrência)
Adicione {var/x} a s
retorna s
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 33 / 34
Lógica de Primeira Ordem – Resolução
Unificador mais Geral (UMG): Algoritmo
Substituı́mos a variável
justamente por ser mais
flexı́vel → por aceitar
atribuições facilmente
Função UnificaVar(var,x,s): substituição
se {var/val} ∈ s então
retorna Unifica(val, x, s)
se {x/val} ∈ s então
retorna Unifica(var, val, s)
se var ocorre em x, com a substituição s aplicada a ele (x s)
então
retorna falha (teste de ocorrência)
Adicione {var/x} a s
retorna s
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 33 / 34
Referências
Russell, S.; Norvig P. (2010): Artificial Intelligence: A Modern Approach. Prentice
Hall. 3a ed.
Slides do livro: http://aima.eecs.berkeley.edu/slides-pdf/
Hiż, A. (1957): Inferential Equivalence and Natural Deduction. The Journal of
Symbolic Logic, 22(3). pp. 237-240.
http://ocw.mit.edu/OcwWeb/Electrical-Engineering-
and-Computer-Science/6-034Spring-2005/LectureNotes/index.htm
http://jmvidal.cse.sc.edu/talks/learningrules/first-orderlogicsdefs.xml
https:
//www.sciencedirect.com/topics/computer-science/unification-algorithm
http://logic.stanford.edu/intrologic/secondary/notes/chapter_12.html
Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 34 / 34

Mais conteúdo relacionado

Mais procurados

(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 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 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 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 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 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 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 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 24
(ACH2044) Inteligência Artificial - Aula 24(ACH2044) Inteligência Artificial - Aula 24
(ACH2044) Inteligência Artificial - Aula 24Norton Trevisan Roman
 

Mais procurados (9)

(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 18
(ACH2044) Inteligência Artificial - Aula 18(ACH2044) Inteligência Artificial - Aula 18
(ACH2044) Inteligência Artificial - Aula 18
 
(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 23
(ACH2044) Inteligência Artificial - Aula 23(ACH2044) Inteligência Artificial - Aula 23
(ACH2044) Inteligência Artificial - Aula 23
 
(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 06
(ACH2044) Inteligência Artificial - Aula 06(ACH2044) Inteligência Artificial - Aula 06
(ACH2044) Inteligência Artificial - Aula 06
 
(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 16
(ACH2044) Inteligência Artificial - Aula 16(ACH2044) Inteligência Artificial - Aula 16
(ACH2044) Inteligência Artificial - Aula 16
 
(ACH2044) Inteligência Artificial - Aula 24
(ACH2044) Inteligência Artificial - Aula 24(ACH2044) Inteligência Artificial - Aula 24
(ACH2044) Inteligência Artificial - Aula 24
 

Mais de Norton Trevisan Roman

(ACH2044) Inteligência Artificial - Aula 22
(ACH2044) Inteligência Artificial - Aula 22(ACH2044) Inteligência Artificial - Aula 22
(ACH2044) Inteligência Artificial - Aula 22Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 21
(ACH2044) Inteligência Artificial - Aula 21(ACH2044) Inteligência Artificial - Aula 21
(ACH2044) Inteligência Artificial - Aula 21Norton 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 13
(ACH2044) Inteligência Artificial - Aula 13(ACH2044) Inteligência Artificial - Aula 13
(ACH2044) Inteligência Artificial - Aula 13Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 12
(ACH2044) Inteligência Artificial - Aula 12(ACH2044) Inteligência Artificial - Aula 12
(ACH2044) Inteligência Artificial - Aula 12Norton 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
 
(ACH2001) Introdução à Programação - Aula 22
(ACH2001) Introdução à Programação - Aula 22(ACH2001) Introdução à Programação - Aula 22
(ACH2001) Introdução à Programação - Aula 22Norton Trevisan Roman
 
(ACH2001) Introdução à Programação - Aula 21
(ACH2001) Introdução à Programação - Aula 21(ACH2001) Introdução à Programação - Aula 21
(ACH2001) Introdução à Programação - Aula 21Norton Trevisan Roman
 
(ACH2001) Introdução à Programação - Aula 20
(ACH2001) Introdução à Programação - Aula 20(ACH2001) Introdução à Programação - Aula 20
(ACH2001) Introdução à Programação - Aula 20Norton Trevisan Roman
 
(ACH2001) Introdução à Programação - Aula 19
(ACH2001) Introdução à Programação - Aula 19(ACH2001) Introdução à Programação - Aula 19
(ACH2001) Introdução à Programação - Aula 19Norton Trevisan Roman
 
(ACH2001) Introdução à Programação - Aula 18
(ACH2001) Introdução à Programação - Aula 18(ACH2001) Introdução à Programação - Aula 18
(ACH2001) Introdução à Programação - Aula 18Norton Trevisan Roman
 
(ACH2001) Introdução à Programação - Aula 17
(ACH2001) Introdução à Programação - Aula 17(ACH2001) Introdução à Programação - Aula 17
(ACH2001) Introdução à Programação - Aula 17Norton Trevisan Roman
 
(ACH2001) Introdução à Programação - Aula 16
(ACH2001) Introdução à Programação - Aula 16(ACH2001) Introdução à Programação - Aula 16
(ACH2001) Introdução à Programação - Aula 16Norton Trevisan Roman
 

Mais de Norton Trevisan Roman (13)

(ACH2044) Inteligência Artificial - Aula 22
(ACH2044) Inteligência Artificial - Aula 22(ACH2044) Inteligência Artificial - Aula 22
(ACH2044) Inteligência Artificial - Aula 22
 
(ACH2044) Inteligência Artificial - Aula 21
(ACH2044) Inteligência Artificial - Aula 21(ACH2044) Inteligência Artificial - Aula 21
(ACH2044) Inteligência Artificial - Aula 21
 
(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 13
(ACH2044) Inteligência Artificial - Aula 13(ACH2044) Inteligência Artificial - Aula 13
(ACH2044) Inteligência Artificial - Aula 13
 
(ACH2044) Inteligência Artificial - Aula 12
(ACH2044) Inteligência Artificial - Aula 12(ACH2044) Inteligência Artificial - Aula 12
(ACH2044) Inteligência Artificial - Aula 12
 
(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
 
(ACH2001) Introdução à Programação - Aula 22
(ACH2001) Introdução à Programação - Aula 22(ACH2001) Introdução à Programação - Aula 22
(ACH2001) Introdução à Programação - Aula 22
 
(ACH2001) Introdução à Programação - Aula 21
(ACH2001) Introdução à Programação - Aula 21(ACH2001) Introdução à Programação - Aula 21
(ACH2001) Introdução à Programação - Aula 21
 
(ACH2001) Introdução à Programação - Aula 20
(ACH2001) Introdução à Programação - Aula 20(ACH2001) Introdução à Programação - Aula 20
(ACH2001) Introdução à Programação - Aula 20
 
(ACH2001) Introdução à Programação - Aula 19
(ACH2001) Introdução à Programação - Aula 19(ACH2001) Introdução à Programação - Aula 19
(ACH2001) Introdução à Programação - Aula 19
 
(ACH2001) Introdução à Programação - Aula 18
(ACH2001) Introdução à Programação - Aula 18(ACH2001) Introdução à Programação - Aula 18
(ACH2001) Introdução à Programação - Aula 18
 
(ACH2001) Introdução à Programação - Aula 17
(ACH2001) Introdução à Programação - Aula 17(ACH2001) Introdução à Programação - Aula 17
(ACH2001) Introdução à Programação - Aula 17
 
(ACH2001) Introdução à Programação - Aula 16
(ACH2001) Introdução à Programação - Aula 16(ACH2001) Introdução à Programação - Aula 16
(ACH2001) Introdução à Programação - Aula 16
 

Último

Projeto Nós propomos! Sertã, 2024 - Chupetas Eletrónicas.pptx
Projeto Nós propomos! Sertã, 2024 - Chupetas Eletrónicas.pptxProjeto Nós propomos! Sertã, 2024 - Chupetas Eletrónicas.pptx
Projeto Nós propomos! Sertã, 2024 - Chupetas Eletrónicas.pptxIlda Bicacro
 
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSOLeloIurk1
 
migração e trabalho 2º ano.pptx fenomenos
migração e trabalho 2º ano.pptx fenomenosmigração e trabalho 2º ano.pptx fenomenos
migração e trabalho 2º ano.pptx fenomenosLucianoPrado15
 
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptxSlides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptxLuizHenriquedeAlmeid6
 
PROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia TecnologiaPROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia TecnologiaHELENO FAVACHO
 
Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Ilda Bicacro
 
Antero de Quental, sua vida e sua escrita
Antero de Quental, sua vida e sua escritaAntero de Quental, sua vida e sua escrita
Antero de Quental, sua vida e sua escritaPaula Duarte
 
19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdfmarlene54545
 
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdfPROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdfHELENO FAVACHO
 
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdfGEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdfRavenaSales1
 
praticas experimentais 1 ano ensino médio
praticas experimentais 1 ano ensino médiopraticas experimentais 1 ano ensino médio
praticas experimentais 1 ano ensino médiorosenilrucks
 
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
 
Modelo de Plano Plano semanal Educação Infantil 5 anossemanal Educação Infant...
Modelo de Plano Plano semanal Educação Infantil 5 anossemanal Educação Infant...Modelo de Plano Plano semanal Educação Infantil 5 anossemanal Educação Infant...
Modelo de Plano Plano semanal Educação Infantil 5 anossemanal Educação Infant...AndreaCavalcante14
 
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptxTeoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptxTailsonSantos1
 
About Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de HotéisAbout Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de Hotéisines09cachapa
 
matematica aula didatica prática e tecni
matematica aula didatica prática e tecnimatematica aula didatica prática e tecni
matematica aula didatica prática e tecniCleidianeCarvalhoPer
 
apostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médioapostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médiorosenilrucks
 
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfLeloIurk1
 
SSE_BQ_Matematica_4A_SR.pdfffffffffffffffffffffffffffffffffff
SSE_BQ_Matematica_4A_SR.pdfffffffffffffffffffffffffffffffffffSSE_BQ_Matematica_4A_SR.pdfffffffffffffffffffffffffffffffffff
SSE_BQ_Matematica_4A_SR.pdfffffffffffffffffffffffffffffffffffNarlaAquino
 

Último (20)

Projeto Nós propomos! Sertã, 2024 - Chupetas Eletrónicas.pptx
Projeto Nós propomos! Sertã, 2024 - Chupetas Eletrónicas.pptxProjeto Nós propomos! Sertã, 2024 - Chupetas Eletrónicas.pptx
Projeto Nós propomos! Sertã, 2024 - Chupetas Eletrónicas.pptx
 
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
 
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
 
migração e trabalho 2º ano.pptx fenomenos
migração e trabalho 2º ano.pptx fenomenosmigração e trabalho 2º ano.pptx fenomenos
migração e trabalho 2º ano.pptx fenomenos
 
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptxSlides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
 
PROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia TecnologiaPROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia Tecnologia
 
Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!
 
Antero de Quental, sua vida e sua escrita
Antero de Quental, sua vida e sua escritaAntero de Quental, sua vida e sua escrita
Antero de Quental, sua vida e sua escrita
 
19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf
 
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdfPROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
 
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdfGEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
 
praticas experimentais 1 ano ensino médio
praticas experimentais 1 ano ensino médiopraticas experimentais 1 ano ensino médio
praticas experimentais 1 ano ensino médio
 
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
 
Modelo de Plano Plano semanal Educação Infantil 5 anossemanal Educação Infant...
Modelo de Plano Plano semanal Educação Infantil 5 anossemanal Educação Infant...Modelo de Plano Plano semanal Educação Infantil 5 anossemanal Educação Infant...
Modelo de Plano Plano semanal Educação Infantil 5 anossemanal Educação Infant...
 
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptxTeoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
 
About Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de HotéisAbout Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de Hotéis
 
matematica aula didatica prática e tecni
matematica aula didatica prática e tecnimatematica aula didatica prática e tecni
matematica aula didatica prática e tecni
 
apostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médioapostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médio
 
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
 
SSE_BQ_Matematica_4A_SR.pdfffffffffffffffffffffffffffffffffff
SSE_BQ_Matematica_4A_SR.pdfffffffffffffffffffffffffffffffffffSSE_BQ_Matematica_4A_SR.pdfffffffffffffffffffffffffffffffffff
SSE_BQ_Matematica_4A_SR.pdfffffffffffffffffffffffffffffffffff
 

(ACH2044) Inteligência Artificial - Aula 11

  • 1. Inteligência Artificial – ACH2016 Aula 11 – Inferência em Lógica de Primeira Ordem Norton Trevisan Roman (norton@usp.br) 5 de abril de 2019 Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 1 / 34
  • 2. Bases em Lógica de Primeira Ordem Interagindo com uma BC Fazemos buscas (queries) na base Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 2 / 34
  • 3. Bases em Lógica de Primeira Ordem Interagindo com uma BC Fazemos buscas (queries) na base Feitas por meio de sentenças lógicas em LPO Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 2 / 34
  • 4. Bases em Lógica de Primeira Ordem Interagindo com uma BC Fazemos buscas (queries) na base Feitas por meio de sentenças lógicas em LPO Qualquer query que possa ser inferida logicamente pela base de dados será respondida afirmativamente Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 2 / 34
  • 5. Bases em Lógica de Primeira Ordem Interagindo com uma BC Fazemos buscas (queries) na base Feitas por meio de sentenças lógicas em LPO Qualquer query que possa ser inferida logicamente pela base de dados será respondida afirmativamente A BC é composta por: Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 2 / 34
  • 6. Bases em Lógica de Primeira Ordem Interagindo com uma BC Fazemos buscas (queries) na base Feitas por meio de sentenças lógicas em LPO Qualquer query que possa ser inferida logicamente pela base de dados será respondida afirmativamente A BC é composta por: Axiomas: informação factual básica da qual conclusões úteis podem ser derivadas Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 2 / 34
  • 7. Bases em Lógica de Primeira Ordem Interagindo com uma BC Fazemos buscas (queries) na base Feitas por meio de sentenças lógicas em LPO Qualquer query que possa ser inferida logicamente pela base de dados será respondida afirmativamente A BC é composta por: Axiomas: informação factual básica da qual conclusões úteis podem ser derivadas Ex: ∀p, f Progenitor(p, f ) ⇔ Prole(f , p); Homem(Pedro); etc Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 2 / 34
  • 8. Bases em Lógica de Primeira Ordem Interagindo com uma BC Fazemos buscas (queries) na base Feitas por meio de sentenças lógicas em LPO Qualquer query que possa ser inferida logicamente pela base de dados será respondida afirmativamente A BC é composta por: Axiomas: informação factual básica da qual conclusões úteis podem ser derivadas Ex: ∀p, f Progenitor(p, f ) ⇔ Prole(f , p); Homem(Pedro); etc Teoremas: sentenças acarretadas pelos axiomas Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 2 / 34
  • 9. Bases em Lógica de Primeira Ordem Interagindo com uma BC Fazemos buscas (queries) na base Feitas por meio de sentenças lógicas em LPO Qualquer query que possa ser inferida logicamente pela base de dados será respondida afirmativamente A BC é composta por: Axiomas: informação factual básica da qual conclusões úteis podem ser derivadas Ex: ∀p, f Progenitor(p, f ) ⇔ Prole(f , p); Homem(Pedro); etc Teoremas: sentenças acarretadas pelos axiomas Não precisam existir na base, bastam os axiomas Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 2 / 34
  • 10. Bases em Lógica de Primeira Ordem Interagindo com uma BC Fazemos buscas (queries) na base Feitas por meio de sentenças lógicas em LPO Qualquer query que possa ser inferida logicamente pela base de dados será respondida afirmativamente A BC é composta por: Axiomas: informação factual básica da qual conclusões úteis podem ser derivadas Ex: ∀p, f Progenitor(p, f ) ⇔ Prole(f , p); Homem(Pedro); etc Teoremas: sentenças acarretadas pelos axiomas Não precisam existir na base, bastam os axiomas Reduzem o custo computacional de derivar novas sentenças Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 2 / 34
  • 11. Lógica de Primeira Ordem Inferência Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 3 / 34
  • 12. Lógica de Primeira Ordem Inferência Como em lógica proposicional Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 3 / 34
  • 13. Lógica de Primeira Ordem Inferência Como em lógica proposicional Uma sentença pode ser inferida de uma BC sse for verdadeira em toda interpretação na qual a BC é verdadeira Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 3 / 34
  • 14. Lógica de Primeira Ordem Inferência Como em lógica proposicional Uma sentença pode ser inferida de uma BC sse for verdadeira em toda interpretação na qual a BC é verdadeira Força bruta está fora de questão Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 3 / 34
  • 15. Lógica de Primeira Ordem Inferência Como em lógica proposicional Uma sentença pode ser inferida de uma BC sse for verdadeira em toda interpretação na qual a BC é verdadeira Força bruta está fora de questão Número enorme (possivelmente ∞) de interpretações Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 3 / 34
  • 16. Lógica de Primeira Ordem Inferência Como em lógica proposicional Uma sentença pode ser inferida de uma BC sse for verdadeira em toda interpretação na qual a BC é verdadeira Força bruta está fora de questão Número enorme (possivelmente ∞) de interpretações Quantificadores ∀ e ∃ Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 3 / 34
  • 17. Lógica de Primeira Ordem Inferência Como em lógica proposicional Uma sentença pode ser inferida de uma BC sse for verdadeira em toda interpretação na qual a BC é verdadeira Força bruta está fora de questão Número enorme (possivelmente ∞) de interpretações Quantificadores ∀ e ∃ Para ∃ existe skolemização (mais adiante), contudo... Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 3 / 34
  • 18. Lógica de Primeira Ordem Inferência Como em lógica proposicional Uma sentença pode ser inferida de uma BC sse for verdadeira em toda interpretação na qual a BC é verdadeira Força bruta está fora de questão Número enorme (possivelmente ∞) de interpretações Quantificadores ∀ e ∃ Para ∃ existe skolemização (mais adiante), contudo... ∀ pode mapear a infinitos elementos, dependendo do domı́nio Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 3 / 34
  • 19. Lógica de Primeira Ordem Inferência Como em lógica proposicional Uma sentença pode ser inferida de uma BC sse for verdadeira em toda interpretação na qual a BC é verdadeira Força bruta está fora de questão Número enorme (possivelmente ∞) de interpretações Quantificadores ∀ e ∃ Para ∃ existe skolemização (mais adiante), contudo... ∀ pode mapear a infinitos elementos, dependendo do domı́nio Solução: provas Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 3 / 34
  • 20. Lógica de Primeira Ordem – Inferência Provas Há versões de primeira ordem para cada técnica vista em lógica proposicional Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 4 / 34
  • 21. Lógica de Primeira Ordem – Inferência Provas Há versões de primeira ordem para cada técnica vista em lógica proposicional Forward Chaining, Backward Chaining e Resolução Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 4 / 34
  • 22. Lógica de Primeira Ordem – Inferência Provas Há versões de primeira ordem para cada técnica vista em lógica proposicional Forward Chaining, Backward Chaining e Resolução Forward Chaining e Backward Chaining exigem que a base contenha apenas cláusulas definidas Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 4 / 34
  • 23. Lógica de Primeira Ordem – Inferência Provas Há versões de primeira ordem para cada técnica vista em lógica proposicional Forward Chaining, Backward Chaining e Resolução Forward Chaining e Backward Chaining exigem que a base contenha apenas cláusulas definidas Disjunções de literais dos quais exatamente um é positivo Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 4 / 34
  • 24. Lógica de Primeira Ordem – Inferência Provas Há versões de primeira ordem para cada técnica vista em lógica proposicional Forward Chaining, Backward Chaining e Resolução Forward Chaining e Backward Chaining exigem que a base contenha apenas cláusulas definidas Disjunções de literais dos quais exatamente um é positivo Literais Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 4 / 34
  • 25. Lógica de Primeira Ordem – Inferência Provas Há versões de primeira ordem para cada técnica vista em lógica proposicional Forward Chaining, Backward Chaining e Resolução Forward Chaining e Backward Chaining exigem que a base contenha apenas cláusulas definidas Disjunções de literais dos quais exatamente um é positivo Literais Literais em LPO podem incluir variáveis Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 4 / 34
  • 26. Lógica de Primeira Ordem – Inferência Provas Há versões de primeira ordem para cada técnica vista em lógica proposicional Forward Chaining, Backward Chaining e Resolução Forward Chaining e Backward Chaining exigem que a base contenha apenas cláusulas definidas Disjunções de literais dos quais exatamente um é positivo Literais Literais em LPO podem incluir variáveis “Amigo(Pedro)” (constante) Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 4 / 34
  • 27. Lógica de Primeira Ordem – Inferência Provas Há versões de primeira ordem para cada técnica vista em lógica proposicional Forward Chaining, Backward Chaining e Resolução Forward Chaining e Backward Chaining exigem que a base contenha apenas cláusulas definidas Disjunções de literais dos quais exatamente um é positivo Literais Literais em LPO podem incluir variáveis “Amigo(Pedro)” (constante) “Grande(x)” (variável) Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 4 / 34
  • 28. Lógica de Primeira Ordem – Inferência Provas Em qualquer técnica, expressões com variáveis são assumidas como universalmente quantificadas Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 5 / 34
  • 29. Lógica de Primeira Ordem – Inferência Provas Em qualquer técnica, expressões com variáveis são assumidas como universalmente quantificadas Ou seja, todas são naturalmente precedidas por ∀ Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 5 / 34
  • 30. Lógica de Primeira Ordem – Inferência Provas Em qualquer técnica, expressões com variáveis são assumidas como universalmente quantificadas Ou seja, todas são naturalmente precedidas por ∀ “Grande(x)” ≡ “∀x Grande(x)” (literal) Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 5 / 34
  • 31. Lógica de Primeira Ordem – Inferência Provas Em qualquer técnica, expressões com variáveis são assumidas como universalmente quantificadas Ou seja, todas são naturalmente precedidas por ∀ “Grande(x)” ≡ “∀x Grande(x)” (literal) “Tio(x, y) ⇔ Sobrinho(y, x)” ≡ “∀x, y Tio(x, y) ⇔ Sobrinho(y, x)” Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 5 / 34
  • 32. Lógica de Primeira Ordem – Inferência Provas Em qualquer técnica, expressões com variáveis são assumidas como universalmente quantificadas Ou seja, todas são naturalmente precedidas por ∀ “Grande(x)” ≡ “∀x Grande(x)” (literal) “Tio(x, y) ⇔ Sobrinho(y, x)” ≡ “∀x, y Tio(x, y) ⇔ Sobrinho(y, x)” Começaremos pela resolução, por ser mais geral Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 5 / 34
  • 33. Lógica de Primeira Ordem – Inferência Resolução Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 6 / 34
  • 34. Lógica de Primeira Ordem – Resolução Passos Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 7 / 34
  • 35. Lógica de Primeira Ordem – Resolução Passos ∀x∃y P(x) ⇒ R(x, y) ¬P(x) ∨ R(x, F(x)) 1 Converter de LPO para forma clausal Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 7 / 34
  • 36. Lógica de Primeira Ordem – Resolução Passos ∀x∃y P(x) ⇒ R(x, y) ¬P(x) ∨ R(x, F(x)) 1 Converter de LPO para forma clausal Generalização da Forma Normal Conjuntiva para LPO Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 7 / 34
  • 37. Lógica de Primeira Ordem – Resolução Passos ∀x∃y P(x) ⇒ R(x, y) ¬P(x) ∨ R(x, F(x)) 1 Converter de LPO para forma clausal Generalização da Forma Normal Conjuntiva para LPO Uma conjunção de disjunções Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 7 / 34
  • 38. Lógica de Primeira Ordem – Resolução Passos ∀x∃y P(x) ⇒ R(x, y) ¬P(x) ∨ R(x, F(x)) 1 Converter de LPO para forma clausal Generalização da Forma Normal Conjuntiva para LPO Uma conjunção de disjunções Sem quantificadores Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 7 / 34
  • 39. Lógica de Primeira Ordem – Resolução Passos ∀x∃y P(x) ⇒ R(x, y) ¬P(x) ∨ R(x, F(x)) 1 Converter de LPO para forma clausal Generalização da Forma Normal Conjuntiva para LPO Uma conjunção de disjunções Sem quantificadores 2 Determinar que variáveis substituir por quais quando da resolução Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 7 / 34
  • 40. Lógica de Primeira Ordem – Resolução Passos ∀x∃y P(x) ⇒ R(x, y) ¬P(x) ∨ R(x, F(x)) 1 Converter de LPO para forma clausal Generalização da Forma Normal Conjuntiva para LPO Uma conjunção de disjunções Sem quantificadores 2 Determinar que variáveis substituir por quais quando da resolução Processo chamado Unificação Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 7 / 34
  • 41. Lógica de Primeira Ordem – Resolução Passos ∀x∃y P(x) ⇒ R(x, y) ¬P(x) ∨ R(x, F(x)) 1 Converter de LPO para forma clausal Generalização da Forma Normal Conjuntiva para LPO Uma conjunção de disjunções Sem quantificadores 2 Determinar que variáveis substituir por quais quando da resolução Processo chamado Unificação 3 Executar a resolução Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 7 / 34
  • 42. Lógica de Primeira Ordem – Resolução Passos ∀x∃y P(x) ⇒ R(x, y) ¬P(x) ∨ R(x, F(x)) 1 Converter de LPO para forma clausal + Generalização da Forma Normal Conjuntiva para LPO Uma conjunção de disjunções Sem quantificadores 2 Determinar que variáveis substituir por quais quando da resolução Processo chamado Unificação 3 Executar a resolução Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 7 / 34
  • 43. Lógica de Primeira Ordem – Resolução Forma Normal Conjuntiva Como no caso proposicional, resolução em LPO também exige que as sentenças estejam na FNC Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 8 / 34
  • 44. Lógica de Primeira Ordem – Resolução Forma Normal Conjuntiva Como no caso proposicional, resolução em LPO também exige que as sentenças estejam na FNC Conjunção de cláusulas, onde cada cláusula é uma disjunção de literais Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 8 / 34
  • 45. Lógica de Primeira Ordem – Resolução Forma Normal Conjuntiva Como no caso proposicional, resolução em LPO também exige que as sentenças estejam na FNC Conjunção de cláusulas, onde cada cláusula é uma disjunção de literais Lembrando que literais podem conter variáveis universalmente quantificadas Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 8 / 34
  • 46. Lógica de Primeira Ordem – Resolução Forma Normal Conjuntiva Como no caso proposicional, resolução em LPO também exige que as sentenças estejam na FNC Conjunção de cláusulas, onde cada cláusula é uma disjunção de literais Lembrando que literais podem conter variáveis universalmente quantificadas Também chamada de Forma Clausal Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 8 / 34
  • 47. Lógica de Primeira Ordem – Resolução Forma Normal Conjuntiva Como no caso proposicional, resolução em LPO também exige que as sentenças estejam na FNC Conjunção de cláusulas, onde cada cláusula é uma disjunção de literais Lembrando que literais podem conter variáveis universalmente quantificadas Também chamada de Forma Clausal Também como no caso proposicional, toda sentença em LPO pode ser convertida em uma sentença inferencialmente equivalente na FNC Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 8 / 34
  • 48. Lógica de Primeira Ordem – Resolução Equivalência Inferencial Duas sentenças são tidas como inferencialmente equivalentes quando uma for satisfatı́vel sse a outra for satisfatı́vel também Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 9 / 34
  • 49. Lógica de Primeira Ordem – Resolução Equivalência Inferencial Duas sentenças são tidas como inferencialmente equivalentes quando uma for satisfatı́vel sse a outra for satisfatı́vel também Alternativamente, uma será insatisfatı́vel somente quando a outra também o for Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 9 / 34
  • 50. Lógica de Primeira Ordem – Resolução Equivalência Inferencial Duas sentenças são tidas como inferencialmente equivalentes quando uma for satisfatı́vel sse a outra for satisfatı́vel também Alternativamente, uma será insatisfatı́vel somente quando a outra também o for A ` B e B ` A Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 9 / 34
  • 51. Lógica de Primeira Ordem – Resolução Equivalência Inferencial Duas sentenças são tidas como inferencialmente equivalentes quando uma for satisfatı́vel sse a outra for satisfatı́vel também Alternativamente, uma será insatisfatı́vel somente quando a outra também o for A ` B e B ` A Elas não precisam ser logicamente equivalentes Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 9 / 34
  • 52. Lógica de Primeira Ordem – Resolução Equivalência Inferencial Duas sentenças são tidas como inferencialmente equivalentes quando uma for satisfatı́vel sse a outra for satisfatı́vel também Alternativamente, uma será insatisfatı́vel somente quando a outra também o for A ` B e B ` A Elas não precisam ser logicamente equivalentes Apenas permitem que o mesmo conjunto de inferências seja feito Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 9 / 34
  • 53. Lógica de Primeira Ordem – Resolução Convertendo para Forma Clausal Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 10 / 34
  • 54. Lógica de Primeira Ordem – Resolução Convertendo para Forma Clausal 1 Elimine implicações Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 10 / 34
  • 55. Lógica de Primeira Ordem – Resolução Convertendo para Forma Clausal α ⇔ β ≡ (α ⇒ β) ∧ (β ⇒ α) α ⇒ β ≡ ¬α ∨ β 1 Elimine implicações Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 10 / 34
  • 56. Lógica de Primeira Ordem – Resolução Convertendo para Forma Clausal α ⇔ β ≡ (α ⇒ β) ∧ (β ⇒ α) α ⇒ β ≡ ¬α ∨ β 1 Elimine implicações 2 Mova a negação “para dentro” Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 10 / 34
  • 57. Lógica de Primeira Ordem – Resolução Convertendo para Forma Clausal α ⇔ β ≡ (α ⇒ β) ∧ (β ⇒ α) α ⇒ β ≡ ¬α ∨ β 1 Elimine implicações 2 Mova a negação “para dentro” Leis de de Morgan Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 10 / 34
  • 58. Lógica de Primeira Ordem – Resolução Convertendo para Forma Clausal α ⇔ β ≡ (α ⇒ β) ∧ (β ⇒ α) α ⇒ β ≡ ¬α ∨ β ¬(α ∨ β) ≡ ¬α ∧ ¬β ¬(α ∧ β) ≡ ¬α ∨ ¬β 1 Elimine implicações 2 Mova a negação “para dentro” Leis de de Morgan Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 10 / 34
  • 59. Lógica de Primeira Ordem – Resolução Convertendo para Forma Clausal α ⇔ β ≡ (α ⇒ β) ∧ (β ⇒ α) α ⇒ β ≡ ¬α ∨ β ¬(α ∨ β) ≡ ¬α ∧ ¬β ¬(α ∧ β) ≡ ¬α ∨ ¬β 1 Elimine implicações 2 Mova a negação “para dentro” Leis de de Morgan Eliminação de negações duplas Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 10 / 34
  • 60. Lógica de Primeira Ordem – Resolução Convertendo para Forma Clausal α ⇔ β ≡ (α ⇒ β) ∧ (β ⇒ α) α ⇒ β ≡ ¬α ∨ β ¬(α ∨ β) ≡ ¬α ∧ ¬β ¬(α ∧ β) ≡ ¬α ∨ ¬β ¬¬α ≡ α 1 Elimine implicações 2 Mova a negação “para dentro” Leis de de Morgan Eliminação de negações duplas Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 10 / 34
  • 61. Lógica de Primeira Ordem – Resolução Convertendo para Forma Clausal α ⇔ β ≡ (α ⇒ β) ∧ (β ⇒ α) α ⇒ β ≡ ¬α ∨ β ¬(α ∨ β) ≡ ¬α ∧ ¬β ¬(α ∧ β) ≡ ¬α ∨ ¬β ¬¬α ≡ α 1 Elimine implicações 2 Mova a negação “para dentro” Leis de de Morgan Eliminação de negações duplas Extensões a de Morgan Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 10 / 34
  • 62. Lógica de Primeira Ordem – Resolução Convertendo para Forma Clausal α ⇔ β ≡ (α ⇒ β) ∧ (β ⇒ α) α ⇒ β ≡ ¬α ∨ β ¬(α ∨ β) ≡ ¬α ∧ ¬β ¬(α ∧ β) ≡ ¬α ∨ ¬β ¬¬α ≡ α ¬∀x α ≡ ∃x ¬α ¬∃x α ≡ ∀x ¬α 1 Elimine implicações 2 Mova a negação “para dentro” Leis de de Morgan Eliminação de negações duplas Extensões a de Morgan Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 10 / 34
  • 63. Lógica de Primeira Ordem – Resolução Convertendo para Forma Clausal α ⇔ β ≡ (α ⇒ β) ∧ (β ⇒ α) α ⇒ β ≡ ¬α ∨ β ¬(α ∨ β) ≡ ¬α ∧ ¬β ¬(α ∧ β) ≡ ¬α ∨ ¬β ¬¬α ≡ α ¬∀x α ≡ ∃x ¬α ¬∃x α ≡ ∀x ¬α 1 Elimine implicações 2 Mova a negação “para dentro” Leis de de Morgan Eliminação de negações duplas Extensões a de Morgan 3 Padronize as variáveis Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 10 / 34
  • 64. Lógica de Primeira Ordem – Resolução Convertendo para Forma Clausal α ⇔ β ≡ (α ⇒ β) ∧ (β ⇒ α) α ⇒ β ≡ ¬α ∨ β ¬(α ∨ β) ≡ ¬α ∧ ¬β ¬(α ∧ β) ≡ ¬α ∨ ¬β ¬¬α ≡ α ¬∀x α ≡ ∃x ¬α ¬∃x α ≡ ∀x ¬α 1 Elimine implicações 2 Mova a negação “para dentro” Leis de de Morgan Eliminação de negações duplas Extensões a de Morgan 3 Padronize as variáveis Cada quantificador deve agir sobre uma variável diferente Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 10 / 34
  • 65. Lógica de Primeira Ordem – Resolução Convertendo para Forma Clausal α ⇔ β ≡ (α ⇒ β) ∧ (β ⇒ α) α ⇒ β ≡ ¬α ∨ β ¬(α ∨ β) ≡ ¬α ∧ ¬β ¬(α ∧ β) ≡ ¬α ∨ ¬β ¬¬α ≡ α ¬∀x α ≡ ∃x ¬α ¬∃x α ≡ ∀x ¬α 1 Elimine implicações 2 Mova a negação “para dentro” Leis de de Morgan Eliminação de negações duplas Extensões a de Morgan 3 Padronize as variáveis Cada quantificador deve agir sobre uma variável diferente Se a sentença usar um mesmo nome de variável duas vezes em escopos diferentes, mude o nome de uma delas Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 10 / 34
  • 66. Lógica de Primeira Ordem – Resolução Convertendo para Forma Clausal 4 Skolemize Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 11 / 34
  • 67. Lógica de Primeira Ordem – Resolução Convertendo para Forma Clausal 4 Skolemize Skolemização é o processo de remoção de quantificadores existenciais (∃) por eliminação Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 11 / 34
  • 68. Lógica de Primeira Ordem – Resolução Convertendo para Forma Clausal 4 Skolemize Skolemização é o processo de remoção de quantificadores existenciais (∃) por eliminação Deve-se a Thoralf Skolem Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 11 / 34
  • 69. Lógica de Primeira Ordem – Resolução Convertendo para Forma Clausal 4 Skolemize Skolemização é o processo de remoção de quantificadores existenciais (∃) por eliminação Deve-se a Thoralf Skolem 5 Remova quantificadores universais Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 11 / 34
  • 70. Lógica de Primeira Ordem – Resolução Convertendo para Forma Clausal 4 Skolemize Skolemização é o processo de remoção de quantificadores existenciais (∃) por eliminação Deve-se a Thoralf Skolem 5 Remova quantificadores universais Já removemos ∃ e não temos mais o problema do escopo → as variáveis restantes estão quantificadas universalmente Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 11 / 34
  • 71. Lógica de Primeira Ordem – Resolução Convertendo para Forma Clausal 4 Skolemize Skolemização é o processo de remoção de quantificadores existenciais (∃) por eliminação Deve-se a Thoralf Skolem 5 Remova quantificadores universais Já removemos ∃ e não temos mais o problema do escopo → as variáveis restantes estão quantificadas universalmente Podemos então mover os quantificadores para a esquerda e sumir com eles (FNC já assume ∀ nas variáveis) Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 11 / 34
  • 72. Lógica de Primeira Ordem – Resolução Convertendo para Forma Clausal 4 Skolemize Skolemização é o processo de remoção de quantificadores existenciais (∃) por eliminação Deve-se a Thoralf Skolem 5 Remova quantificadores universais Já removemos ∃ e não temos mais o problema do escopo → as variáveis restantes estão quantificadas universalmente Podemos então mover os quantificadores para a esquerda e sumir com eles (FNC já assume ∀ nas variáveis) 6 Distribua ∨ sobre ∧ Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 11 / 34
  • 73. Lógica de Primeira Ordem – Resolução Skolemização No caso do padrão simples “∃x P(x)”, basta substituir a variável x por uma constante inédita (não existente na base de conhecimento) Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 12 / 34
  • 74. Lógica de Primeira Ordem – Resolução Skolemização No caso do padrão simples “∃x P(x)”, basta substituir a variável x por uma constante inédita (não existente na base de conhecimento) Ex: Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 12 / 34
  • 75. Lógica de Primeira Ordem – Resolução Skolemização No caso do padrão simples “∃x P(x)”, basta substituir a variável x por uma constante inédita (não existente na base de conhecimento) Ex: ∃x Unicórnio(x) Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 12 / 34
  • 76. Lógica de Primeira Ordem – Resolução Skolemização No caso do padrão simples “∃x P(x)”, basta substituir a variável x por uma constante inédita (não existente na base de conhecimento) Ex: ∃x Unicórnio(x) Se existe um unicórnio, vamos chamá-lo de Fred Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 12 / 34
  • 77. Lógica de Primeira Ordem – Resolução Skolemização No caso do padrão simples “∃x P(x)”, basta substituir a variável x por uma constante inédita (não existente na base de conhecimento) Ex: ∃x Unicórnio(x) Se existe um unicórnio, vamos chamá-lo de Fred Funciona se não houver nenhum outro objeto chamado Fred, pois nesse caso afirmarı́amos que ele é um unicórnio Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 12 / 34
  • 78. Lógica de Primeira Ordem – Resolução Skolemização No caso do padrão simples “∃x P(x)”, basta substituir a variável x por uma constante inédita (não existente na base de conhecimento) Ex: ∃x Unicórnio(x) Se existe um unicórnio, vamos chamá-lo de Fred Funciona se não houver nenhum outro objeto chamado Fred, pois nesse caso afirmarı́amos que ele é um unicórnio Podemos então trocar ∃x Unicórnio(x) por Unicórnio(Fred) livremente Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 12 / 34
  • 79. Lógica de Primeira Ordem – Resolução Skolemização Então Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 13 / 34
  • 80. Lógica de Primeira Ordem – Resolução Skolemização Então ∃x P(x) → P(C1) Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 13 / 34
  • 81. Lógica de Primeira Ordem – Resolução Skolemização Então ∃x P(x) → P(C1) ∃x, y R(x, y) → R(C1, C2) (2 variáveis) Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 13 / 34
  • 82. Lógica de Primeira Ordem – Resolução Skolemização Então ∃x P(x) → P(C1) ∃x, y R(x, y) → R(C1, C2) (2 variáveis) ∃x P(x) ∧ Q(x) → P(C1) ∧ Q(C1) Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 13 / 34
  • 83. Lógica de Primeira Ordem – Resolução Skolemização Então ∃x P(x) → P(C1) ∃x, y R(x, y) → R(C1, C2) (2 variáveis) ∃x P(x) ∧ Q(x) → P(C1) ∧ Q(C1) Cada ocorrência da variável é mapeada ao mesmo nome Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 13 / 34
  • 84. Lógica de Primeira Ordem – Resolução Skolemização Então ∃x P(x) → P(C1) ∃x, y R(x, y) → R(C1, C2) (2 variáveis) ∃x P(x) ∧ Q(x) → P(C1) ∧ Q(C1) Cada ocorrência da variável é mapeada ao mesmo nome ∃x P(x) ∧ ∃x Q(x) → P(C1) ∧ Q(C2) Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 13 / 34
  • 85. Lógica de Primeira Ordem – Resolução Skolemização Então ∃x P(x) → P(C1) ∃x, y R(x, y) → R(C1, C2) (2 variáveis) ∃x P(x) ∧ Q(x) → P(C1) ∧ Q(C1) Cada ocorrência da variável é mapeada ao mesmo nome ∃x P(x) ∧ ∃x Q(x) → P(C1) ∧ Q(C2) Diferentes quantificadores exigem nomes diferentes Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 13 / 34
  • 86. Lógica de Primeira Ordem – Resolução Skolemização Então ∃x P(x) → P(C1) ∃x, y R(x, y) → R(C1, C2) (2 variáveis) ∃x P(x) ∧ Q(x) → P(C1) ∧ Q(C1) Cada ocorrência da variável é mapeada ao mesmo nome ∃x P(x) ∧ ∃x Q(x) → P(C1) ∧ Q(C2) Diferentes quantificadores exigem nomes diferentes Note que isso fica claro após a padronização: ∃x P(x) ∧ ∃x Q(x) ≡ ∃x P(x) ∧ ∃y Q(y) → P(C1) ∧ Q(C2) Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 13 / 34
  • 87. Lógica de Primeira Ordem – Resolução Skolemização ∃y∀x Ama(x, y) Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 14 / 34
  • 88. Lógica de Primeira Ordem – Resolução Skolemização ∃y∀x Ama(x, y) (Existe um y que é amado por todos) Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 14 / 34
  • 89. Lógica de Primeira Ordem – Resolução Skolemização ∃y∀x Ama(x, y) (Existe um y que é amado por todos) Skolemização padrão: ∃y∀x Ama(x, y) → ∀x Ama(x, C1) Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 14 / 34
  • 90. Lógica de Primeira Ordem – Resolução Skolemização ∃y∀x Ama(x, y) (Existe um y que é amado por todos) Skolemização padrão: ∃y∀x Ama(x, y) → ∀x Ama(x, C1) E quanto a “∀x∃y Ama(x, y)”? Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 14 / 34
  • 91. Lógica de Primeira Ordem – Resolução Skolemização ∃y∀x Ama(x, y) (Existe um y que é amado por todos) Skolemização padrão: ∃y∀x Ama(x, y) → ∀x Ama(x, C1) E quanto a “∀x∃y Ama(x, y)”? (Todo mundo ama alguém) Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 14 / 34
  • 92. Lógica de Primeira Ordem – Resolução Skolemização ∃y∀x Ama(x, y) (Existe um y que é amado por todos) Skolemização padrão: ∃y∀x Ama(x, y) → ∀x Ama(x, C1) E quanto a “∀x∃y Ama(x, y)”? (Todo mundo ama alguém) “∀x Ama(x, C1)”? Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 14 / 34
  • 93. Lógica de Primeira Ordem – Resolução Skolemização ∃y∀x Ama(x, y) (Existe um y que é amado por todos) Skolemização padrão: ∃y∀x Ama(x, y) → ∀x Ama(x, C1) E quanto a “∀x∃y Ama(x, y)”? (Todo mundo ama alguém) “∀x Ama(x, C1)”? Certamente não é “Todo mundo ama C1” que pretendı́amos dizer... Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 14 / 34
  • 94. Lógica de Primeira Ordem – Resolução Skolemização ∃y∀x Ama(x, y) (Existe um y que é amado por todos) Skolemização padrão: ∃y∀x Ama(x, y) → ∀x Ama(x, C1) E quanto a “∀x∃y Ama(x, y)”? (Todo mundo ama alguém) “∀x Ama(x, C1)”? Certamente não é “Todo mundo ama C1” que pretendı́amos dizer... Simples substituição não funciona Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 14 / 34
  • 95. Lógica de Primeira Ordem – Resolução Skolemização O que aconteceu? Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 15 / 34
  • 96. Lógica de Primeira Ordem – Resolução Skolemização O que aconteceu? Embora possamos sim dizer que “∀x∃y Ama(x, y)” se refere a um alguém especı́fico, ele o faz para cada valor de x, ou seja, potencialmente um alguém diferente para cada x Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 15 / 34
  • 97. Lógica de Primeira Ordem – Resolução Skolemização O que aconteceu? Embora possamos sim dizer que “∀x∃y Ama(x, y)” se refere a um alguém especı́fico, ele o faz para cada valor de x, ou seja, potencialmente um alguém diferente para cada x “∀x Ama(x, C1)” força que todo x ame um único sujeito Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 15 / 34
  • 98. Lógica de Primeira Ordem – Resolução Skolemização O que aconteceu? Embora possamos sim dizer que “∀x∃y Ama(x, y)” se refere a um alguém especı́fico, ele o faz para cada valor de x, ou seja, potencialmente um alguém diferente para cada x “∀x Ama(x, C1)” força que todo x ame um único sujeito Que fazer então? Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 15 / 34
  • 99. Lógica de Primeira Ordem – Resolução Skolemização O que aconteceu? Embora possamos sim dizer que “∀x∃y Ama(x, y)” se refere a um alguém especı́fico, ele o faz para cada valor de x, ou seja, potencialmente um alguém diferente para cada x “∀x Ama(x, C1)” força que todo x ame um único sujeito Que fazer então? Fazer com que a constante utilizada dependa de x Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 15 / 34
  • 100. Lógica de Primeira Ordem – Resolução Skolemização O que aconteceu? Embora possamos sim dizer que “∀x∃y Ama(x, y)” se refere a um alguém especı́fico, ele o faz para cada valor de x, ou seja, potencialmente um alguém diferente para cada x “∀x Ama(x, C1)” força que todo x ame um único sujeito Que fazer então? Fazer com que a constante utilizada dependa de x ∀x∃y Ama(x, y) → ∀x Ama(x, AmadoPor(x)) Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 15 / 34
  • 101. Lógica de Primeira Ordem – Resolução Skolemização O que aconteceu? Embora possamos sim dizer que “∀x∃y Ama(x, y)” se refere a um alguém especı́fico, ele o faz para cada valor de x, ou seja, potencialmente um alguém diferente para cada x “∀x Ama(x, C1)” força que todo x ame um único sujeito Que fazer então? Fazer com que a constante utilizada dependa de x ∀x∃y Ama(x, y) → ∀x Ama(x, AmadoPor(x)) Em vez de substituirmos por uma constante, substituı́mos por uma Função de Skolem Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 15 / 34
  • 102. Lógica de Primeira Ordem – Resolução Skolemização Função de Skolem – Regra geral: Os argumentos da função de Skolem são todas as variáveis universalmente quantificadas em cujo escopo o quantificador existencial aparecer Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 16 / 34
  • 103. Lógica de Primeira Ordem – Resolução Skolemização Função de Skolem – Regra geral: Os argumentos da função de Skolem são todas as variáveis universalmente quantificadas em cujo escopo o quantificador existencial aparecer Ex: Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 16 / 34
  • 104. Lógica de Primeira Ordem – Resolução Skolemização Função de Skolem – Regra geral: Os argumentos da função de Skolem são todas as variáveis universalmente quantificadas em cujo escopo o quantificador existencial aparecer Ex: ∀x∃y∀z∃w P(x, y, z) ∧ R(y, z, w) → ∀x∀z P(x, F(x), z) ∧ R(F(x), z, G(x, z)) Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 16 / 34
  • 105. Lógica de Primeira Ordem – Resolução Skolemização y = F(x) porque y está apenas no escopo de ∀x Função de Skolem – Regra geral: Os argumentos da função de Skolem são todas as variáveis universalmente quantificadas em cujo escopo o quantificador existencial aparecer Ex: ∀x∃y∀z∃w P(x, y, z) ∧ R(y, z, w) → ∀x∀z P(x, F(x), z) ∧ R(F(x), z, G(x, z)) Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 16 / 34
  • 106. Lógica de Primeira Ordem – Resolução Skolemização Já w = G(x, z) porque há 2 quantificadores universais (∀x e ∀z) em cujo escopo está w Função de Skolem – Regra geral: Os argumentos da função de Skolem são todas as variáveis universalmente quantificadas em cujo escopo o quantificador existencial aparecer Ex: ∀x∃y∀z∃w P(x, y, z) ∧ R(y, z, w) → ∀x∀z P(x, F(x), z) ∧ R(F(x), z, G(x, z)) Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 16 / 34
  • 107. Lógica de Primeira Ordem – Resolução Skolemização Já w = G(x, z) porque há 2 quantificadores universais (∀x e ∀z) em cujo escopo está w Função de Skolem – Regra geral: Os argumentos da função de Skolem são todas as variáveis universalmente quantificadas em cujo escopo o quantificador existencial aparecer Ex: ∀x∃y∀z∃w P(x, y, z) ∧ R(y, z, w) → ∀x∀z P(x, F(x), z) ∧ R(F(x), z, G(x, z)) A sentença Skolemizada é satisfatı́vel exatamente quando a sentença original for satisfatı́vel Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 16 / 34
  • 108. Lógica de Primeira Ordem – Resolução Convertendo para Forma Clausal: Exemplo Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 17 / 34
  • 109. Lógica de Primeira Ordem – Resolução Convertendo para Forma Clausal: Exemplo Todo mundo que ama todos os animais é amado por alguém Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 17 / 34
  • 110. Lógica de Primeira Ordem – Resolução Convertendo para Forma Clausal: Exemplo Todo mundo que ama todos os animais é amado por alguém ∀x [∀y Animal(y) ⇒ Ama(x, y)] ⇒ [∃y Ama(y, x)] Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 17 / 34
  • 111. Lógica de Primeira Ordem – Resolução Convertendo para Forma Clausal: Exemplo Todo mundo que ama todos os animais é amado por alguém ∀x [∀y Animal(y) ⇒ Ama(x, y)] ⇒ [∃y Ama(y, x)] Passos: Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 17 / 34
  • 112. Lógica de Primeira Ordem – Resolução Convertendo para Forma Clausal: Exemplo Todo mundo que ama todos os animais é amado por alguém ∀x [∀y Animal(y) ⇒ Ama(x, y)] ⇒ [∃y Ama(y, x)] Passos: 1 Elimine implicações Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 17 / 34
  • 113. Lógica de Primeira Ordem – Resolução Convertendo para Forma Clausal: Exemplo Todo mundo que ama todos os animais é amado por alguém ∀x [∀y Animal(y) ⇒ Ama(x, y)] ⇒ [∃y Ama(y, x)] Passos: 1 Elimine implicações ∀x [∀y ¬Animal(y) ∨ Ama(x, y)] ⇒ [∃y Ama(y, x)] Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 17 / 34
  • 114. Lógica de Primeira Ordem – Resolução Convertendo para Forma Clausal: Exemplo Todo mundo que ama todos os animais é amado por alguém ∀x [∀y Animal(y) ⇒ Ama(x, y)] ⇒ [∃y Ama(y, x)] Passos: 1 Elimine implicações ∀x [∀y ¬Animal(y) ∨ Ama(x, y)] ⇒ [∃y Ama(y, x)] ∀x [¬∀y ¬Animal(y) ∨ Ama(x, y)] ∨ [∃y Ama(y, x)] Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 17 / 34
  • 115. Lógica de Primeira Ordem – Resolução Convertendo para Forma Clausal: Exemplo Todo mundo que ama todos os animais é amado por alguém ∀x [∀y Animal(y) ⇒ Ama(x, y)] ⇒ [∃y Ama(y, x)] Passos: 1 Elimine implicações ∀x [∀y ¬Animal(y) ∨ Ama(x, y)] ⇒ [∃y Ama(y, x)] ∀x [¬∀y ¬Animal(y) ∨ Ama(x, y)] ∨ [∃y Ama(y, x)] 2 Mova a negação “para dentro” Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 17 / 34
  • 116. Lógica de Primeira Ordem – Resolução Convertendo para Forma Clausal: Exemplo Todo mundo que ama todos os animais é amado por alguém ∀x [∀y Animal(y) ⇒ Ama(x, y)] ⇒ [∃y Ama(y, x)] Passos: 1 Elimine implicações ∀x [∀y ¬Animal(y) ∨ Ama(x, y)] ⇒ [∃y Ama(y, x)] ∀x [¬∀y ¬Animal(y) ∨ Ama(x, y)] ∨ [∃y Ama(y, x)] 2 Mova a negação “para dentro” ∀x [∃y ¬(¬Animal(y) ∨ Ama(x, y))] ∨ [∃y Ama(y, x)] Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 17 / 34
  • 117. Lógica de Primeira Ordem – Resolução Convertendo para Forma Clausal: Exemplo Todo mundo que ama todos os animais é amado por alguém ∀x [∀y Animal(y) ⇒ Ama(x, y)] ⇒ [∃y Ama(y, x)] Passos: 1 Elimine implicações ∀x [∀y ¬Animal(y) ∨ Ama(x, y)] ⇒ [∃y Ama(y, x)] ∀x [¬∀y ¬Animal(y) ∨ Ama(x, y)] ∨ [∃y Ama(y, x)] 2 Mova a negação “para dentro” ∀x [∃y ¬(¬Animal(y) ∨ Ama(x, y))] ∨ [∃y Ama(y, x)] ∀x [∃y ¬¬Animal(y) ∧ ¬Ama(x, y)] ∨ [∃y Ama(y, x)] Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 17 / 34
  • 118. Lógica de Primeira Ordem – Resolução Convertendo para Forma Clausal: Exemplo Todo mundo que ama todos os animais é amado por alguém ∀x [∀y Animal(y) ⇒ Ama(x, y)] ⇒ [∃y Ama(y, x)] Passos: 1 Elimine implicações ∀x [∀y ¬Animal(y) ∨ Ama(x, y)] ⇒ [∃y Ama(y, x)] ∀x [¬∀y ¬Animal(y) ∨ Ama(x, y)] ∨ [∃y Ama(y, x)] 2 Mova a negação “para dentro” ∀x [∃y ¬(¬Animal(y) ∨ Ama(x, y))] ∨ [∃y Ama(y, x)] ∀x [∃y ¬¬Animal(y) ∧ ¬Ama(x, y)] ∨ [∃y Ama(y, x)] ∀x [∃y Animal(y) ∧ ¬Ama(x, y)] ∨ [∃y Ama(y, x)] Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 17 / 34
  • 119. Lógica de Primeira Ordem – Resolução Convertendo para Forma Clausal: Exemplo Passos (cont.): ∀x [∃y Animal(y) ∧ ¬Ama(x, y)] ∨ [∃y Ama(y, x)] 3 Padronize as variáveis Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 18 / 34
  • 120. Lógica de Primeira Ordem – Resolução Convertendo para Forma Clausal: Exemplo Passos (cont.): ∀x [∃y Animal(y) ∧ ¬Ama(x, y)] ∨ [∃y Ama(y, x)] 3 Padronize as variáveis ∀x [∃y Animal(y) ∧ ¬Ama(x, y)] ∨ [∃z Ama(z, x)] Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 18 / 34
  • 121. Lógica de Primeira Ordem – Resolução Convertendo para Forma Clausal: Exemplo Passos (cont.): ∀x [∃y Animal(y) ∧ ¬Ama(x, y)] ∨ [∃y Ama(y, x)] 3 Padronize as variáveis ∀x [∃y Animal(y) ∧ ¬Ama(x, y)] ∨ [∃z Ama(z, x)] 4 Skolemize Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 18 / 34
  • 122. Lógica de Primeira Ordem – Resolução Convertendo para Forma Clausal: Exemplo Passos (cont.): ∀x [∃y Animal(y) ∧ ¬Ama(x, y)] ∨ [∃y Ama(y, x)] 3 Padronize as variáveis ∀x [∃y Animal(y) ∧ ¬Ama(x, y)] ∨ [∃z Ama(z, x)] 4 Skolemize ∀x [Animal(F(x)) ∧ ¬Ama(x, F(x))] ∨ [Ama(G(x), x)] Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 18 / 34
  • 123. Lógica de Primeira Ordem – Resolução Convertendo para Forma Clausal: Exemplo Passos (cont.): ∀x [∃y Animal(y) ∧ ¬Ama(x, y)] ∨ [∃y Ama(y, x)] 3 Padronize as variáveis ∀x [∃y Animal(y) ∧ ¬Ama(x, y)] ∨ [∃z Ama(z, x)] 4 Skolemize ∀x [Animal(F(x)) ∧ ¬Ama(x, F(x))] ∨ [Ama(G(x), x)] F(x): o animal potencialmente não amado por x Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 18 / 34
  • 124. Lógica de Primeira Ordem – Resolução Convertendo para Forma Clausal: Exemplo Passos (cont.): ∀x [∃y Animal(y) ∧ ¬Ama(x, y)] ∨ [∃y Ama(y, x)] 3 Padronize as variáveis ∀x [∃y Animal(y) ∧ ¬Ama(x, y)] ∨ [∃z Ama(z, x)] 4 Skolemize ∀x [Animal(F(x)) ∧ ¬Ama(x, F(x))] ∨ [Ama(G(x), x)] F(x): o animal potencialmente não amado por x G(x): alguém que poderia amar x Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 18 / 34
  • 125. Lógica de Primeira Ordem – Resolução Convertendo para Forma Clausal: Exemplo Passos (cont.): ∀x [Animal(F(x)) ∧ ¬Ama(x, F(x))] ∨ [Ama(G(x), x)] 5 Remova quantificadores universais Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 19 / 34
  • 126. Lógica de Primeira Ordem – Resolução Convertendo para Forma Clausal: Exemplo Passos (cont.): ∀x [Animal(F(x)) ∧ ¬Ama(x, F(x))] ∨ [Ama(G(x), x)] 5 Remova quantificadores universais [Animal(F(x)) ∧ ¬Ama(x, F(x))] ∨ [Ama(G(x), x)] Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 19 / 34
  • 127. Lógica de Primeira Ordem – Resolução Convertendo para Forma Clausal: Exemplo Passos (cont.): ∀x [Animal(F(x)) ∧ ¬Ama(x, F(x))] ∨ [Ama(G(x), x)] 5 Remova quantificadores universais [Animal(F(x)) ∧ ¬Ama(x, F(x))] ∨ [Ama(G(x), x)] De fato, não foram removidos, apenas tornados implı́citos Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 19 / 34
  • 128. Lógica de Primeira Ordem – Resolução Convertendo para Forma Clausal: Exemplo Passos (cont.): ∀x [Animal(F(x)) ∧ ¬Ama(x, F(x))] ∨ [Ama(G(x), x)] 5 Remova quantificadores universais [Animal(F(x)) ∧ ¬Ama(x, F(x))] ∨ [Ama(G(x), x)] De fato, não foram removidos, apenas tornados implı́citos 6 Distribua ∨ sobre ∧ Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 19 / 34
  • 129. Lógica de Primeira Ordem – Resolução Convertendo para Forma Clausal: Exemplo Passos (cont.): ∀x [Animal(F(x)) ∧ ¬Ama(x, F(x))] ∨ [Ama(G(x), x)] 5 Remova quantificadores universais [Animal(F(x)) ∧ ¬Ama(x, F(x))] ∨ [Ama(G(x), x)] De fato, não foram removidos, apenas tornados implı́citos 6 Distribua ∨ sobre ∧ [Animal(F(x)) ∨ Ama(G(x), x)] ∧ [¬Ama(x, F(x)) ∨ Ama(G(x), x)] Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 19 / 34
  • 130. Lógica de Primeira Ordem – Resolução Convertendo para Forma Clausal: Exemplo cláusula cláusula Passos (cont.): ∀x [Animal(F(x)) ∧ ¬Ama(x, F(x))] ∨ [Ama(G(x), x)] 5 Remova quantificadores universais [Animal(F(x)) ∧ ¬Ama(x, F(x))] ∨ [Ama(G(x), x)] De fato, não foram removidos, apenas tornados implı́citos 6 Distribua ∨ sobre ∧ [Animal(F(x)) ∨ Ama(G(x), x)] ∧ [¬Ama(x, F(x)) ∨ Ama(G(x), x)] Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 19 / 34
  • 131. Lógica de Primeira Ordem – Resolução Convertendo para Forma Clausal: Exemplo cláusula cláusula Passos (cont.): ∀x [Animal(F(x)) ∧ ¬Ama(x, F(x))] ∨ [Ama(G(x), x)] 5 Remova quantificadores universais [Animal(F(x)) ∧ ¬Ama(x, F(x))] ∨ [Ama(G(x), x)] De fato, não foram removidos, apenas tornados implı́citos 6 Distribua ∨ sobre ∧ [Animal(F(x)) ∨ Ama(G(x), x)] ∧ [¬Ama(x, F(x)) ∨ Ama(G(x), x)] (Conjunção de disjunções de literais) Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 19 / 34
  • 132. Lógica de Primeira Ordem – Resolução Passos ∀x∃y P(x) ⇒ R(x, y) ¬P(x) ∨ R(x, F(x)) 1 Converter de LPO para forma clausal Generalização da Forma Normal Conjuntiva para LPO Uma conjunção de disjunções Sem quantificadores 2 Determinar que variáveis substituir por quais quando da resolução Processo chamado Unificação 3 Executar a resolução Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 20 / 34
  • 133. Lógica de Primeira Ordem – Resolução Passos ∀x∃y P(x) ⇒ R(x, y) ¬P(x) ∨ R(x, F(x)) 1 Converter de LPO para forma clausal 4 Generalização da Forma Normal Conjuntiva para LPO Uma conjunção de disjunções Sem quantificadores 2 Determinar que variáveis substituir por quais quando da resolução Processo chamado Unificação 3 Executar a resolução Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 20 / 34
  • 134. Lógica de Primeira Ordem – Resolução Passos ∀x∃y P(x) ⇒ R(x, y) ¬P(x) ∨ R(x, F(x)) 1 Converter de LPO para forma clausal 4 Generalização da Forma Normal Conjuntiva para LPO Uma conjunção de disjunções Sem quantificadores 2 Determinar que variáveis substituir por quais quando da resolução + Processo chamado Unificação 3 Executar a resolução Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 20 / 34
  • 135. Lógica de Primeira Ordem – Resolução Unificação: Substituição Para entender unificação, precisamos antes do concento de substituição Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 21 / 34
  • 136. Lógica de Primeira Ordem – Resolução Unificação: Substituição Para entender unificação, precisamos antes do concento de substituição Considere a sentença atômica P(v1, v2, . . . , vn) Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 21 / 34
  • 137. Lógica de Primeira Ordem – Resolução Unificação: Substituição Para entender unificação, precisamos antes do concento de substituição Considere a sentença atômica P(v1, v2, . . . , vn) Uma substituição é um mapeamento finito de variáveis a termos {v1/t1, v2/t2, . . . , vn/tn} em que Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 21 / 34
  • 138. Lógica de Primeira Ordem – Resolução Unificação: Substituição Para entender unificação, precisamos antes do concento de substituição Considere a sentença atômica P(v1, v2, . . . , vn) Uma substituição é um mapeamento finito de variáveis a termos {v1/t1, v2/t2, . . . , vn/tn} em que Toda e qualquer variável vi é substituı́da pelo termo ti (que pode ser uma constante, outra variável, ou função) Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 21 / 34
  • 139. Lógica de Primeira Ordem – Resolução Unificação: Substituição Para entender unificação, precisamos antes do concento de substituição Considere a sentença atômica P(v1, v2, . . . , vn) Uma substituição é um mapeamento finito de variáveis a termos {v1/t1, v2/t2, . . . , vn/tn} em que Toda e qualquer variável vi é substituı́da pelo termo ti (que pode ser uma constante, outra variável, ou função) Não pode haver mais de uma substituição para cada variável Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 21 / 34
  • 140. Lógica de Primeira Ordem – Resolução Unificação: Substituição Ex: P(x, f (y), B) Substituição Resultado Obs Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 22 / 34
  • 141. Lógica de Primeira Ordem – Resolução Unificação: Substituição Ex: P(x, f (y), B) Substituição Resultado Obs {x/z, y/w} Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 22 / 34
  • 142. Lógica de Primeira Ordem – Resolução Unificação: Substituição Ex: P(x, f (y), B) Substituição Resultado Obs {x/z, y/w} P(z, f (w), B) Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 22 / 34
  • 143. Lógica de Primeira Ordem – Resolução Unificação: Substituição Ex: P(x, f (y), B) Substituição Resultado Obs {x/z, y/w} P(z, f (w), B) Variação alfabética Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 22 / 34
  • 144. Lógica de Primeira Ordem – Resolução Unificação: Substituição Ex: P(x, f (y), B) Substituição Resultado Obs {x/z, y/w} P(z, f (w), B) Variação alfabética {y/A} Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 22 / 34
  • 145. Lógica de Primeira Ordem – Resolução Unificação: Substituição Ex: P(x, f (y), B) Substituição Resultado Obs {x/z, y/w} P(z, f (w), B) Variação alfabética {y/A} P(x, f (A), B) Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 22 / 34
  • 146. Lógica de Primeira Ordem – Resolução Unificação: Substituição Ex: P(x, f (y), B) Substituição Resultado Obs {x/z, y/w} P(z, f (w), B) Variação alfabética {y/A} P(x, f (A), B) {x/g(z), y/A} Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 22 / 34
  • 147. Lógica de Primeira Ordem – Resolução Unificação: Substituição Ex: P(x, f (y), B) Substituição Resultado Obs {x/z, y/w} P(z, f (w), B) Variação alfabética {y/A} P(x, f (A), B) {x/g(z), y/A} P(g(z), f (A), B) Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 22 / 34
  • 148. Lógica de Primeira Ordem – Resolução Unificação: Substituição Ex: P(x, f (y), B) Substituição Resultado Obs {x/z, y/w} P(z, f (w), B) Variação alfabética {y/A} P(x, f (A), B) {x/g(z), y/A} P(g(z), f (A), B) {x/C, y/A} Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 22 / 34
  • 149. Lógica de Primeira Ordem – Resolução Unificação: Substituição Ex: P(x, f (y), B) Substituição Resultado Obs {x/z, y/w} P(z, f (w), B) Variação alfabética {y/A} P(x, f (A), B) {x/g(z), y/A} P(g(z), f (A), B) {x/C, y/A} P(C, f (A), B) Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 22 / 34
  • 150. Lógica de Primeira Ordem – Resolução Unificação: Substituição Ex: P(x, f (y), B) Substituição Resultado Obs {x/z, y/w} P(z, f (w), B) Variação alfabética {y/A} P(x, f (A), B) {x/g(z), y/A} P(g(z), f (A), B) {x/C, y/A} P(C, f (A), B) Sentença constante Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 22 / 34
  • 151. Lógica de Primeira Ordem – Resolução Unificação: Substituição Ex: P(x, f (y), B) Substituição Resultado Obs {x/z, y/w} P(z, f (w), B) Variação alfabética {y/A} P(x, f (A), B) {x/g(z), y/A} P(g(z), f (A), B) {x/C, y/A} P(C, f (A), B) Sentença constante {y/A, x/y} Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 22 / 34
  • 152. Lógica de Primeira Ordem – Resolução Unificação: Substituição Ex: P(x, f (y), B) Substituição Resultado Obs {x/z, y/w} P(z, f (w), B) Variação alfabética {y/A} P(x, f (A), B) {x/g(z), y/A} P(g(z), f (A), B) {x/C, y/A} P(C, f (A), B) Sentença constante {y/A, x/y} P(A, f (A), B) Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 22 / 34
  • 153. Lógica de Primeira Ordem – Resolução Unificação: Substituição Ex: P(x, f (y), B) Substituição Resultado Obs {x/z, y/w} P(z, f (w), B) Variação alfabética {y/A} P(x, f (A), B) {x/g(z), y/A} P(g(z), f (A), B) {x/C, y/A} P(C, f (A), B) Sentença constante {y/A, x/y} P(A, f (A), B) Sentença constante Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 22 / 34
  • 154. Lógica de Primeira Ordem – Resolução Unificação: Substituição Ex: P(x, f (y), B) Substituição Resultado Obs {x/z, y/w} P(z, f (w), B) Variação alfabética {y/A} P(x, f (A), B) {x/g(z), y/A} P(g(z), f (A), B) {x/C, y/A} P(C, f (A), B) Sentença constante {y/A, x/y} P(A, f (A), B) Sentença constante Variação alfabética: Quando apenas substituı́mos por variáveis diferentes Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 22 / 34
  • 155. Lógica de Primeira Ordem – Resolução Unificação: Substituição Ex: P(x, f (y), B) Substituição Resultado Obs {x/z, y/w} P(z, f (w), B) Variação alfabética {y/A} P(x, f (A), B) {x/g(z), y/A} P(g(z), f (A), B) {x/C, y/A} P(C, f (A), B) Sentença constante {y/A, x/y} P(A, f (A), B) Sentença constante Variação alfabética: Quando apenas substituı́mos por variáveis diferentes Sentença constante (Ground instance): Sentença atômica sem variáveis Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 22 / 34
  • 156. Lógica de Primeira Ordem – Resolução Unificação: Substituição Sentenças com substituições são mais especı́ficas Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 23 / 34
  • 157. Lógica de Primeira Ordem – Resolução Unificação: Substituição Sentenças com substituições são mais especı́ficas Possuem menos interpretações sob as quais são verdadeiras Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 23 / 34
  • 158. Lógica de Primeira Ordem – Resolução Unificação: Substituição Sentenças com substituições são mais especı́ficas Possuem menos interpretações sob as quais são verdadeiras Ex: P(g(z), f (A), B) é mais especı́fica que P(x, f (y), B) Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 23 / 34
  • 159. Lógica de Primeira Ordem – Resolução Unificação: Substituição Sentenças com substituições são mais especı́ficas Possuem menos interpretações sob as quais são verdadeiras Ex: P(g(z), f (A), B) é mais especı́fica que P(x, f (y), B) Não é permitido substituir constantes ou termos compostos (funções etc) Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 23 / 34
  • 160. Lógica de Primeira Ordem – Resolução Unificação: Substituição Sentenças com substituições são mais especı́ficas Possuem menos interpretações sob as quais são verdadeiras Ex: P(g(z), f (A), B) é mais especı́fica que P(x, f (y), B) Não é permitido substituir constantes ou termos compostos (funções etc) Podemos apenas substituir as variáveis, mesmo que estas estejam dentro de um termo composto (como o y em f (y)) Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 23 / 34
  • 161. Lógica de Primeira Ordem – Resolução Unificação: Substituição Não confunda com interpretação semântica: Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 24 / 34
  • 162. Lógica de Primeira Ordem – Resolução Unificação: Substituição Não confunda com interpretação semântica: A substituição troca uma variável por um termo (sintaxe) de modo a produzir uma nova sentença Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 24 / 34
  • 163. Lógica de Primeira Ordem – Resolução Unificação: Substituição Não confunda com interpretação semântica: A substituição troca uma variável por um termo (sintaxe) de modo a produzir uma nova sentença A interpretação mapeia a variável a um objeto no domı́nio (semântica) Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 24 / 34
  • 164. Lógica de Primeira Ordem – Resolução Unificação Trata-se de encontrar uma substituição que faça com que duas expressões se igualem Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 25 / 34
  • 165. Lógica de Primeira Ordem – Resolução Unificação Trata-se de encontrar uma substituição que faça com que duas expressões se igualem Estamos interessados em modos de fazer expressões se equivalerem, em toda interpretação de seus sı́mbolos Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 25 / 34
  • 166. Lógica de Primeira Ordem – Resolução Unificação Trata-se de encontrar uma substituição que faça com que duas expressões se igualem Estamos interessados em modos de fazer expressões se equivalerem, em toda interpretação de seus sı́mbolos Expressões unificáveis: Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 25 / 34
  • 167. Lógica de Primeira Ordem – Resolução Unificação Trata-se de encontrar uma substituição que faça com que duas expressões se igualem Estamos interessados em modos de fazer expressões se equivalerem, em toda interpretação de seus sı́mbolos Expressões unificáveis: ω1 e ω2 são unificáveis sse existir uma substituição s tal que ω1 s = ω2 s Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 25 / 34
  • 168. Lógica de Primeira Ordem – Resolução Unificação Trata-se de encontrar uma substituição que faça com que duas expressões se igualem Estamos interessados em modos de fazer expressões se equivalerem, em toda interpretação de seus sı́mbolos Expressões unificáveis: ω1 e ω2 são unificáveis sse existir uma substituição s tal que ω1 s = ω2 s Se existir uma substituição s que, quando aplicada a ω1 e ω2, nos leva à mesma expressão Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 25 / 34
  • 169. Lógica de Primeira Ordem – Resolução Unificação Trata-se de encontrar uma substituição que faça com que duas expressões se igualem Estamos interessados em modos de fazer expressões se equivalerem, em toda interpretação de seus sı́mbolos Expressões unificáveis: ω1 e ω2 são unificáveis sse existir uma substituição s tal que ω1 s = ω2 s Se existir uma substituição s que, quando aplicada a ω1 e ω2, nos leva à mesma expressão s é então um unificador de ω1 e ω2 Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 25 / 34
  • 170. Lógica de Primeira Ordem – Resolução Unificação Ex: ω1 = x e ω2 = y Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 26 / 34
  • 171. Lógica de Primeira Ordem – Resolução Unificação Ex: ω1 = x e ω2 = y Unificadores: s ω1 s ω2 s Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 26 / 34
  • 172. Lógica de Primeira Ordem – Resolução Unificação Ex: ω1 = x e ω2 = y Unificadores: s ω1 s ω2 s {y/x} Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 26 / 34
  • 173. Lógica de Primeira Ordem – Resolução Unificação Ex: ω1 = x e ω2 = y Unificadores: s ω1 s ω2 s {y/x} x Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 26 / 34
  • 174. Lógica de Primeira Ordem – Resolução Unificação Ex: ω1 = x e ω2 = y Unificadores: s ω1 s ω2 s {y/x} x x Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 26 / 34
  • 175. Lógica de Primeira Ordem – Resolução Unificação Ex: ω1 = x e ω2 = y Unificadores: s ω1 s ω2 s {y/x} x x {x/y} Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 26 / 34
  • 176. Lógica de Primeira Ordem – Resolução Unificação Ex: ω1 = x e ω2 = y Unificadores: s ω1 s ω2 s {y/x} x x {x/y} y Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 26 / 34
  • 177. Lógica de Primeira Ordem – Resolução Unificação Ex: ω1 = x e ω2 = y Unificadores: s ω1 s ω2 s {y/x} x x {x/y} y y Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 26 / 34
  • 178. Lógica de Primeira Ordem – Resolução Unificação Ex: ω1 = x e ω2 = y Unificadores: s ω1 s ω2 s {y/x} x x {x/y} y y {x/f (f (A)), y/f (f (A))} Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 26 / 34
  • 179. Lógica de Primeira Ordem – Resolução Unificação Ex: ω1 = x e ω2 = y Unificadores: s ω1 s ω2 s {y/x} x x {x/y} y y {x/f (f (A)), y/f (f (A))} f (f (A)) Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 26 / 34
  • 180. Lógica de Primeira Ordem – Resolução Unificação Ex: ω1 = x e ω2 = y Unificadores: s ω1 s ω2 s {y/x} x x {x/y} y y {x/f (f (A)), y/f (f (A))} f (f (A)) f (f (A)) Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 26 / 34
  • 181. Lógica de Primeira Ordem – Resolução Unificação Ex: ω1 = x e ω2 = y Unificadores: s ω1 s ω2 s {y/x} x x {x/y} y y {x/f (f (A)), y/f (f (A))} f (f (A)) f (f (A)) {x/A, y/A} Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 26 / 34
  • 182. Lógica de Primeira Ordem – Resolução Unificação Ex: ω1 = x e ω2 = y Unificadores: s ω1 s ω2 s {y/x} x x {x/y} y y {x/f (f (A)), y/f (f (A))} f (f (A)) f (f (A)) {x/A, y/A} A Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 26 / 34
  • 183. Lógica de Primeira Ordem – Resolução Unificação Ex: ω1 = x e ω2 = y Unificadores: s ω1 s ω2 s {y/x} x x {x/y} y y {x/f (f (A)), y/f (f (A))} f (f (A)) f (f (A)) {x/A, y/A} A A Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 26 / 34
  • 184. Lógica de Primeira Ordem – Resolução Unificação Ex: ω1 = x e ω2 = y Unificadores: s ω1 s ω2 s {y/x} x x {x/y} y y {x/f (f (A)), y/f (f (A))} f (f (A)) f (f (A)) {x/A, y/A} A A Pode haver vários unificadores para o mesmo par de expressões, alguns mais gerais que outros Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 26 / 34
  • 185. Lógica de Primeira Ordem – Resolução Unificação Ex: ω1 = x e ω2 = y Unificadores: s ω1 s ω2 s {y/x} x x {x/y} y y {x/f (f (A)), y/f (f (A))} f (f (A)) f (f (A)) {x/A, y/A} A A Pode haver vários unificadores para o mesmo par de expressões, alguns mais gerais que outros Ex: {y/x} é mais geral que {x/A, y/A}, por impor menos restrições aos valores das variáveis Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 26 / 34
  • 186. Lógica de Primeira Ordem – Resolução Unificação Para um algoritmo computacional, seria desejável possuir uma única substituição – um único unificador Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 27 / 34
  • 187. Lógica de Primeira Ordem – Resolução Unificação Para um algoritmo computacional, seria desejável possuir uma única substituição – um único unificador Ocorre que, para todo par de expressões unificáveis, há um único unificador mais geral Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 27 / 34
  • 188. Lógica de Primeira Ordem – Resolução Unificação Para um algoritmo computacional, seria desejável possuir uma única substituição – um único unificador Ocorre que, para todo par de expressões unificáveis, há um único unificador mais geral Este é único até o ponto de renomeação de variáveis Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 27 / 34
  • 189. Lógica de Primeira Ordem – Resolução Unificação Para um algoritmo computacional, seria desejável possuir uma única substituição – um único unificador Ocorre que, para todo par de expressões unificáveis, há um único unificador mais geral Este é único até o ponto de renomeação de variáveis Ex: {x/Pedro} e {y/Pedro} são consideradas equivalentes Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 27 / 34
  • 190. Lógica de Primeira Ordem – Resolução Unificação Para um algoritmo computacional, seria desejável possuir uma única substituição – um único unificador Ocorre que, para todo par de expressões unificáveis, há um único unificador mais geral Este é único até o ponto de renomeação de variáveis Ex: {x/Pedro} e {y/Pedro} são consideradas equivalentes Só diferem pelo nome das variáveis Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 27 / 34
  • 191. Lógica de Primeira Ordem – Resolução Unificação Para um algoritmo computacional, seria desejável possuir uma única substituição – um único unificador Ocorre que, para todo par de expressões unificáveis, há um único unificador mais geral Este é único até o ponto de renomeação de variáveis Ex: {x/Pedro} e {y/Pedro} são consideradas equivalentes Só diferem pelo nome das variáveis Assim como {x/Pedro, y/x} e {y/Pedro, x/z} Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 27 / 34
  • 192. Lógica de Primeira Ordem – Resolução Unificador mais Geral (UMG) g é um unificador mais geral de ω1 e ω2 sse, para todo unificador s, houver um s0 tal que Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 28 / 34
  • 193. Lógica de Primeira Ordem – Resolução Unificador mais Geral (UMG) g é um unificador mais geral de ω1 e ω2 sse, para todo unificador s, houver um s0 tal que ω1 s = (ω1 g) s0 , e Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 28 / 34
  • 194. Lógica de Primeira Ordem – Resolução Unificador mais Geral (UMG) g é um unificador mais geral de ω1 e ω2 sse, para todo unificador s, houver um s0 tal que ω1 s = (ω1 g) s0 , e ω2 s = (ω2 g) s0 Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 28 / 34
  • 195. Lógica de Primeira Ordem – Resolução Unificador mais Geral (UMG) g é um unificador mais geral de ω1 e ω2 sse, para todo unificador s, houver um s0 tal que ω1 s = (ω1 g) s0 , e ω2 s = (ω2 g) s0 Ou seja, um unificador g é o mais geral se todo outro unificador s puder ser expressado como uma substituição extra s0 adicionada ao mais geral Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 28 / 34
  • 196. Lógica de Primeira Ordem – Resolução Unificador mais Geral (UMG) g é um unificador mais geral de ω1 e ω2 sse, para todo unificador s, houver um s0 tal que ω1 s = (ω1 g) s0 , e ω2 s = (ω2 g) s0 Ou seja, um unificador g é o mais geral se todo outro unificador s puder ser expressado como uma substituição extra s0 adicionada ao mais geral É então a substituição mais geral capaz de tornar as duas expressões iguais Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 28 / 34
  • 197. Lógica de Primeira Ordem – Resolução Unificador mais Geral (UMG): Exemplo ω1 ω2 UMG(σ) ω0 1 e ω0 2 P(x) P(A) {x/A} P(f (x), y, g(x)) P(f (x), x, g(x)) {y/x} (ou {x/y}) P(f (x), y, g(y)) P(f (x), z, g(x)) {y/x, z/x} P(x, B, B) P(A, y, z) {x/A, y/B, z/B} P(g(f (v)), g(u)) P(x, x) {x/g(f (v)), u/f (v)} P(x, f (x)) P(x, x) Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 29 / 34
  • 198. Lógica de Primeira Ordem – Resolução Unificador mais Geral (UMG): Exemplo ω1 ω2 UMG(σ) ω0 1 e ω0 2 P(x) P(A) {x/A} P(A) P(f (x), y, g(x)) P(f (x), x, g(x)) {y/x} (ou {x/y}) P(f (x), y, g(y)) P(f (x), z, g(x)) {y/x, z/x} P(x, B, B) P(A, y, z) {x/A, y/B, z/B} P(g(f (v)), g(u)) P(x, x) {x/g(f (v)), u/f (v)} P(x, f (x)) P(x, x) Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 29 / 34
  • 199. Lógica de Primeira Ordem – Resolução Unificador mais Geral (UMG): Exemplo ω1 ω2 UMG(σ) ω0 1 e ω0 2 P(x) P(A) {x/A} P(A) P(f (x), y, g(x)) P(f (x), x, g(x)) {y/x} (ou {x/y}) P(f (x), x, g(x)) P(f (x), y, g(y)) P(f (x), z, g(x)) {y/x, z/x} P(x, B, B) P(A, y, z) {x/A, y/B, z/B} P(g(f (v)), g(u)) P(x, x) {x/g(f (v)), u/f (v)} P(x, f (x)) P(x, x) Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 29 / 34
  • 200. Lógica de Primeira Ordem – Resolução Unificador mais Geral (UMG): Exemplo ω1 ω2 UMG(σ) ω0 1 e ω0 2 P(x) P(A) {x/A} P(A) P(f (x), y, g(x)) P(f (x), x, g(x)) {y/x} (ou {x/y}) P(f (x), x, g(x)) P(f (x), y, g(y)) P(f (x), z, g(x)) {y/x, z/x} P(f (x), x, g(x)) P(x, B, B) P(A, y, z) {x/A, y/B, z/B} P(g(f (v)), g(u)) P(x, x) {x/g(f (v)), u/f (v)} P(x, f (x)) P(x, x) Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 29 / 34
  • 201. Lógica de Primeira Ordem – Resolução Unificador mais Geral (UMG): Exemplo ω1 ω2 UMG(σ) ω0 1 e ω0 2 P(x) P(A) {x/A} P(A) P(f (x), y, g(x)) P(f (x), x, g(x)) {y/x} (ou {x/y}) P(f (x), x, g(x)) P(f (x), y, g(y)) P(f (x), z, g(x)) {y/x, z/x} P(f (x), x, g(x)) P(x, B, B) P(A, y, z) {x/A, y/B, z/B} P(A, B, B) P(g(f (v)), g(u)) P(x, x) {x/g(f (v)), u/f (v)} P(x, f (x)) P(x, x) Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 29 / 34
  • 202. Lógica de Primeira Ordem – Resolução Unificador mais Geral (UMG): Exemplo ω1 ω2 UMG(σ) ω0 1 e ω0 2 P(x) P(A) {x/A} P(A) P(f (x), y, g(x)) P(f (x), x, g(x)) {y/x} (ou {x/y}) P(f (x), x, g(x)) P(f (x), y, g(y)) P(f (x), z, g(x)) {y/x, z/x} P(f (x), x, g(x)) P(x, B, B) P(A, y, z) {x/A, y/B, z/B} P(A, B, B) P(g(f (v)), g(u)) P(x, x) {x/g(f (v)), u/f (v)} P(g(f (v)), g(f (v))) P(x, f (x)) P(x, x) Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 29 / 34
  • 203. Lógica de Primeira Ordem – Resolução Unificador mais Geral (UMG): Exemplo ω1 ω2 UMG(σ) ω0 1 e ω0 2 P(x) P(A) {x/A} P(A) P(f (x), y, g(x)) P(f (x), x, g(x)) {y/x} (ou {x/y}) P(f (x), x, g(x)) P(f (x), y, g(y)) P(f (x), z, g(x)) {y/x, z/x} P(f (x), x, g(x)) P(x, B, B) P(A, y, z) {x/A, y/B, z/B} P(A, B, B) P(g(f (v)), g(u)) P(x, x) {x/g(f (v)), u/f (v)} P(g(f (v)), g(f (v))) P(x, f (x)) P(x, x) Não há Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 29 / 34
  • 204. Lógica de Primeira Ordem – Resolução Unificador mais Geral (UMG): Funcionamento Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 30 / 34
  • 205. Lógica de Primeira Ordem – Resolução Unificador mais Geral (UMG): Funcionamento O algoritmo recursivamente compara a estrutura de duas expressões, x e y, elemento por elemento Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 30 / 34
  • 206. Lógica de Primeira Ordem – Resolução Unificador mais Geral (UMG): Funcionamento O algoritmo recursivamente compara a estrutura de duas expressões, x e y, elemento por elemento Ao longo do caminho, constrói um unificador s para as expressões Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 30 / 34
  • 207. Lógica de Primeira Ordem – Resolução Unificador mais Geral (UMG): Funcionamento O algoritmo recursivamente compara a estrutura de duas expressões, x e y, elemento por elemento Ao longo do caminho, constrói um unificador s para as expressões Falha se dois pontos correspondentes nas estruturas não baterem Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 30 / 34
  • 208. Lógica de Primeira Ordem – Resolução Unificador mais Geral (UMG): Funcionamento O algoritmo recursivamente compara a estrutura de duas expressões, x e y, elemento por elemento Ao longo do caminho, constrói um unificador s para as expressões Falha se dois pontos correspondentes nas estruturas não baterem Usa assim s para garantir que comparações futuras sejam consistentes com ligações estabelecidas anteriormente Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 30 / 34
  • 209. Lógica de Primeira Ordem – Resolução Unificador mais Geral (UMG): Funcionamento Ao comparar uma variável com um termo complexo, o algoritmo faz a checagem de ocorrência: Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 31 / 34
  • 210. Lógica de Primeira Ordem – Resolução Unificador mais Geral (UMG): Funcionamento Ao comparar uma variável com um termo complexo, o algoritmo faz a checagem de ocorrência: Verifica se essa variável já não ocorre dentro desse termo Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 31 / 34
  • 211. Lógica de Primeira Ordem – Resolução Unificador mais Geral (UMG): Funcionamento Ao comparar uma variável com um termo complexo, o algoritmo faz a checagem de ocorrência: Verifica se essa variável já não ocorre dentro desse termo Se sim, falha, pois nenhum unificador consistente pode ser construı́do Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 31 / 34
  • 212. Lógica de Primeira Ordem – Resolução Unificador mais Geral (UMG): Funcionamento Ao comparar uma variável com um termo complexo, o algoritmo faz a checagem de ocorrência: Verifica se essa variável já não ocorre dentro desse termo Se sim, falha, pois nenhum unificador consistente pode ser construı́do Ex: S(x) não pode ser unificado a S(S(x)) Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 31 / 34
  • 213. Lógica de Primeira Ordem – Resolução Unificador mais Geral (UMG): Algoritmo Função Unifica(x,y,s): substituição se s = falha então retorna falha se x = y então retorna s se x for uma variável então retorna UnificaVar(x,y,s) se y for uma variável então retorna UnificaVar(y,x,s) se x e y forem expressões compostas então retorna Unifica(args(x), args(y), Unifica(op(x),op(y),s)) se x e y forem listas então retorna Unifica(resto(x), resto(y), Unifica(primeiro(x), primeiro(y), s)) retorna falha Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 32 / 34
  • 214. Lógica de Primeira Ordem – Resolução Unificador mais Geral (UMG): Algoritmo Variável, constante, lista ou expressão composta Função Unifica(x,y,s): substituição se s = falha então retorna falha se x = y então retorna s se x for uma variável então retorna UnificaVar(x,y,s) se y for uma variável então retorna UnificaVar(y,x,s) se x e y forem expressões compostas então retorna Unifica(args(x), args(y), Unifica(op(x),op(y),s)) se x e y forem listas então retorna Unifica(resto(x), resto(y), Unifica(primeiro(x), primeiro(y), s)) retorna falha Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 32 / 34
  • 215. Lógica de Primeira Ordem – Resolução Unificador mais Geral (UMG): Algoritmo A substituição construı́da até então (no inı́cio, vazia) Função Unifica(x,y,s): substituição se s = falha então retorna falha se x = y então retorna s se x for uma variável então retorna UnificaVar(x,y,s) se y for uma variável então retorna UnificaVar(y,x,s) se x e y forem expressões compostas então retorna Unifica(args(x), args(y), Unifica(op(x),op(y),s)) se x e y forem listas então retorna Unifica(resto(x), resto(y), Unifica(primeiro(x), primeiro(y), s)) retorna falha Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 32 / 34
  • 216. Lógica de Primeira Ordem – Resolução Unificador mais Geral (UMG): Algoritmo Retorna uma substituição, se x e y forem unificáveis no contexto de s. Do contrário, falha Função Unifica(x,y,s): substituição se s = falha então retorna falha se x = y então retorna s se x for uma variável então retorna UnificaVar(x,y,s) se y for uma variável então retorna UnificaVar(y,x,s) se x e y forem expressões compostas então retorna Unifica(args(x), args(y), Unifica(op(x),op(y),s)) se x e y forem listas então retorna Unifica(resto(x), resto(y), Unifica(primeiro(x), primeiro(y), s)) retorna falha Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 32 / 34
  • 217. Lógica de Primeira Ordem – Resolução Unificador mais Geral (UMG): Algoritmo x e y contém valores ou ex- pressões idênticos (esses podem ter sido atribuı́dos a elas em UnificaVar) Função Unifica(x,y,s): substituição se s = falha então retorna falha se x = y então retorna s se x for uma variável então retorna UnificaVar(x,y,s) se y for uma variável então retorna UnificaVar(y,x,s) se x e y forem expressões compostas então retorna Unifica(args(x), args(y), Unifica(op(x),op(y),s)) se x e y forem listas então retorna Unifica(resto(x), resto(y), Unifica(primeiro(x), primeiro(y), s)) retorna falha Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 32 / 34
  • 218. Lógica de Primeira Ordem – Resolução Unificador mais Geral (UMG): Algoritmo Se x ou y forem variáveis, tenta unificá-las à outra expressão Função Unifica(x,y,s): substituição se s = falha então retorna falha se x = y então retorna s se x for uma variável então retorna UnificaVar(x,y,s) se y for uma variável então retorna UnificaVar(y,x,s) se x e y forem expressões compostas então retorna Unifica(args(x), args(y), Unifica(op(x),op(y),s)) se x e y forem listas então retorna Unifica(resto(x), resto(y), Unifica(primeiro(x), primeiro(y), s)) retorna falha Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 32 / 34
  • 219. Lógica de Primeira Ordem – Resolução Unificador mais Geral (UMG): Algoritmo UnificaVar tenta unificar a variável do primeiro argu- mento com a expressão do segundo, no contexto de s Função Unifica(x,y,s): substituição se s = falha então retorna falha se x = y então retorna s se x for uma variável então retorna UnificaVar(x,y,s) se y for uma variável então retorna UnificaVar(y,x,s) se x e y forem expressões compostas então retorna Unifica(args(x), args(y), Unifica(op(x),op(y),s)) se x e y forem listas então retorna Unifica(resto(x), resto(y), Unifica(primeiro(x), primeiro(y), s)) retorna falha Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 32 / 34
  • 220. Lógica de Primeira Ordem – Resolução Unificador mais Geral (UMG): Algoritmo Em uma expressão composta, como F(A, B), op() captura o sı́mbolo de função F, en- quanto que args() captura a lista de argumentos (A, B) Função Unifica(x,y,s): substituição se s = falha então retorna falha se x = y então retorna s se x for uma variável então retorna UnificaVar(x,y,s) se y for uma variável então retorna UnificaVar(y,x,s) se x e y forem expressões compostas então retorna Unifica(args(x), args(y), Unifica(op(x),op(y),s)) se x e y forem listas então retorna Unifica(resto(x), resto(y), Unifica(primeiro(x), primeiro(y), s)) retorna falha Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 32 / 34
  • 221. Lógica de Primeira Ordem – Resolução Unificador mais Geral (UMG): Algoritmo Unificamos antes os operadores. E estes precisam ser idênticos Função Unifica(x,y,s): substituição se s = falha então retorna falha se x = y então retorna s se x for uma variável então retorna UnificaVar(x,y,s) se y for uma variável então retorna UnificaVar(y,x,s) se x e y forem expressões compostas então retorna Unifica(args(x), args(y), Unifica(op(x),op(y),s)) se x e y forem listas então retorna Unifica(resto(x), resto(y), Unifica(primeiro(x), primeiro(y), s)) retorna falha Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 32 / 34
  • 222. Lógica de Primeira Ordem – Resolução Unificador mais Geral (UMG): Algoritmo Unificamos então a lista de argu- mentos de x e y no contexto de s Função Unifica(x,y,s): substituição se s = falha então retorna falha se x = y então retorna s se x for uma variável então retorna UnificaVar(x,y,s) se y for uma variável então retorna UnificaVar(y,x,s) se x e y forem expressões compostas então retorna Unifica(args(x), args(y), Unifica(op(x),op(y),s)) se x e y forem listas então retorna Unifica(resto(x), resto(y), Unifica(primeiro(x), primeiro(y), s)) retorna falha Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 32 / 34
  • 223. Lógica de Primeira Ordem – Resolução Unificador mais Geral (UMG): Algoritmo No caso de listas, tenta- mos unificar o primeiro elemento, para então recur- sivamente unificar os demais Função Unifica(x,y,s): substituição se s = falha então retorna falha se x = y então retorna s se x for uma variável então retorna UnificaVar(x,y,s) se y for uma variável então retorna UnificaVar(y,x,s) se x e y forem expressões compostas então retorna Unifica(args(x), args(y), Unifica(op(x),op(y),s)) se x e y forem listas então retorna Unifica(resto(x), resto(y), Unifica(primeiro(x), primeiro(y), s)) retorna falha Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 32 / 34
  • 224. Lógica de Primeira Ordem – Resolução Unificador mais Geral (UMG): Algoritmo Nesse ponto, x e y são constantes distintas Função Unifica(x,y,s): substituição se s = falha então retorna falha se x = y então retorna s se x for uma variável então retorna UnificaVar(x,y,s) se y for uma variável então retorna UnificaVar(y,x,s) se x e y forem expressões compostas então retorna Unifica(args(x), args(y), Unifica(op(x),op(y),s)) se x e y forem listas então retorna Unifica(resto(x), resto(y), Unifica(primeiro(x), primeiro(y), s)) retorna falha Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 32 / 34
  • 225. Lógica de Primeira Ordem – Resolução Unificador mais Geral (UMG): Algoritmo Função UnificaVar(var,x,s): substituição se {var/val} ∈ s então retorna Unifica(val, x, s) se {x/val} ∈ s então retorna Unifica(var, val, s) se var ocorre em x, com a substituição s aplicada a ele (x s) então retorna falha (teste de ocorrência) Adicione {var/x} a s retorna s Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 33 / 34
  • 226. Lógica de Primeira Ordem – Resolução Unificador mais Geral (UMG): Algoritmo Variável Função UnificaVar(var,x,s): substituição se {var/val} ∈ s então retorna Unifica(val, x, s) se {x/val} ∈ s então retorna Unifica(var, val, s) se var ocorre em x, com a substituição s aplicada a ele (x s) então retorna falha (teste de ocorrência) Adicione {var/x} a s retorna s Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 33 / 34
  • 227. Lógica de Primeira Ordem – Resolução Unificador mais Geral (UMG): Algoritmo Expressão Função UnificaVar(var,x,s): substituição se {var/val} ∈ s então retorna Unifica(val, x, s) se {x/val} ∈ s então retorna Unifica(var, val, s) se var ocorre em x, com a substituição s aplicada a ele (x s) então retorna falha (teste de ocorrência) Adicione {var/x} a s retorna s Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 33 / 34
  • 228. Lógica de Primeira Ordem – Resolução Unificador mais Geral (UMG): Algoritmo Substituição atual Função UnificaVar(var,x,s): substituição se {var/val} ∈ s então retorna Unifica(val, x, s) se {x/val} ∈ s então retorna Unifica(var, val, s) se var ocorre em x, com a substituição s aplicada a ele (x s) então retorna falha (teste de ocorrência) Adicione {var/x} a s retorna s Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 33 / 34
  • 229. Lógica de Primeira Ordem – Resolução Unificador mais Geral (UMG): Algoritmo Primeiro aplicamos as substituições existen- tes em s a var e x Função UnificaVar(var,x,s): substituição se {var/val} ∈ s então retorna Unifica(val, x, s) se {x/val} ∈ s então retorna Unifica(var, val, s) se var ocorre em x, com a substituição s aplicada a ele (x s) então retorna falha (teste de ocorrência) Adicione {var/x} a s retorna s Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 33 / 34
  • 230. Lógica de Primeira Ordem – Resolução Unificador mais Geral (UMG): Algoritmo val pode ser um va- lor ou expressão Função UnificaVar(var,x,s): substituição se {var/val} ∈ s então retorna Unifica(val, x, s) se {x/val} ∈ s então retorna Unifica(var, val, s) se var ocorre em x, com a substituição s aplicada a ele (x s) então retorna falha (teste de ocorrência) Adicione {var/x} a s retorna s Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 33 / 34
  • 231. Lógica de Primeira Ordem – Resolução Unificador mais Geral (UMG): Algoritmo Unificamos então a subs- tituição recém feita à outra expressão (x ou var) Função UnificaVar(var,x,s): substituição se {var/val} ∈ s então retorna Unifica(val, x, s) se {x/val} ∈ s então retorna Unifica(var, val, s) se var ocorre em x, com a substituição s aplicada a ele (x s) então retorna falha (teste de ocorrência) Adicione {var/x} a s retorna s Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 33 / 34
  • 232. Lógica de Primeira Ordem – Resolução Unificador mais Geral (UMG): Algoritmo No inı́cio, s = ∅ → P s = P, ∀P Função UnificaVar(var,x,s): substituição se {var/val} ∈ s então retorna Unifica(val, x, s) se {x/val} ∈ s então retorna Unifica(var, val, s) se var ocorre em x, com a substituição s aplicada a ele (x s) então retorna falha (teste de ocorrência) Adicione {var/x} a s retorna s Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 33 / 34
  • 233. Lógica de Primeira Ordem – Resolução Unificador mais Geral (UMG): Algoritmo Evita laços como {x/f (x)} Função UnificaVar(var,x,s): substituição se {var/val} ∈ s então retorna Unifica(val, x, s) se {x/val} ∈ s então retorna Unifica(var, val, s) se var ocorre em x, com a substituição s aplicada a ele (x s) então retorna falha (teste de ocorrência) Adicione {var/x} a s retorna s Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 33 / 34
  • 234. Lógica de Primeira Ordem – Resolução Unificador mais Geral (UMG): Algoritmo Se nem var nem x partici- parem de s, e passarem no teste de ocorrência, então substituı́mos a variável var pelo que estiver em x, de modo a alinhá-las Função UnificaVar(var,x,s): substituição se {var/val} ∈ s então retorna Unifica(val, x, s) se {x/val} ∈ s então retorna Unifica(var, val, s) se var ocorre em x, com a substituição s aplicada a ele (x s) então retorna falha (teste de ocorrência) Adicione {var/x} a s retorna s Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 33 / 34
  • 235. Lógica de Primeira Ordem – Resolução Unificador mais Geral (UMG): Algoritmo Substituı́mos a variável justamente por ser mais flexı́vel → por aceitar atribuições facilmente Função UnificaVar(var,x,s): substituição se {var/val} ∈ s então retorna Unifica(val, x, s) se {x/val} ∈ s então retorna Unifica(var, val, s) se var ocorre em x, com a substituição s aplicada a ele (x s) então retorna falha (teste de ocorrência) Adicione {var/x} a s retorna s Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 33 / 34
  • 236. Referências Russell, S.; Norvig P. (2010): Artificial Intelligence: A Modern Approach. Prentice Hall. 3a ed. Slides do livro: http://aima.eecs.berkeley.edu/slides-pdf/ Hiż, A. (1957): Inferential Equivalence and Natural Deduction. The Journal of Symbolic Logic, 22(3). pp. 237-240. http://ocw.mit.edu/OcwWeb/Electrical-Engineering- and-Computer-Science/6-034Spring-2005/LectureNotes/index.htm http://jmvidal.cse.sc.edu/talks/learningrules/first-orderlogicsdefs.xml https: //www.sciencedirect.com/topics/computer-science/unification-algorithm http://logic.stanford.edu/intrologic/secondary/notes/chapter_12.html Norton Trevisan Roman(norton@usp.br) 5 de abril de 2019 34 / 34