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