O documento discute inferência em lógica proposicional, incluindo tipos de provas como verificação de modelos e aplicação de regras de inferência. Ele explica como aplicar regras de inferência como modus ponens e modus tollens para derivar novas sentenças a partir de premissas, formando uma prova.
1. Inteligência Artificial – ACH2016
Aula 09 – Inferência em Lógica Proposicional
Norton Trevisan Roman
(norton@usp.br)
10 de abril de 2019
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 1 / 34
2. Lógica Proposicional e Inferência
Provas: Tipos
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 2 / 34
3. Lógica Proposicional e Inferência
Provas: Tipos
Verificação do modelo:
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 2 / 34
4. Lógica Proposicional e Inferência
Provas: Tipos
Verificação do modelo:
Enumeração de entradas em uma tabela-verdade
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 2 / 34
5. Lógica Proposicional e Inferência
Provas: Tipos
Verificação do modelo:
Enumeração de entradas em uma tabela-verdade
Força bruta
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 2 / 34
6. Lógica Proposicional e Inferência
Provas: Tipos
Verificação do modelo:
Enumeração de entradas em uma tabela-verdade
Força bruta
Algoritmos para CSPs resolvem
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 2 / 34
7. Lógica Proposicional e Inferência
Provas: Tipos
Verificação do modelo:
Enumeração de entradas em uma tabela-verdade
Força bruta
Algoritmos para CSPs resolvem
A que vimos até agora
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 2 / 34
8. Lógica Proposicional e Inferência
Provas: Tipos
Verificação do modelo:
Enumeração de entradas em uma tabela-verdade
Força bruta
Algoritmos para CSPs resolvem
A que vimos até agora
Aplicação de regras de inferência:
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 2 / 34
9. Lógica Proposicional e Inferência
Provas: Tipos
Verificação do modelo:
Enumeração de entradas em uma tabela-verdade
Força bruta
Algoritmos para CSPs resolvem
A que vimos até agora
Aplicação de regras de inferência:
Geração de novas sentenças a partir de antigas
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 2 / 34
10. Lógica Proposicional e Inferência
Provas: Tipos
Verificação do modelo:
Enumeração de entradas em uma tabela-verdade
Força bruta
Algoritmos para CSPs resolvem
A que vimos até agora
Aplicação de regras de inferência:
Geração de novas sentenças a partir de antigas
A prova é uma sequência de regras de inferência
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 2 / 34
11. Lógica Proposicional e Inferência
Provas: Tipos
Verificação do modelo:
Enumeração de entradas em uma tabela-verdade
Força bruta
Algoritmos para CSPs resolvem
A que vimos até agora
Aplicação de regras de inferência:
Geração de novas sentenças a partir de antigas
A prova é uma sequência de regras de inferência
Dedução natural
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 2 / 34
12. Lógica Proposicional e Inferência
Provas: Aplicação de regras de inferência
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 3 / 34
13. Lógica Proposicional e Inferência
Provas: Aplicação de regras de inferência
Trata da derivação de novas sentenças pela
aplicação das leis da lógica proposicional
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 3 / 34
14. Lógica Proposicional e Inferência
Provas: Aplicação de regras de inferência
Trata da derivação de novas sentenças pela
aplicação das leis da lógica proposicional
São então sequências de sentenças
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 3 / 34
15. Lógica Proposicional e Inferência
Provas: Aplicação de regras de inferência
Trata da derivação de novas sentenças pela
aplicação das leis da lógica proposicional
São então sequências de sentenças
Primeiro, listamos as premissas (as sentenças na base de
conhecimento)
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 3 / 34
16. Lógica Proposicional e Inferência
Provas: Aplicação de regras de inferência
Trata da derivação de novas sentenças pela
aplicação das leis da lógica proposicional
São então sequências de sentenças
Primeiro, listamos as premissas (as sentenças na base de
conhecimento)
Em seguida, adicionamos resultados da aplicação das regras
de inferência às sentenças conhecidas
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 3 / 34
17. Lógica Proposicional e Inferência
Provas: Aplicação de regras de inferência
Trata da derivação de novas sentenças pela
aplicação das leis da lógica proposicional
São então sequências de sentenças
Primeiro, listamos as premissas (as sentenças na base de
conhecimento)
Em seguida, adicionamos resultados da aplicação das regras
de inferência às sentenças conhecidas
Quando chegamos à sentença Q (conclusão) desejada,
achamos uma prova que leva da base à sentença
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 3 / 34
18. Lógica Proposicional e Inferência
Provas: Aplicação de regras de inferência
E se não chegarmos a Q?
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 4 / 34
19. Lógica Proposicional e Inferência
Provas: Aplicação de regras de inferência
E se não chegarmos a Q?
Então saberemos que BC |= Q é falso
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 4 / 34
20. Lógica Proposicional e Inferência
Provas: Aplicação de regras de inferência
E se não chegarmos a Q?
Então saberemos que BC |= Q é falso
Mas não sabemos nada de Q
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 4 / 34
21. Lógica Proposicional e Inferência
Provas: Aplicação de regras de inferência
E se não chegarmos a Q?
Então saberemos que BC |= Q é falso
Mas não sabemos nada de Q
Sabemos que da base não deduzimos Q
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 4 / 34
22. Lógica Proposicional e Inferência
Provas: Aplicação de regras de inferência
E se não chegarmos a Q?
Então saberemos que BC |= Q é falso
Mas não sabemos nada de Q
Sabemos que da base não deduzimos Q
Exemplo:
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 4 / 34
23. Lógica Proposicional e Inferência
Provas: Aplicação de regras de inferência
E se não chegarmos a Q?
Então saberemos que BC |= Q é falso
Mas não sabemos nada de Q
Sabemos que da base não deduzimos Q
Exemplo:
Dado todo seu conhecimento sobre a sala de aula, está
caindo um meteorito em marte?
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 4 / 34
24. Lógica Proposicional e Inferência
Provas: Aplicação de regras de inferência
E se não chegarmos a Q?
Então saberemos que BC |= Q é falso
Mas não sabemos nada de Q
Sabemos que da base não deduzimos Q
Exemplo:
Dado todo seu conhecimento sobre a sala de aula, está
caindo um meteorito em marte?
BC |= Q = Falso
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 4 / 34
25. Lógica Proposicional e Inferência
Regras de inferência
Modus Ponens
(modo que afirma)
Proposto por Aristóteles
α → β
α
β
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 5 / 34
26. Lógica Proposicional e Inferência
Regras de inferência
Premissas
Modus Ponens
(modo que afirma)
Proposto por Aristóteles
α → β
α
β
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 5 / 34
27. Lógica Proposicional e Inferência
Regras de inferência
Conclusão
Modus Ponens
(modo que afirma)
Proposto por Aristóteles
α → β
α
β
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 5 / 34
28. Lógica Proposicional e Inferência
Regras de inferência
Modus Ponens
(modo que afirma)
Proposto por Aristóteles
α → β
α
β
Modus Tollens
(modo que nega)
α → β
¬β
¬α
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 5 / 34
29. Lógica Proposicional e Inferência
Regras de inferência
Introdução de E
α
β
α ∧ β
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 6 / 34
30. Lógica Proposicional e Inferência
Regras de inferência
Introdução de E
α
β
α ∧ β
Eliminação de E
α ∧ β
α
α ∧ β
β
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 6 / 34
31. Lógica Proposicional e Inferência
Regras de inferência: Exemplo
Prove S
Passo Fórmula Regra
1 P ∧ Q (premissa)
2 P → R (premissa)
3 (Q ∧ R) → S (premissa)
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 7 / 34
32. Lógica Proposicional e Inferência
Regras de inferência: Exemplo
Prove S
Passo Fórmula Regra
1 P ∧ Q (premissa)
2 P → R (premissa)
3 (Q ∧ R) → S (premissa)
4 P eliminação de E em 1
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 7 / 34
33. Lógica Proposicional e Inferência
Regras de inferência: Exemplo
Prove S
Passo Fórmula Regra
1 P ∧ Q (premissa)
2 P → R (premissa)
3 (Q ∧ R) → S (premissa)
4 P eliminação de E em 1
5 R modus ponens em 4 e 2
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 7 / 34
34. Lógica Proposicional e Inferência
Regras de inferência: Exemplo
Prove S
Passo Fórmula Regra
1 P ∧ Q (premissa)
2 P → R (premissa)
3 (Q ∧ R) → S (premissa)
4 P eliminação de E em 1
5 R modus ponens em 4 e 2
6 Q eliminação de E em 1
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 7 / 34
35. Lógica Proposicional e Inferência
Regras de inferência: Exemplo
Prove S
Passo Fórmula Regra
1 P ∧ Q (premissa)
2 P → R (premissa)
3 (Q ∧ R) → S (premissa)
4 P eliminação de E em 1
5 R modus ponens em 4 e 2
6 Q eliminação de E em 1
7 Q ∧ R introdução de E em 5 e 6
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 7 / 34
36. Lógica Proposicional e Inferência
Regras de inferência: Exemplo
Prove S
Passo Fórmula Regra
1 P ∧ Q (premissa)
2 P → R (premissa)
3 (Q ∧ R) → S (premissa)
4 P eliminação de E em 1
5 R modus ponens em 4 e 2
6 Q eliminação de E em 1
7 Q ∧ R introdução de E em 5 e 6
8 S modus ponens em 7 e 3
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 7 / 34
37. Lógica Proposicional e Inferência
Mais Regras de inferência: Equivalências lógicas
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 8 / 34
38. Lógica Proposicional e Inferência
Mais Regras de inferência: Equivalências lógicas
Idempotentes:
p ∨ p ≡ p
p ∧ p ≡ p
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 8 / 34
39. Lógica Proposicional e Inferência
Mais Regras de inferência: Equivalências lógicas
Idempotentes:
p ∨ p ≡ p
p ∧ p ≡ p
Associativas
(p ∨ q) ∨ r ≡ p ∨ (q ∨ r)
(p ∧ q) ∧ r ≡ p ∧ (q ∧ r)
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 8 / 34
40. Lógica Proposicional e Inferência
Mais Regras de inferência: Equivalências lógicas
Idempotentes:
p ∨ p ≡ p
p ∧ p ≡ p
Associativas
(p ∨ q) ∨ r ≡ p ∨ (q ∨ r)
(p ∧ q) ∧ r ≡ p ∧ (q ∧ r)
Comutativas:
p ∨ q ≡ q ∨ p
p ∧ q ≡ q ∧ p
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 8 / 34
41. Lógica Proposicional e Inferência
Mais Regras de inferência: Equivalências lógicas
Idempotentes:
p ∨ p ≡ p
p ∧ p ≡ p
Associativas
(p ∨ q) ∨ r ≡ p ∨ (q ∨ r)
(p ∧ q) ∧ r ≡ p ∧ (q ∧ r)
Comutativas:
p ∨ q ≡ q ∨ p
p ∧ q ≡ q ∧ p
Distributivas:
p∨(q∧r) ≡ (p∨q)∧(p∨r)
p∧(q∨r) ≡ (p∧q)∨(p∧r)
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 8 / 34
42. Lógica Proposicional e Inferência
Mais Regras de inferência: Equivalências lógicas
Idempotentes:
p ∨ p ≡ p
p ∧ p ≡ p
Associativas
(p ∨ q) ∨ r ≡ p ∨ (q ∨ r)
(p ∧ q) ∧ r ≡ p ∧ (q ∧ r)
Comutativas:
p ∨ q ≡ q ∨ p
p ∧ q ≡ q ∧ p
Distributivas:
p∨(q∧r) ≡ (p∨q)∧(p∨r)
p∧(q∨r) ≡ (p∧q)∨(p∧r)
Identidade:
p ∧ F ≡ F
p ∧ V ≡ p
p ∨ F ≡ p
p ∨ V ≡ V
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 8 / 34
43. Lógica Proposicional e Inferência
Mais Regras de inferência: Equivalências lógicas
Eliminação:
¬¬p ≡ p
p → q ≡ ¬p ∨ q
p ↔ q ≡ p → q ∧ q → p
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 9 / 34
44. Lógica Proposicional e Inferência
Mais Regras de inferência: Equivalências lógicas
Eliminação:
¬¬p ≡ p
p → q ≡ ¬p ∨ q
p ↔ q ≡ p → q ∧ q → p
Complementares:
p ∨ ¬p ≡ V
p ∧ ¬p ≡ F
¬F ≡ V
¬V ≡ F
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 9 / 34
45. Lógica Proposicional e Inferência
Mais Regras de inferência: Equivalências lógicas
Eliminação:
¬¬p ≡ p
p → q ≡ ¬p ∨ q
p ↔ q ≡ p → q ∧ q → p
Complementares:
p ∨ ¬p ≡ V
p ∧ ¬p ≡ F
¬F ≡ V
¬V ≡ F
Contraposição:
p → q ≡ ¬q → ¬p
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 9 / 34
46. Lógica Proposicional e Inferência
Mais Regras de inferência: Equivalências lógicas
Eliminação:
¬¬p ≡ p
p → q ≡ ¬p ∨ q
p ↔ q ≡ p → q ∧ q → p
Complementares:
p ∨ ¬p ≡ V
p ∧ ¬p ≡ F
¬F ≡ V
¬V ≡ F
Contraposição:
p → q ≡ ¬q → ¬p
De De Morgan:
¬(p ∨ q) ≡ ¬p ∧ ¬q
¬(p ∧ q) ≡ ¬p ∨ ¬q
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 9 / 34
47. Lógica Proposicional e Inferência
Mais Regras de inferência: Equivalências lógicas
Eliminação:
¬¬p ≡ p
p → q ≡ ¬p ∨ q
p ↔ q ≡ p → q ∧ q → p
Complementares:
p ∨ ¬p ≡ V
p ∧ ¬p ≡ F
¬F ≡ V
¬V ≡ F
Contraposição:
p → q ≡ ¬q → ¬p
De De Morgan:
¬(p ∨ q) ≡ ¬p ∧ ¬q
¬(p ∧ q) ≡ ¬p ∨ ¬q
Outras:
¬(p → q) ≡ p ∧ ¬q
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 9 / 34
48. Lógica Proposicional e Inferência
Cláusulas Horn
Bases de conhecimento reais geralmente são
restritas quanto à forma de suas sentenças
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 10 / 34
49. Lógica Proposicional e Inferência
Cláusulas Horn
Bases de conhecimento reais geralmente são
restritas quanto à forma de suas sentenças
Algumas contém apenas Cláusulas Definidas
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 10 / 34
50. Lógica Proposicional e Inferência
Cláusulas Horn
Bases de conhecimento reais geralmente são
restritas quanto à forma de suas sentenças
Algumas contém apenas Cláusulas Definidas
Cláusulas contendo a disjunção de literais, dos quais
exatamente um é positivo
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 10 / 34
51. Lógica Proposicional e Inferência
Cláusulas Horn
Bases de conhecimento reais geralmente são
restritas quanto à forma de suas sentenças
Algumas contém apenas Cláusulas Definidas
Cláusulas contendo a disjunção de literais, dos quais
exatamente um é positivo
Ex: ¬A ∨ ¬B ∨ C
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 10 / 34
52. Lógica Proposicional e Inferência
Cláusulas Horn
Bases de conhecimento reais geralmente são
restritas quanto à forma de suas sentenças
Algumas contém apenas Cláusulas Definidas
Cláusulas contendo a disjunção de literais, dos quais
exatamente um é positivo
Ex: ¬A ∨ ¬B ∨ C
Outras contém apenas Cláusulas Horn
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 10 / 34
53. Lógica Proposicional e Inferência
Cláusulas Horn
Bases de conhecimento reais geralmente são
restritas quanto à forma de suas sentenças
Algumas contém apenas Cláusulas Definidas
Cláusulas contendo a disjunção de literais, dos quais
exatamente um é positivo
Ex: ¬A ∨ ¬B ∨ C
Outras contém apenas Cláusulas Horn
A disjunção de literais dos quais no máximo um é positivo
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 10 / 34
54. Lógica Proposicional e Inferência
Cláusulas Horn
Bases de conhecimento reais geralmente são
restritas quanto à forma de suas sentenças
Algumas contém apenas Cláusulas Definidas
Cláusulas contendo a disjunção de literais, dos quais
exatamente um é positivo
Ex: ¬A ∨ ¬B ∨ C
Outras contém apenas Cláusulas Horn
A disjunção de literais dos quais no máximo um é positivo
Então toda cláusula definida é uma cláusula Horn
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 10 / 34
55. Lógica Proposicional e Inferência
Cláusulas?
Uma cláusula é uma disjunção de literais (positivos
ou negativos)
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 11 / 34
56. Lógica Proposicional e Inferência
Cláusulas?
Uma cláusula é uma disjunção de literais (positivos
ou negativos)
Ex: A1 ∨ ¬A2 ∨ . . . ∨ An
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 11 / 34
57. Lógica Proposicional e Inferência
Cláusulas?
Uma cláusula é uma disjunção de literais (positivos
ou negativos)
Ex: A1 ∨ ¬A2 ∨ . . . ∨ An
Um único literal também constitui uma cláusula
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 11 / 34
58. Lógica Proposicional e Inferência
Cláusulas?
Uma cláusula é uma disjunção de literais (positivos
ou negativos)
Ex: A1 ∨ ¬A2 ∨ . . . ∨ An
Um único literal também constitui uma cláusula
Nesse caso, conhecida como cláusula unitária
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 11 / 34
59. Lógica Proposicional e Inferência
Cláusulas?
Uma cláusula é uma disjunção de literais (positivos
ou negativos)
Ex: A1 ∨ ¬A2 ∨ . . . ∨ An
Um único literal também constitui uma cláusula
Nesse caso, conhecida como cláusula unitária
Ex: A1
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 11 / 34
60. Lógica Proposicional e Inferência
Cláusulas Horn
Uma cláusula Horn constitui então de
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 12 / 34
61. Lógica Proposicional e Inferência
Cláusulas Horn
Uma cláusula Horn constitui então de
Sı́mbolo literal positivo
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 12 / 34
62. Lógica Proposicional e Inferência
Cláusulas Horn
Uma cláusula Horn constitui então de
Sı́mbolo literal positivo
Ou disjunção de literais negativos
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 12 / 34
63. Lógica Proposicional e Inferência
Cláusulas Horn
Uma cláusula Horn constitui então de
Sı́mbolo literal positivo
Ou disjunção de literais negativos
¬A1 ∨ ¬A2 ∨ . . . ∨ ¬An
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 12 / 34
64. Lógica Proposicional e Inferência
Cláusulas Horn
Uma cláusula Horn constitui então de
Sı́mbolo literal positivo
Ou disjunção de literais negativos
¬A1 ∨ ¬A2 ∨ . . . ∨ ¬An
Ou (conjunção de literais positivos) ⇒ falso
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 12 / 34
65. Lógica Proposicional e Inferência
Cláusulas Horn
Uma cláusula Horn constitui então de
Sı́mbolo literal positivo
Ou disjunção de literais negativos
¬A1 ∨ ¬A2 ∨ . . . ∨ ¬An
Ou (conjunção de literais positivos) ⇒ falso
A1 ∧ A2 ∧ . . . ∧ An → falso
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 12 / 34
66. Lógica Proposicional e Inferência
Cláusulas Horn
Uma cláusula Horn constitui então de
Sı́mbolo literal positivo
Ou disjunção de literais negativos
¬A1 ∨ ¬A2 ∨ . . . ∨ ¬An
Ou (conjunção de literais positivos) ⇒ falso
A1 ∧ A2 ∧ . . . ∧ An → falso
Ou disjunção de literais negativos com um positivo
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 12 / 34
67. Lógica Proposicional e Inferência
Cláusulas Horn
Uma cláusula Horn constitui então de
Sı́mbolo literal positivo
Ou disjunção de literais negativos
¬A1 ∨ ¬A2 ∨ . . . ∨ ¬An
Ou (conjunção de literais positivos) ⇒ falso
A1 ∧ A2 ∧ . . . ∧ An → falso
Ou disjunção de literais negativos com um positivo
¬A1 ∨ ¬A2 ∨ . . . ∨ ¬An ∨ B
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 12 / 34
68. Lógica Proposicional e Inferência
Cláusulas Horn
Uma cláusula Horn constitui então de
Sı́mbolo literal positivo
Ou disjunção de literais negativos
¬A1 ∨ ¬A2 ∨ . . . ∨ ¬An
Ou (conjunção de literais positivos) ⇒ falso
A1 ∧ A2 ∧ . . . ∧ An → falso
Ou disjunção de literais negativos com um positivo
¬A1 ∨ ¬A2 ∨ . . . ∨ ¬An ∨ B
Ou (conjunção de literais positivos) ⇒ literal positivo
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 12 / 34
69. Lógica Proposicional e Inferência
Cláusulas Horn
Uma cláusula Horn constitui então de
Sı́mbolo literal positivo
Ou disjunção de literais negativos
¬A1 ∨ ¬A2 ∨ . . . ∨ ¬An
Ou (conjunção de literais positivos) ⇒ falso
A1 ∧ A2 ∧ . . . ∧ An → falso
Ou disjunção de literais negativos com um positivo
¬A1 ∨ ¬A2 ∨ . . . ∨ ¬An ∨ B
Ou (conjunção de literais positivos) ⇒ literal positivo
A1 ∧ A2 ∧ . . . ∧ An → B
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 12 / 34
70. Lógica Proposicional e Inferência
Cláusulas Horn – Modus Ponens
Modus Ponens para a forma Horn:
α1 ∧ . . . ∧ αn → β
α1, . . . , αn
β
ou
α1 ∧ . . . ∧ αn → falso
α1, . . . , αn
falso
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 13 / 34
71. Lógica Proposicional e Inferência
Cláusulas Horn – Modus Ponens
Modus Ponens para a forma Horn:
α1 ∧ . . . ∧ αn → β
α1, . . . , αn
β
ou
α1 ∧ . . . ∧ αn → falso
α1, . . . , αn
falso
Para uma base de Cláusulas Definidas, modus ponens é
derivado por Forward Chaining ou Backward Chaining em
tempo linear com o tamanho da base.
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 13 / 34
72. Lógica Proposicional e Inferência
Cláusulas Horn: Forward Chaining
Forward Chaining determina se uma única
proposição (Q – a query) é acarretada por uma
base de cláusulas definidas.
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 14 / 34
73. Lógica Proposicional e Inferência
Cláusulas Horn: Forward Chaining
Forward Chaining determina se uma única
proposição (Q – a query) é acarretada por uma
base de cláusulas definidas.
Funcionamento:
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 14 / 34
74. Lógica Proposicional e Inferência
Cláusulas Horn: Forward Chaining
Forward Chaining determina se uma única
proposição (Q – a query) é acarretada por uma
base de cláusulas definidas.
Funcionamento:
Comece com fatos conhecidos (literais positivos)
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 14 / 34
75. Lógica Proposicional e Inferência
Cláusulas Horn: Forward Chaining
Forward Chaining determina se uma única
proposição (Q – a query) é acarretada por uma
base de cláusulas definidas.
Funcionamento:
Comece com fatos conhecidos (literais positivos)
Se todas as premissas de uma implicação são conhecidas,
adicione sua conclusão ao conjunto de fatos conhecidos
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 14 / 34
76. Lógica Proposicional e Inferência
Cláusulas Horn: Forward Chaining
Forward Chaining determina se uma única
proposição (Q – a query) é acarretada por uma
base de cláusulas definidas.
Funcionamento:
Comece com fatos conhecidos (literais positivos)
Se todas as premissas de uma implicação são conhecidas,
adicione sua conclusão ao conjunto de fatos conhecidos
Se A e B são conhecidas, e (A ∧ B) → C está na base, então C é
adicionado
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 14 / 34
77. Lógica Proposicional e Inferência
Cláusulas Horn: Forward Chaining
Forward Chaining determina se uma única
proposição (Q – a query) é acarretada por uma
base de cláusulas definidas.
Funcionamento:
Comece com fatos conhecidos (literais positivos)
Se todas as premissas de uma implicação são conhecidas,
adicione sua conclusão ao conjunto de fatos conhecidos
Se A e B são conhecidas, e (A ∧ B) → C está na base, então C é
adicionado
O processo continua até Q ser adicionada ou até não
podermos mais inferir nada
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 14 / 34
78. Lógica Proposicional e Inferência
Forward Chaining: Algoritmo
Função FORWARD CHAINING(BC, q): boolean
cont ← número de sı́mbolos em cada premissa
inferida ← inicializada com falso para todo sı́mbolo
agenda ← sı́mbolos verdadeiros na BC
enquanto agenda não estiver vazia faça
p ← retira o primeiro elemento de agenda
se p = q então retorna verdadeiro
se inferida[p] = falso então
inferida[p] ← verdadeiro
para cada cláusula c em que p ∈ PREMISSAS(c) faça
decremente cont[c]
se cont[c] = 0 então
Adicione a conclusão de c à agenda
retorna falso;
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 15 / 34
79. Lógica Proposicional e Inferência
Forward Chaining: Algoritmo
query (sı́mbolo propo-
sicional) a ser provada
Função FORWARD CHAINING(BC, q): boolean
cont ← número de sı́mbolos em cada premissa
inferida ← inicializada com falso para todo sı́mbolo
agenda ← sı́mbolos verdadeiros na BC
enquanto agenda não estiver vazia faça
p ← retira o primeiro elemento de agenda
se p = q então retorna verdadeiro
se inferida[p] = falso então
inferida[p] ← verdadeiro
para cada cláusula c em que p ∈ PREMISSAS(c) faça
decremente cont[c]
se cont[c] = 0 então
Adicione a conclusão de c à agenda
retorna falso;
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 15 / 34
80. Lógica Proposicional e Inferência
Forward Chaining: Algoritmo
tabela onde cont[c] é
o número de sı́mbolos
na premissa de c
Função FORWARD CHAINING(BC, q): boolean
cont ← número de sı́mbolos em cada premissa
inferida ← inicializada com falso para todo sı́mbolo
agenda ← sı́mbolos verdadeiros na BC
enquanto agenda não estiver vazia faça
p ← retira o primeiro elemento de agenda
se p = q então retorna verdadeiro
se inferida[p] = falso então
inferida[p] ← verdadeiro
para cada cláusula c em que p ∈ PREMISSAS(c) faça
decremente cont[c]
se cont[c] = 0 então
Adicione a conclusão de c à agenda
retorna falso;
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 15 / 34
81. Lógica Proposicional e Inferência
Forward Chaining: Algoritmo
tabela onde inferida[s]
é inicialmente falso
para todos os sı́mbolos
Função FORWARD CHAINING(BC, q): boolean
cont ← número de sı́mbolos em cada premissa
inferida ← inicializada com falso para todo sı́mbolo
agenda ← sı́mbolos verdadeiros na BC
enquanto agenda não estiver vazia faça
p ← retira o primeiro elemento de agenda
se p = q então retorna verdadeiro
se inferida[p] = falso então
inferida[p] ← verdadeiro
para cada cláusula c em que p ∈ PREMISSAS(c) faça
decremente cont[c]
se cont[c] = 0 então
Adicione a conclusão de c à agenda
retorna falso;
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 15 / 34
82. Lógica Proposicional e Inferência
Forward Chaining: Algoritmo
fila de sı́mbolos.
Inicialmente sı́mbolos
conhecidamente
verdadeiros em BC
Função FORWARD CHAINING(BC, q): boolean
cont ← número de sı́mbolos em cada premissa
inferida ← inicializada com falso para todo sı́mbolo
agenda ← sı́mbolos verdadeiros na BC
enquanto agenda não estiver vazia faça
p ← retira o primeiro elemento de agenda
se p = q então retorna verdadeiro
se inferida[p] = falso então
inferida[p] ← verdadeiro
para cada cláusula c em que p ∈ PREMISSAS(c) faça
decremente cont[c]
se cont[c] = 0 então
Adicione a conclusão de c à agenda
retorna falso;
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 15 / 34
83. Lógica Proposicional e Inferência
Forward Chaining: Algoritmo
verificamos toda
cláusula c ∈ BC
em cujas premis-
sas p aparecer
Função FORWARD CHAINING(BC, q): boolean
cont ← número de sı́mbolos em cada premissa
inferida ← inicializada com falso para todo sı́mbolo
agenda ← sı́mbolos verdadeiros na BC
enquanto agenda não estiver vazia faça
p ← retira o primeiro elemento de agenda
se p = q então retorna verdadeiro
se inferida[p] = falso então
inferida[p] ← verdadeiro
para cada cláusula c em que p ∈ PREMISSAS(c) faça
decremente cont[c]
se cont[c] = 0 então
Adicione a conclusão de c à agenda
retorna falso;
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 15 / 34
84. Lógica Proposicional e Inferência
Forward Chaining: Exemplo
BC:
SE causa danos fı́sicos, deve ser evitado F → E
SE é perigoso E morde, causa danos fı́sicos P ∧ M → F
SE tem dentes E é perigoso, morde D ∧ P → M
SE é agressivo E causa danos fı́sicos, é peri-
goso
A ∧ F → P
SE é agressivo E tem dentes, é perigoso A ∧ D → P
É agressivo A
Tem dentes D
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 16 / 34
85. Lógica Proposicional e Inferência
Forward Chaining: Exemplo
BC:
SE causa danos fı́sicos, deve ser evitado F → E
SE é perigoso E morde, causa danos fı́sicos P ∧ M → F
SE tem dentes E é perigoso, morde D ∧ P → M
SE é agressivo E causa danos fı́sicos, é peri-
goso
A ∧ F → P
SE é agressivo E tem dentes, é perigoso A ∧ D → P
É agressivo A
Tem dentes D
Query: Deve ser evitado (E = verdadeiro)?
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 16 / 34
86. Lógica Proposicional e Inferência
Forward Chaining: Algoritmo
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
BC: 1:
2:
3:
4:
5:
6:
7:
q: E
Função FORWARD CHAINING(BC, q): boolean
cont ← número de sı́mbolos em cada premissa
inferida ← inicializada com falso para todo sı́mbolo
agenda ← sı́mbolos verdadeiros na BC
enquanto agenda não estiver vazia faça
p ← retira o primeiro elemento de agenda
se p = q então
retorna verdadeiro
se inferida[p] = falso então
inferida[p] ← verdadeiro
para cada cláusula c em que
p ∈ PREMISSAS(c) faça
decremente cont[c]
se cont[c] = 0 então
Adicione a conclusão de c à agenda
retorna falso;
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 17 / 34
87. Lógica Proposicional e Inferência
Forward Chaining: Algoritmo
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
BC: 1:
2:
3:
4:
5:
6:
7:
q: E
cont: 1 2 2 2 2 0 0
1 2 3 4 5 6 7
Função FORWARD CHAINING(BC, q): boolean
cont ← número de sı́mbolos em cada premissa
inferida ← inicializada com falso para todo sı́mbolo
agenda ← sı́mbolos verdadeiros na BC
enquanto agenda não estiver vazia faça
p ← retira o primeiro elemento de agenda
se p = q então
retorna verdadeiro
se inferida[p] = falso então
inferida[p] ← verdadeiro
para cada cláusula c em que
p ∈ PREMISSAS(c) faça
decremente cont[c]
se cont[c] = 0 então
Adicione a conclusão de c à agenda
retorna falso;
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 17 / 34
88. Lógica Proposicional e Inferência
Forward Chaining: Algoritmo
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
BC: 1:
2:
3:
4:
5:
6:
7:
q: E
cont: 1 2 2 2 2 0 0
1 2 3 4 5 6 7
F F F F F F
inferida:
A D E F M P
Função FORWARD CHAINING(BC, q): boolean
cont ← número de sı́mbolos em cada premissa
inferida ← inicializada com falso para todo sı́mbolo
agenda ← sı́mbolos verdadeiros na BC
enquanto agenda não estiver vazia faça
p ← retira o primeiro elemento de agenda
se p = q então
retorna verdadeiro
se inferida[p] = falso então
inferida[p] ← verdadeiro
para cada cláusula c em que
p ∈ PREMISSAS(c) faça
decremente cont[c]
se cont[c] = 0 então
Adicione a conclusão de c à agenda
retorna falso;
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 17 / 34
89. Lógica Proposicional e Inferência
Forward Chaining: Algoritmo
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
BC: 1:
2:
3:
4:
5:
6:
7:
q: E
cont: 1 2 2 2 2 0 0
1 2 3 4 5 6 7
F F F F F F
inferida:
A D E F M P
A
agenda: D
Função FORWARD CHAINING(BC, q): boolean
cont ← número de sı́mbolos em cada premissa
inferida ← inicializada com falso para todo sı́mbolo
agenda ← sı́mbolos verdadeiros na BC
enquanto agenda não estiver vazia faça
p ← retira o primeiro elemento de agenda
se p = q então
retorna verdadeiro
se inferida[p] = falso então
inferida[p] ← verdadeiro
para cada cláusula c em que
p ∈ PREMISSAS(c) faça
decremente cont[c]
se cont[c] = 0 então
Adicione a conclusão de c à agenda
retorna falso;
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 17 / 34
90. Lógica Proposicional e Inferência
Forward Chaining: Algoritmo
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
BC: 1:
2:
3:
4:
5:
6:
7:
q: E
cont: 1 2 2 2 2 0 0
1 2 3 4 5 6 7
F F F F F F
inferida:
A D E F M P
A
agenda: D
Função FORWARD CHAINING(BC, q): boolean
cont ← número de sı́mbolos em cada premissa
inferida ← inicializada com falso para todo sı́mbolo
agenda ← sı́mbolos verdadeiros na BC
enquanto agenda não estiver vazia faça
p ← retira o primeiro elemento de agenda
se p = q então
retorna verdadeiro
se inferida[p] = falso então
inferida[p] ← verdadeiro
para cada cláusula c em que
p ∈ PREMISSAS(c) faça
decremente cont[c]
se cont[c] = 0 então
Adicione a conclusão de c à agenda
retorna falso;
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 17 / 34
91. Lógica Proposicional e Inferência
Forward Chaining: Algoritmo
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
BC: 1:
2:
3:
4:
5:
6:
7:
q: E
cont: 1 2 2 2 2 0 0
1 2 3 4 5 6 7
F F F F F F
inferida:
A D E F M P
D
agenda:
p: A
Função FORWARD CHAINING(BC, q): boolean
cont ← número de sı́mbolos em cada premissa
inferida ← inicializada com falso para todo sı́mbolo
agenda ← sı́mbolos verdadeiros na BC
enquanto agenda não estiver vazia faça
p ← retira o primeiro elemento de agenda
se p = q então
retorna verdadeiro
se inferida[p] = falso então
inferida[p] ← verdadeiro
para cada cláusula c em que
p ∈ PREMISSAS(c) faça
decremente cont[c]
se cont[c] = 0 então
Adicione a conclusão de c à agenda
retorna falso;
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 17 / 34
92. Lógica Proposicional e Inferência
Forward Chaining: Algoritmo
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
BC: 1:
2:
3:
4:
5:
6:
7:
q: E
cont: 1 2 2 2 2 0 0
1 2 3 4 5 6 7
F F F F F F
inferida:
A D E F M P
D
agenda:
p: A
Função FORWARD CHAINING(BC, q): boolean
cont ← número de sı́mbolos em cada premissa
inferida ← inicializada com falso para todo sı́mbolo
agenda ← sı́mbolos verdadeiros na BC
enquanto agenda não estiver vazia faça
p ← retira o primeiro elemento de agenda
se p = q então
retorna verdadeiro
se inferida[p] = falso então
inferida[p] ← verdadeiro
para cada cláusula c em que
p ∈ PREMISSAS(c) faça
decremente cont[c]
se cont[c] = 0 então
Adicione a conclusão de c à agenda
retorna falso;
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 17 / 34
93. Lógica Proposicional e Inferência
Forward Chaining: Algoritmo
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
BC: 1:
2:
3:
4:
5:
6:
7:
q: E
cont: 1 2 2 2 2 0 0
1 2 3 4 5 6 7
F F F F F F
inferida:
A D E F M P
D
agenda:
p: A
Função FORWARD CHAINING(BC, q): boolean
cont ← número de sı́mbolos em cada premissa
inferida ← inicializada com falso para todo sı́mbolo
agenda ← sı́mbolos verdadeiros na BC
enquanto agenda não estiver vazia faça
p ← retira o primeiro elemento de agenda
se p = q então
retorna verdadeiro
se inferida[p] = falso então
inferida[p] ← verdadeiro
para cada cláusula c em que
p ∈ PREMISSAS(c) faça
decremente cont[c]
se cont[c] = 0 então
Adicione a conclusão de c à agenda
retorna falso;
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 17 / 34
94. Lógica Proposicional e Inferência
Forward Chaining: Algoritmo
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
BC: 1:
2:
3:
4:
5:
6:
7:
q: E
cont: 1 2 2 2 2 0 0
1 2 3 4 5 6 7
V F F F F F
inferida:
A D E F M P
D
agenda:
p: A
Função FORWARD CHAINING(BC, q): boolean
cont ← número de sı́mbolos em cada premissa
inferida ← inicializada com falso para todo sı́mbolo
agenda ← sı́mbolos verdadeiros na BC
enquanto agenda não estiver vazia faça
p ← retira o primeiro elemento de agenda
se p = q então
retorna verdadeiro
se inferida[p] = falso então
inferida[p] ← verdadeiro
para cada cláusula c em que
p ∈ PREMISSAS(c) faça
decremente cont[c]
se cont[c] = 0 então
Adicione a conclusão de c à agenda
retorna falso;
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 17 / 34
95. Lógica Proposicional e Inferência
Forward Chaining: Algoritmo
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
BC: 1:
2:
3:
4:
5:
6:
7:
q: E
cont: 1 2 2 2 2 0 0
1 2 3 4 5 6 7
V F F F F F
inferida:
A D E F M P
D
agenda:
p: A c: 4
Função FORWARD CHAINING(BC, q): boolean
cont ← número de sı́mbolos em cada premissa
inferida ← inicializada com falso para todo sı́mbolo
agenda ← sı́mbolos verdadeiros na BC
enquanto agenda não estiver vazia faça
p ← retira o primeiro elemento de agenda
se p = q então
retorna verdadeiro
se inferida[p] = falso então
inferida[p] ← verdadeiro
para cada cláusula c em que
p ∈ PREMISSAS(c) faça
decremente cont[c]
se cont[c] = 0 então
Adicione a conclusão de c à agenda
retorna falso;
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 17 / 34
96. Lógica Proposicional e Inferência
Forward Chaining: Algoritmo
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
BC: 1:
2:
3:
4:
5:
6:
7:
q: E
cont: 1 2 2 1 2 0 0
1 2 3 4 5 6 7
V F F F F F
inferida:
A D E F M P
D
agenda:
p: A c: 4
Função FORWARD CHAINING(BC, q): boolean
cont ← número de sı́mbolos em cada premissa
inferida ← inicializada com falso para todo sı́mbolo
agenda ← sı́mbolos verdadeiros na BC
enquanto agenda não estiver vazia faça
p ← retira o primeiro elemento de agenda
se p = q então
retorna verdadeiro
se inferida[p] = falso então
inferida[p] ← verdadeiro
para cada cláusula c em que
p ∈ PREMISSAS(c) faça
decremente cont[c]
se cont[c] = 0 então
Adicione a conclusão de c à agenda
retorna falso;
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 17 / 34
97. Lógica Proposicional e Inferência
Forward Chaining: Algoritmo
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
BC: 1:
2:
3:
4:
5:
6:
7:
q: E
cont: 1 2 2 1 2 0 0
1 2 3 4 5 6 7
V F F F F F
inferida:
A D E F M P
D
agenda:
p: A c: 4
Função FORWARD CHAINING(BC, q): boolean
cont ← número de sı́mbolos em cada premissa
inferida ← inicializada com falso para todo sı́mbolo
agenda ← sı́mbolos verdadeiros na BC
enquanto agenda não estiver vazia faça
p ← retira o primeiro elemento de agenda
se p = q então
retorna verdadeiro
se inferida[p] = falso então
inferida[p] ← verdadeiro
para cada cláusula c em que
p ∈ PREMISSAS(c) faça
decremente cont[c]
se cont[c] = 0 então
Adicione a conclusão de c à agenda
retorna falso;
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 17 / 34
98. Lógica Proposicional e Inferência
Forward Chaining: Algoritmo
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
BC: 1:
2:
3:
4:
5:
6:
7:
q: E
cont: 1 2 2 1 2 0 0
1 2 3 4 5 6 7
V F F F F F
inferida:
A D E F M P
D
agenda:
p: A c: 5
Função FORWARD CHAINING(BC, q): boolean
cont ← número de sı́mbolos em cada premissa
inferida ← inicializada com falso para todo sı́mbolo
agenda ← sı́mbolos verdadeiros na BC
enquanto agenda não estiver vazia faça
p ← retira o primeiro elemento de agenda
se p = q então
retorna verdadeiro
se inferida[p] = falso então
inferida[p] ← verdadeiro
para cada cláusula c em que
p ∈ PREMISSAS(c) faça
decremente cont[c]
se cont[c] = 0 então
Adicione a conclusão de c à agenda
retorna falso;
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 17 / 34
99. Lógica Proposicional e Inferência
Forward Chaining: Algoritmo
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
BC: 1:
2:
3:
4:
5:
6:
7:
q: E
cont: 1 2 2 1 1 0 0
1 2 3 4 5 6 7
V F F F F F
inferida:
A D E F M P
D
agenda:
p: A c: 5
Função FORWARD CHAINING(BC, q): boolean
cont ← número de sı́mbolos em cada premissa
inferida ← inicializada com falso para todo sı́mbolo
agenda ← sı́mbolos verdadeiros na BC
enquanto agenda não estiver vazia faça
p ← retira o primeiro elemento de agenda
se p = q então
retorna verdadeiro
se inferida[p] = falso então
inferida[p] ← verdadeiro
para cada cláusula c em que
p ∈ PREMISSAS(c) faça
decremente cont[c]
se cont[c] = 0 então
Adicione a conclusão de c à agenda
retorna falso;
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 17 / 34
100. Lógica Proposicional e Inferência
Forward Chaining: Algoritmo
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
BC: 1:
2:
3:
4:
5:
6:
7:
q: E
cont: 1 2 2 1 1 0 0
1 2 3 4 5 6 7
V F F F F F
inferida:
A D E F M P
D
agenda:
p: A c: 5
Função FORWARD CHAINING(BC, q): boolean
cont ← número de sı́mbolos em cada premissa
inferida ← inicializada com falso para todo sı́mbolo
agenda ← sı́mbolos verdadeiros na BC
enquanto agenda não estiver vazia faça
p ← retira o primeiro elemento de agenda
se p = q então
retorna verdadeiro
se inferida[p] = falso então
inferida[p] ← verdadeiro
para cada cláusula c em que
p ∈ PREMISSAS(c) faça
decremente cont[c]
se cont[c] = 0 então
Adicione a conclusão de c à agenda
retorna falso;
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 17 / 34
101. Lógica Proposicional e Inferência
Forward Chaining: Algoritmo
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
BC: 1:
2:
3:
4:
5:
6:
7:
q: E
cont: 1 2 2 1 1 0 0
1 2 3 4 5 6 7
V F F F F F
inferida:
A D E F M P
D
agenda:
p: A c: 5
Função FORWARD CHAINING(BC, q): boolean
cont ← número de sı́mbolos em cada premissa
inferida ← inicializada com falso para todo sı́mbolo
agenda ← sı́mbolos verdadeiros na BC
enquanto agenda não estiver vazia faça
p ← retira o primeiro elemento de agenda
se p = q então
retorna verdadeiro
se inferida[p] = falso então
inferida[p] ← verdadeiro
para cada cláusula c em que
p ∈ PREMISSAS(c) faça
decremente cont[c]
se cont[c] = 0 então
Adicione a conclusão de c à agenda
retorna falso;
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 17 / 34
102. Lógica Proposicional e Inferência
Forward Chaining: Algoritmo
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
BC: 1:
2:
3:
4:
5:
6:
7:
q: E
cont: 1 2 2 1 1 0 0
1 2 3 4 5 6 7
V F F F F F
inferida:
A D E F M P
D
agenda:
p: A c: 5
Função FORWARD CHAINING(BC, q): boolean
cont ← número de sı́mbolos em cada premissa
inferida ← inicializada com falso para todo sı́mbolo
agenda ← sı́mbolos verdadeiros na BC
enquanto agenda não estiver vazia faça
p ← retira o primeiro elemento de agenda
se p = q então
retorna verdadeiro
se inferida[p] = falso então
inferida[p] ← verdadeiro
para cada cláusula c em que
p ∈ PREMISSAS(c) faça
decremente cont[c]
se cont[c] = 0 então
Adicione a conclusão de c à agenda
retorna falso;
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 17 / 34
103. Lógica Proposicional e Inferência
Forward Chaining: Algoritmo
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
BC: 1:
2:
3:
4:
5:
6:
7:
q: E
cont: 1 2 2 1 1 0 0
1 2 3 4 5 6 7
V F F F F F
inferida:
A D E F M P
agenda:
p: D c: 5
Função FORWARD CHAINING(BC, q): boolean
cont ← número de sı́mbolos em cada premissa
inferida ← inicializada com falso para todo sı́mbolo
agenda ← sı́mbolos verdadeiros na BC
enquanto agenda não estiver vazia faça
p ← retira o primeiro elemento de agenda
se p = q então
retorna verdadeiro
se inferida[p] = falso então
inferida[p] ← verdadeiro
para cada cláusula c em que
p ∈ PREMISSAS(c) faça
decremente cont[c]
se cont[c] = 0 então
Adicione a conclusão de c à agenda
retorna falso;
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 17 / 34
104. Lógica Proposicional e Inferência
Forward Chaining: Algoritmo
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
BC: 1:
2:
3:
4:
5:
6:
7:
q: E
cont: 1 2 2 1 1 0 0
1 2 3 4 5 6 7
V F F F F F
inferida:
A D E F M P
agenda:
p: D c: 5
Função FORWARD CHAINING(BC, q): boolean
cont ← número de sı́mbolos em cada premissa
inferida ← inicializada com falso para todo sı́mbolo
agenda ← sı́mbolos verdadeiros na BC
enquanto agenda não estiver vazia faça
p ← retira o primeiro elemento de agenda
se p = q então
retorna verdadeiro
se inferida[p] = falso então
inferida[p] ← verdadeiro
para cada cláusula c em que
p ∈ PREMISSAS(c) faça
decremente cont[c]
se cont[c] = 0 então
Adicione a conclusão de c à agenda
retorna falso;
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 17 / 34
105. Lógica Proposicional e Inferência
Forward Chaining: Algoritmo
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
BC: 1:
2:
3:
4:
5:
6:
7:
q: E
cont: 1 2 2 1 1 0 0
1 2 3 4 5 6 7
V F F F F F
inferida:
A D E F M P
agenda:
p: D c: 5
Função FORWARD CHAINING(BC, q): boolean
cont ← número de sı́mbolos em cada premissa
inferida ← inicializada com falso para todo sı́mbolo
agenda ← sı́mbolos verdadeiros na BC
enquanto agenda não estiver vazia faça
p ← retira o primeiro elemento de agenda
se p = q então
retorna verdadeiro
se inferida[p] = falso então
inferida[p] ← verdadeiro
para cada cláusula c em que
p ∈ PREMISSAS(c) faça
decremente cont[c]
se cont[c] = 0 então
Adicione a conclusão de c à agenda
retorna falso;
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 17 / 34
106. Lógica Proposicional e Inferência
Forward Chaining: Algoritmo
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
BC: 1:
2:
3:
4:
5:
6:
7:
q: E
cont: 1 2 2 1 1 0 0
1 2 3 4 5 6 7
V V F F F F
inferida:
A D E F M P
agenda:
p: D c: 5
Função FORWARD CHAINING(BC, q): boolean
cont ← número de sı́mbolos em cada premissa
inferida ← inicializada com falso para todo sı́mbolo
agenda ← sı́mbolos verdadeiros na BC
enquanto agenda não estiver vazia faça
p ← retira o primeiro elemento de agenda
se p = q então
retorna verdadeiro
se inferida[p] = falso então
inferida[p] ← verdadeiro
para cada cláusula c em que
p ∈ PREMISSAS(c) faça
decremente cont[c]
se cont[c] = 0 então
Adicione a conclusão de c à agenda
retorna falso;
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 17 / 34
107. Lógica Proposicional e Inferência
Forward Chaining: Algoritmo
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
BC: 1:
2:
3:
4:
5:
6:
7:
q: E
cont: 1 2 2 1 1 0 0
1 2 3 4 5 6 7
V V F F F F
inferida:
A D E F M P
agenda:
p: D c: 3
Função FORWARD CHAINING(BC, q): boolean
cont ← número de sı́mbolos em cada premissa
inferida ← inicializada com falso para todo sı́mbolo
agenda ← sı́mbolos verdadeiros na BC
enquanto agenda não estiver vazia faça
p ← retira o primeiro elemento de agenda
se p = q então
retorna verdadeiro
se inferida[p] = falso então
inferida[p] ← verdadeiro
para cada cláusula c em que
p ∈ PREMISSAS(c) faça
decremente cont[c]
se cont[c] = 0 então
Adicione a conclusão de c à agenda
retorna falso;
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 17 / 34
108. Lógica Proposicional e Inferência
Forward Chaining: Algoritmo
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
BC: 1:
2:
3:
4:
5:
6:
7:
q: E
cont: 1 2 1 1 1 0 0
1 2 3 4 5 6 7
V V F F F F
inferida:
A D E F M P
agenda:
p: D c: 3
Função FORWARD CHAINING(BC, q): boolean
cont ← número de sı́mbolos em cada premissa
inferida ← inicializada com falso para todo sı́mbolo
agenda ← sı́mbolos verdadeiros na BC
enquanto agenda não estiver vazia faça
p ← retira o primeiro elemento de agenda
se p = q então
retorna verdadeiro
se inferida[p] = falso então
inferida[p] ← verdadeiro
para cada cláusula c em que
p ∈ PREMISSAS(c) faça
decremente cont[c]
se cont[c] = 0 então
Adicione a conclusão de c à agenda
retorna falso;
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 17 / 34
109. Lógica Proposicional e Inferência
Forward Chaining: Algoritmo
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
BC: 1:
2:
3:
4:
5:
6:
7:
q: E
cont: 1 2 1 1 1 0 0
1 2 3 4 5 6 7
V V F F F F
inferida:
A D E F M P
agenda:
p: D c: 3
Função FORWARD CHAINING(BC, q): boolean
cont ← número de sı́mbolos em cada premissa
inferida ← inicializada com falso para todo sı́mbolo
agenda ← sı́mbolos verdadeiros na BC
enquanto agenda não estiver vazia faça
p ← retira o primeiro elemento de agenda
se p = q então
retorna verdadeiro
se inferida[p] = falso então
inferida[p] ← verdadeiro
para cada cláusula c em que
p ∈ PREMISSAS(c) faça
decremente cont[c]
se cont[c] = 0 então
Adicione a conclusão de c à agenda
retorna falso;
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 17 / 34
110. Lógica Proposicional e Inferência
Forward Chaining: Algoritmo
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
BC: 1:
2:
3:
4:
5:
6:
7:
q: E
cont: 1 2 1 1 1 0 0
1 2 3 4 5 6 7
V V F F F F
inferida:
A D E F M P
agenda:
p: D c: 5
Função FORWARD CHAINING(BC, q): boolean
cont ← número de sı́mbolos em cada premissa
inferida ← inicializada com falso para todo sı́mbolo
agenda ← sı́mbolos verdadeiros na BC
enquanto agenda não estiver vazia faça
p ← retira o primeiro elemento de agenda
se p = q então
retorna verdadeiro
se inferida[p] = falso então
inferida[p] ← verdadeiro
para cada cláusula c em que
p ∈ PREMISSAS(c) faça
decremente cont[c]
se cont[c] = 0 então
Adicione a conclusão de c à agenda
retorna falso;
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 17 / 34
111. Lógica Proposicional e Inferência
Forward Chaining: Algoritmo
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
BC: 1:
2:
3:
4:
5:
6:
7:
q: E
cont: 1 2 1 1 0 0 0
1 2 3 4 5 6 7
V V F F F F
inferida:
A D E F M P
agenda:
p: D c: 5
Função FORWARD CHAINING(BC, q): boolean
cont ← número de sı́mbolos em cada premissa
inferida ← inicializada com falso para todo sı́mbolo
agenda ← sı́mbolos verdadeiros na BC
enquanto agenda não estiver vazia faça
p ← retira o primeiro elemento de agenda
se p = q então
retorna verdadeiro
se inferida[p] = falso então
inferida[p] ← verdadeiro
para cada cláusula c em que
p ∈ PREMISSAS(c) faça
decremente cont[c]
se cont[c] = 0 então
Adicione a conclusão de c à agenda
retorna falso;
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 17 / 34
112. Lógica Proposicional e Inferência
Forward Chaining: Algoritmo
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
BC: 1:
2:
3:
4:
5:
6:
7:
q: E
cont: 1 2 1 1 0 0 0
1 2 3 4 5 6 7
V V F F F F
inferida:
A D E F M P
agenda:
p: D c: 5
Função FORWARD CHAINING(BC, q): boolean
cont ← número de sı́mbolos em cada premissa
inferida ← inicializada com falso para todo sı́mbolo
agenda ← sı́mbolos verdadeiros na BC
enquanto agenda não estiver vazia faça
p ← retira o primeiro elemento de agenda
se p = q então
retorna verdadeiro
se inferida[p] = falso então
inferida[p] ← verdadeiro
para cada cláusula c em que
p ∈ PREMISSAS(c) faça
decremente cont[c]
se cont[c] = 0 então
Adicione a conclusão de c à agenda
retorna falso;
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 17 / 34
113. Lógica Proposicional e Inferência
Forward Chaining: Algoritmo
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
BC: 1:
2:
3:
4:
5:
6:
7:
q: E
cont: 1 2 1 1 0 0 0
1 2 3 4 5 6 7
V V F F F F
inferida:
A D E F M P
P
agenda:
p: D c: 5
Função FORWARD CHAINING(BC, q): boolean
cont ← número de sı́mbolos em cada premissa
inferida ← inicializada com falso para todo sı́mbolo
agenda ← sı́mbolos verdadeiros na BC
enquanto agenda não estiver vazia faça
p ← retira o primeiro elemento de agenda
se p = q então
retorna verdadeiro
se inferida[p] = falso então
inferida[p] ← verdadeiro
para cada cláusula c em que
p ∈ PREMISSAS(c) faça
decremente cont[c]
se cont[c] = 0 então
Adicione a conclusão de c à agenda
retorna falso;
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 17 / 34
114. Lógica Proposicional e Inferência
Forward Chaining: Algoritmo
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
BC: 1:
2:
3:
4:
5:
6:
7:
q: E
cont: 1 2 1 1 0 0 0
1 2 3 4 5 6 7
V V F F F F
inferida:
A D E F M P
P
agenda:
p: D c: 5
Função FORWARD CHAINING(BC, q): boolean
cont ← número de sı́mbolos em cada premissa
inferida ← inicializada com falso para todo sı́mbolo
agenda ← sı́mbolos verdadeiros na BC
enquanto agenda não estiver vazia faça
p ← retira o primeiro elemento de agenda
se p = q então
retorna verdadeiro
se inferida[p] = falso então
inferida[p] ← verdadeiro
para cada cláusula c em que
p ∈ PREMISSAS(c) faça
decremente cont[c]
se cont[c] = 0 então
Adicione a conclusão de c à agenda
retorna falso;
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 17 / 34
115. Lógica Proposicional e Inferência
Forward Chaining: Algoritmo
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
BC: 1:
2:
3:
4:
5:
6:
7:
q: E
cont: 1 2 1 1 0 0 0
1 2 3 4 5 6 7
V V F F F F
inferida:
A D E F M P
P
agenda:
p: D c: 5
Função FORWARD CHAINING(BC, q): boolean
cont ← número de sı́mbolos em cada premissa
inferida ← inicializada com falso para todo sı́mbolo
agenda ← sı́mbolos verdadeiros na BC
enquanto agenda não estiver vazia faça
p ← retira o primeiro elemento de agenda
se p = q então
retorna verdadeiro
se inferida[p] = falso então
inferida[p] ← verdadeiro
para cada cláusula c em que
p ∈ PREMISSAS(c) faça
decremente cont[c]
se cont[c] = 0 então
Adicione a conclusão de c à agenda
retorna falso;
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 17 / 34
116. Lógica Proposicional e Inferência
Forward Chaining: Algoritmo
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
BC: 1:
2:
3:
4:
5:
6:
7:
q: E
cont: 1 2 1 1 0 0 0
1 2 3 4 5 6 7
V V F F F F
inferida:
A D E F M P
agenda:
p: P c: 5
Função FORWARD CHAINING(BC, q): boolean
cont ← número de sı́mbolos em cada premissa
inferida ← inicializada com falso para todo sı́mbolo
agenda ← sı́mbolos verdadeiros na BC
enquanto agenda não estiver vazia faça
p ← retira o primeiro elemento de agenda
se p = q então
retorna verdadeiro
se inferida[p] = falso então
inferida[p] ← verdadeiro
para cada cláusula c em que
p ∈ PREMISSAS(c) faça
decremente cont[c]
se cont[c] = 0 então
Adicione a conclusão de c à agenda
retorna falso;
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 17 / 34
117. Lógica Proposicional e Inferência
Forward Chaining: Algoritmo
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
BC: 1:
2:
3:
4:
5:
6:
7:
q: E
cont: 1 2 1 1 0 0 0
1 2 3 4 5 6 7
V V F F F F
inferida:
A D E F M P
agenda:
p: P c: 5
Função FORWARD CHAINING(BC, q): boolean
cont ← número de sı́mbolos em cada premissa
inferida ← inicializada com falso para todo sı́mbolo
agenda ← sı́mbolos verdadeiros na BC
enquanto agenda não estiver vazia faça
p ← retira o primeiro elemento de agenda
se p = q então
retorna verdadeiro
se inferida[p] = falso então
inferida[p] ← verdadeiro
para cada cláusula c em que
p ∈ PREMISSAS(c) faça
decremente cont[c]
se cont[c] = 0 então
Adicione a conclusão de c à agenda
retorna falso;
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 17 / 34
118. Lógica Proposicional e Inferência
Forward Chaining: Algoritmo
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
BC: 1:
2:
3:
4:
5:
6:
7:
q: E
cont: 1 2 1 1 0 0 0
1 2 3 4 5 6 7
V V F F F F
inferida:
A D E F M P
agenda:
p: P c: 5
Função FORWARD CHAINING(BC, q): boolean
cont ← número de sı́mbolos em cada premissa
inferida ← inicializada com falso para todo sı́mbolo
agenda ← sı́mbolos verdadeiros na BC
enquanto agenda não estiver vazia faça
p ← retira o primeiro elemento de agenda
se p = q então
retorna verdadeiro
se inferida[p] = falso então
inferida[p] ← verdadeiro
para cada cláusula c em que
p ∈ PREMISSAS(c) faça
decremente cont[c]
se cont[c] = 0 então
Adicione a conclusão de c à agenda
retorna falso;
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 17 / 34
119. Lógica Proposicional e Inferência
Forward Chaining: Algoritmo
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
BC: 1:
2:
3:
4:
5:
6:
7:
q: E
cont: 1 2 1 1 0 0 0
1 2 3 4 5 6 7
V V F F F V
inferida:
A D E F M P
agenda:
p: P c: 5
Função FORWARD CHAINING(BC, q): boolean
cont ← número de sı́mbolos em cada premissa
inferida ← inicializada com falso para todo sı́mbolo
agenda ← sı́mbolos verdadeiros na BC
enquanto agenda não estiver vazia faça
p ← retira o primeiro elemento de agenda
se p = q então
retorna verdadeiro
se inferida[p] = falso então
inferida[p] ← verdadeiro
para cada cláusula c em que
p ∈ PREMISSAS(c) faça
decremente cont[c]
se cont[c] = 0 então
Adicione a conclusão de c à agenda
retorna falso;
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 17 / 34
120. Lógica Proposicional e Inferência
Forward Chaining: Algoritmo
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
BC: 1:
2:
3:
4:
5:
6:
7:
q: E
cont: 1 2 1 1 0 0 0
1 2 3 4 5 6 7
V V F F F V
inferida:
A D E F M P
agenda:
p: P c: 2
Função FORWARD CHAINING(BC, q): boolean
cont ← número de sı́mbolos em cada premissa
inferida ← inicializada com falso para todo sı́mbolo
agenda ← sı́mbolos verdadeiros na BC
enquanto agenda não estiver vazia faça
p ← retira o primeiro elemento de agenda
se p = q então
retorna verdadeiro
se inferida[p] = falso então
inferida[p] ← verdadeiro
para cada cláusula c em que
p ∈ PREMISSAS(c) faça
decremente cont[c]
se cont[c] = 0 então
Adicione a conclusão de c à agenda
retorna falso;
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 17 / 34
121. Lógica Proposicional e Inferência
Forward Chaining: Algoritmo
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
BC: 1:
2:
3:
4:
5:
6:
7:
q: E
cont: 1 1 1 1 0 0 0
1 2 3 4 5 6 7
V V F F F V
inferida:
A D E F M P
agenda:
p: P c: 2
Função FORWARD CHAINING(BC, q): boolean
cont ← número de sı́mbolos em cada premissa
inferida ← inicializada com falso para todo sı́mbolo
agenda ← sı́mbolos verdadeiros na BC
enquanto agenda não estiver vazia faça
p ← retira o primeiro elemento de agenda
se p = q então
retorna verdadeiro
se inferida[p] = falso então
inferida[p] ← verdadeiro
para cada cláusula c em que
p ∈ PREMISSAS(c) faça
decremente cont[c]
se cont[c] = 0 então
Adicione a conclusão de c à agenda
retorna falso;
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 17 / 34
122. Lógica Proposicional e Inferência
Forward Chaining: Algoritmo
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
BC: 1:
2:
3:
4:
5:
6:
7:
q: E
cont: 1 1 1 1 0 0 0
1 2 3 4 5 6 7
V V F F F V
inferida:
A D E F M P
agenda:
p: P c: 2
Função FORWARD CHAINING(BC, q): boolean
cont ← número de sı́mbolos em cada premissa
inferida ← inicializada com falso para todo sı́mbolo
agenda ← sı́mbolos verdadeiros na BC
enquanto agenda não estiver vazia faça
p ← retira o primeiro elemento de agenda
se p = q então
retorna verdadeiro
se inferida[p] = falso então
inferida[p] ← verdadeiro
para cada cláusula c em que
p ∈ PREMISSAS(c) faça
decremente cont[c]
se cont[c] = 0 então
Adicione a conclusão de c à agenda
retorna falso;
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 17 / 34
123. Lógica Proposicional e Inferência
Forward Chaining: Algoritmo
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
BC: 1:
2:
3:
4:
5:
6:
7:
q: E
cont: 1 1 1 1 0 0 0
1 2 3 4 5 6 7
V V F F F V
inferida:
A D E F M P
agenda:
p: P c: 3
Função FORWARD CHAINING(BC, q): boolean
cont ← número de sı́mbolos em cada premissa
inferida ← inicializada com falso para todo sı́mbolo
agenda ← sı́mbolos verdadeiros na BC
enquanto agenda não estiver vazia faça
p ← retira o primeiro elemento de agenda
se p = q então
retorna verdadeiro
se inferida[p] = falso então
inferida[p] ← verdadeiro
para cada cláusula c em que
p ∈ PREMISSAS(c) faça
decremente cont[c]
se cont[c] = 0 então
Adicione a conclusão de c à agenda
retorna falso;
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 17 / 34
124. Lógica Proposicional e Inferência
Forward Chaining: Algoritmo
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
BC: 1:
2:
3:
4:
5:
6:
7:
q: E
cont: 1 1 0 1 0 0 0
1 2 3 4 5 6 7
V V F F F V
inferida:
A D E F M P
agenda:
p: P c: 3
Função FORWARD CHAINING(BC, q): boolean
cont ← número de sı́mbolos em cada premissa
inferida ← inicializada com falso para todo sı́mbolo
agenda ← sı́mbolos verdadeiros na BC
enquanto agenda não estiver vazia faça
p ← retira o primeiro elemento de agenda
se p = q então
retorna verdadeiro
se inferida[p] = falso então
inferida[p] ← verdadeiro
para cada cláusula c em que
p ∈ PREMISSAS(c) faça
decremente cont[c]
se cont[c] = 0 então
Adicione a conclusão de c à agenda
retorna falso;
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 17 / 34
125. Lógica Proposicional e Inferência
Forward Chaining: Algoritmo
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
BC: 1:
2:
3:
4:
5:
6:
7:
q: E
cont: 1 1 0 1 0 0 0
1 2 3 4 5 6 7
V V F F F V
inferida:
A D E F M P
agenda:
p: P c: 3
Função FORWARD CHAINING(BC, q): boolean
cont ← número de sı́mbolos em cada premissa
inferida ← inicializada com falso para todo sı́mbolo
agenda ← sı́mbolos verdadeiros na BC
enquanto agenda não estiver vazia faça
p ← retira o primeiro elemento de agenda
se p = q então
retorna verdadeiro
se inferida[p] = falso então
inferida[p] ← verdadeiro
para cada cláusula c em que
p ∈ PREMISSAS(c) faça
decremente cont[c]
se cont[c] = 0 então
Adicione a conclusão de c à agenda
retorna falso;
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 17 / 34
126. Lógica Proposicional e Inferência
Forward Chaining: Algoritmo
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
BC: 1:
2:
3:
4:
5:
6:
7:
q: E
cont: 1 1 0 1 0 0 0
1 2 3 4 5 6 7
V V F F F V
inferida:
A D E F M P
M
agenda:
p: P c: 3
Função FORWARD CHAINING(BC, q): boolean
cont ← número de sı́mbolos em cada premissa
inferida ← inicializada com falso para todo sı́mbolo
agenda ← sı́mbolos verdadeiros na BC
enquanto agenda não estiver vazia faça
p ← retira o primeiro elemento de agenda
se p = q então
retorna verdadeiro
se inferida[p] = falso então
inferida[p] ← verdadeiro
para cada cláusula c em que
p ∈ PREMISSAS(c) faça
decremente cont[c]
se cont[c] = 0 então
Adicione a conclusão de c à agenda
retorna falso;
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 17 / 34
127. Lógica Proposicional e Inferência
Forward Chaining: Algoritmo
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
BC: 1:
2:
3:
4:
5:
6:
7:
q: E
cont: 1 1 0 1 0 0 0
1 2 3 4 5 6 7
V V F F F V
inferida:
A D E F M P
M
agenda:
p: P c: 3
Função FORWARD CHAINING(BC, q): boolean
cont ← número de sı́mbolos em cada premissa
inferida ← inicializada com falso para todo sı́mbolo
agenda ← sı́mbolos verdadeiros na BC
enquanto agenda não estiver vazia faça
p ← retira o primeiro elemento de agenda
se p = q então
retorna verdadeiro
se inferida[p] = falso então
inferida[p] ← verdadeiro
para cada cláusula c em que
p ∈ PREMISSAS(c) faça
decremente cont[c]
se cont[c] = 0 então
Adicione a conclusão de c à agenda
retorna falso;
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 17 / 34
128. Lógica Proposicional e Inferência
Forward Chaining: Algoritmo
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
BC: 1:
2:
3:
4:
5:
6:
7:
q: E
cont: 1 1 0 1 0 0 0
1 2 3 4 5 6 7
V V F F F V
inferida:
A D E F M P
M
agenda:
p: P c: 3
Função FORWARD CHAINING(BC, q): boolean
cont ← número de sı́mbolos em cada premissa
inferida ← inicializada com falso para todo sı́mbolo
agenda ← sı́mbolos verdadeiros na BC
enquanto agenda não estiver vazia faça
p ← retira o primeiro elemento de agenda
se p = q então
retorna verdadeiro
se inferida[p] = falso então
inferida[p] ← verdadeiro
para cada cláusula c em que
p ∈ PREMISSAS(c) faça
decremente cont[c]
se cont[c] = 0 então
Adicione a conclusão de c à agenda
retorna falso;
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 17 / 34
129. Lógica Proposicional e Inferência
Forward Chaining: Algoritmo
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
BC: 1:
2:
3:
4:
5:
6:
7:
q: E
cont: 1 1 0 1 0 0 0
1 2 3 4 5 6 7
V V F F F V
inferida:
A D E F M P
agenda:
p: M c: 3
Função FORWARD CHAINING(BC, q): boolean
cont ← número de sı́mbolos em cada premissa
inferida ← inicializada com falso para todo sı́mbolo
agenda ← sı́mbolos verdadeiros na BC
enquanto agenda não estiver vazia faça
p ← retira o primeiro elemento de agenda
se p = q então
retorna verdadeiro
se inferida[p] = falso então
inferida[p] ← verdadeiro
para cada cláusula c em que
p ∈ PREMISSAS(c) faça
decremente cont[c]
se cont[c] = 0 então
Adicione a conclusão de c à agenda
retorna falso;
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 17 / 34
130. Lógica Proposicional e Inferência
Forward Chaining: Algoritmo
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
BC: 1:
2:
3:
4:
5:
6:
7:
q: E
cont: 1 1 0 1 0 0 0
1 2 3 4 5 6 7
V V F F F V
inferida:
A D E F M P
agenda:
p: M c: 3
Função FORWARD CHAINING(BC, q): boolean
cont ← número de sı́mbolos em cada premissa
inferida ← inicializada com falso para todo sı́mbolo
agenda ← sı́mbolos verdadeiros na BC
enquanto agenda não estiver vazia faça
p ← retira o primeiro elemento de agenda
se p = q então
retorna verdadeiro
se inferida[p] = falso então
inferida[p] ← verdadeiro
para cada cláusula c em que
p ∈ PREMISSAS(c) faça
decremente cont[c]
se cont[c] = 0 então
Adicione a conclusão de c à agenda
retorna falso;
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 17 / 34
131. Lógica Proposicional e Inferência
Forward Chaining: Algoritmo
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
BC: 1:
2:
3:
4:
5:
6:
7:
q: E
cont: 1 1 0 1 0 0 0
1 2 3 4 5 6 7
V V F F F V
inferida:
A D E F M P
agenda:
p: M c: 3
Função FORWARD CHAINING(BC, q): boolean
cont ← número de sı́mbolos em cada premissa
inferida ← inicializada com falso para todo sı́mbolo
agenda ← sı́mbolos verdadeiros na BC
enquanto agenda não estiver vazia faça
p ← retira o primeiro elemento de agenda
se p = q então
retorna verdadeiro
se inferida[p] = falso então
inferida[p] ← verdadeiro
para cada cláusula c em que
p ∈ PREMISSAS(c) faça
decremente cont[c]
se cont[c] = 0 então
Adicione a conclusão de c à agenda
retorna falso;
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 17 / 34
132. Lógica Proposicional e Inferência
Forward Chaining: Algoritmo
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
BC: 1:
2:
3:
4:
5:
6:
7:
q: E
cont: 1 1 0 1 0 0 0
1 2 3 4 5 6 7
V V F F V V
inferida:
A D E F M P
agenda:
p: M c: 3
Função FORWARD CHAINING(BC, q): boolean
cont ← número de sı́mbolos em cada premissa
inferida ← inicializada com falso para todo sı́mbolo
agenda ← sı́mbolos verdadeiros na BC
enquanto agenda não estiver vazia faça
p ← retira o primeiro elemento de agenda
se p = q então
retorna verdadeiro
se inferida[p] = falso então
inferida[p] ← verdadeiro
para cada cláusula c em que
p ∈ PREMISSAS(c) faça
decremente cont[c]
se cont[c] = 0 então
Adicione a conclusão de c à agenda
retorna falso;
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 17 / 34
133. Lógica Proposicional e Inferência
Forward Chaining: Algoritmo
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
BC: 1:
2:
3:
4:
5:
6:
7:
q: E
cont: 1 1 0 1 0 0 0
1 2 3 4 5 6 7
V V F F V V
inferida:
A D E F M P
agenda:
p: M c: 2
Função FORWARD CHAINING(BC, q): boolean
cont ← número de sı́mbolos em cada premissa
inferida ← inicializada com falso para todo sı́mbolo
agenda ← sı́mbolos verdadeiros na BC
enquanto agenda não estiver vazia faça
p ← retira o primeiro elemento de agenda
se p = q então
retorna verdadeiro
se inferida[p] = falso então
inferida[p] ← verdadeiro
para cada cláusula c em que
p ∈ PREMISSAS(c) faça
decremente cont[c]
se cont[c] = 0 então
Adicione a conclusão de c à agenda
retorna falso;
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 17 / 34
134. Lógica Proposicional e Inferência
Forward Chaining: Algoritmo
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
BC: 1:
2:
3:
4:
5:
6:
7:
q: E
cont: 1 0 0 1 0 0 0
1 2 3 4 5 6 7
V V F F V V
inferida:
A D E F M P
agenda:
p: M c: 2
Função FORWARD CHAINING(BC, q): boolean
cont ← número de sı́mbolos em cada premissa
inferida ← inicializada com falso para todo sı́mbolo
agenda ← sı́mbolos verdadeiros na BC
enquanto agenda não estiver vazia faça
p ← retira o primeiro elemento de agenda
se p = q então
retorna verdadeiro
se inferida[p] = falso então
inferida[p] ← verdadeiro
para cada cláusula c em que
p ∈ PREMISSAS(c) faça
decremente cont[c]
se cont[c] = 0 então
Adicione a conclusão de c à agenda
retorna falso;
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 17 / 34
135. Lógica Proposicional e Inferência
Forward Chaining: Algoritmo
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
BC: 1:
2:
3:
4:
5:
6:
7:
q: E
cont: 1 0 0 1 0 0 0
1 2 3 4 5 6 7
V V F F V V
inferida:
A D E F M P
agenda:
p: M c: 2
Função FORWARD CHAINING(BC, q): boolean
cont ← número de sı́mbolos em cada premissa
inferida ← inicializada com falso para todo sı́mbolo
agenda ← sı́mbolos verdadeiros na BC
enquanto agenda não estiver vazia faça
p ← retira o primeiro elemento de agenda
se p = q então
retorna verdadeiro
se inferida[p] = falso então
inferida[p] ← verdadeiro
para cada cláusula c em que
p ∈ PREMISSAS(c) faça
decremente cont[c]
se cont[c] = 0 então
Adicione a conclusão de c à agenda
retorna falso;
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 17 / 34
136. Lógica Proposicional e Inferência
Forward Chaining: Algoritmo
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
BC: 1:
2:
3:
4:
5:
6:
7:
q: E
cont: 1 0 0 1 0 0 0
1 2 3 4 5 6 7
V V F F V V
inferida:
A D E F M P
F
agenda:
p: M c: 2
Função FORWARD CHAINING(BC, q): boolean
cont ← número de sı́mbolos em cada premissa
inferida ← inicializada com falso para todo sı́mbolo
agenda ← sı́mbolos verdadeiros na BC
enquanto agenda não estiver vazia faça
p ← retira o primeiro elemento de agenda
se p = q então
retorna verdadeiro
se inferida[p] = falso então
inferida[p] ← verdadeiro
para cada cláusula c em que
p ∈ PREMISSAS(c) faça
decremente cont[c]
se cont[c] = 0 então
Adicione a conclusão de c à agenda
retorna falso;
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 17 / 34
137. Lógica Proposicional e Inferência
Forward Chaining: Algoritmo
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
BC: 1:
2:
3:
4:
5:
6:
7:
q: E
cont: 1 0 0 1 0 0 0
1 2 3 4 5 6 7
V V F F V V
inferida:
A D E F M P
F
agenda:
p: M c: 2
Função FORWARD CHAINING(BC, q): boolean
cont ← número de sı́mbolos em cada premissa
inferida ← inicializada com falso para todo sı́mbolo
agenda ← sı́mbolos verdadeiros na BC
enquanto agenda não estiver vazia faça
p ← retira o primeiro elemento de agenda
se p = q então
retorna verdadeiro
se inferida[p] = falso então
inferida[p] ← verdadeiro
para cada cláusula c em que
p ∈ PREMISSAS(c) faça
decremente cont[c]
se cont[c] = 0 então
Adicione a conclusão de c à agenda
retorna falso;
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 17 / 34
138. Lógica Proposicional e Inferência
Forward Chaining: Algoritmo
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
BC: 1:
2:
3:
4:
5:
6:
7:
q: E
cont: 1 0 0 1 0 0 0
1 2 3 4 5 6 7
V V F F V V
inferida:
A D E F M P
F
agenda:
p: M c: 2
Função FORWARD CHAINING(BC, q): boolean
cont ← número de sı́mbolos em cada premissa
inferida ← inicializada com falso para todo sı́mbolo
agenda ← sı́mbolos verdadeiros na BC
enquanto agenda não estiver vazia faça
p ← retira o primeiro elemento de agenda
se p = q então
retorna verdadeiro
se inferida[p] = falso então
inferida[p] ← verdadeiro
para cada cláusula c em que
p ∈ PREMISSAS(c) faça
decremente cont[c]
se cont[c] = 0 então
Adicione a conclusão de c à agenda
retorna falso;
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 17 / 34
139. Lógica Proposicional e Inferência
Forward Chaining: Algoritmo
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
BC: 1:
2:
3:
4:
5:
6:
7:
q: E
cont: 1 0 0 1 0 0 0
1 2 3 4 5 6 7
V V F F V V
inferida:
A D E F M P
agenda:
p: F c: 2
Função FORWARD CHAINING(BC, q): boolean
cont ← número de sı́mbolos em cada premissa
inferida ← inicializada com falso para todo sı́mbolo
agenda ← sı́mbolos verdadeiros na BC
enquanto agenda não estiver vazia faça
p ← retira o primeiro elemento de agenda
se p = q então
retorna verdadeiro
se inferida[p] = falso então
inferida[p] ← verdadeiro
para cada cláusula c em que
p ∈ PREMISSAS(c) faça
decremente cont[c]
se cont[c] = 0 então
Adicione a conclusão de c à agenda
retorna falso;
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 17 / 34
140. Lógica Proposicional e Inferência
Forward Chaining: Algoritmo
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
BC: 1:
2:
3:
4:
5:
6:
7:
q: E
cont: 1 0 0 1 0 0 0
1 2 3 4 5 6 7
V V F F V V
inferida:
A D E F M P
agenda:
p: F c: 2
Função FORWARD CHAINING(BC, q): boolean
cont ← número de sı́mbolos em cada premissa
inferida ← inicializada com falso para todo sı́mbolo
agenda ← sı́mbolos verdadeiros na BC
enquanto agenda não estiver vazia faça
p ← retira o primeiro elemento de agenda
se p = q então
retorna verdadeiro
se inferida[p] = falso então
inferida[p] ← verdadeiro
para cada cláusula c em que
p ∈ PREMISSAS(c) faça
decremente cont[c]
se cont[c] = 0 então
Adicione a conclusão de c à agenda
retorna falso;
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 17 / 34
141. Lógica Proposicional e Inferência
Forward Chaining: Algoritmo
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
BC: 1:
2:
3:
4:
5:
6:
7:
q: E
cont: 1 0 0 1 0 0 0
1 2 3 4 5 6 7
V V F F V V
inferida:
A D E F M P
agenda:
p: F c: 2
Função FORWARD CHAINING(BC, q): boolean
cont ← número de sı́mbolos em cada premissa
inferida ← inicializada com falso para todo sı́mbolo
agenda ← sı́mbolos verdadeiros na BC
enquanto agenda não estiver vazia faça
p ← retira o primeiro elemento de agenda
se p = q então
retorna verdadeiro
se inferida[p] = falso então
inferida[p] ← verdadeiro
para cada cláusula c em que
p ∈ PREMISSAS(c) faça
decremente cont[c]
se cont[c] = 0 então
Adicione a conclusão de c à agenda
retorna falso;
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 17 / 34
142. Lógica Proposicional e Inferência
Forward Chaining: Algoritmo
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
BC: 1:
2:
3:
4:
5:
6:
7:
q: E
cont: 1 0 0 1 0 0 0
1 2 3 4 5 6 7
V V F V V V
inferida:
A D E F M P
agenda:
p: F c: 2
Função FORWARD CHAINING(BC, q): boolean
cont ← número de sı́mbolos em cada premissa
inferida ← inicializada com falso para todo sı́mbolo
agenda ← sı́mbolos verdadeiros na BC
enquanto agenda não estiver vazia faça
p ← retira o primeiro elemento de agenda
se p = q então
retorna verdadeiro
se inferida[p] = falso então
inferida[p] ← verdadeiro
para cada cláusula c em que
p ∈ PREMISSAS(c) faça
decremente cont[c]
se cont[c] = 0 então
Adicione a conclusão de c à agenda
retorna falso;
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 17 / 34
143. Lógica Proposicional e Inferência
Forward Chaining: Algoritmo
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
BC: 1:
2:
3:
4:
5:
6:
7:
q: E
cont: 1 0 0 1 0 0 0
1 2 3 4 5 6 7
V V F V V V
inferida:
A D E F M P
agenda:
p: F c: 1
Função FORWARD CHAINING(BC, q): boolean
cont ← número de sı́mbolos em cada premissa
inferida ← inicializada com falso para todo sı́mbolo
agenda ← sı́mbolos verdadeiros na BC
enquanto agenda não estiver vazia faça
p ← retira o primeiro elemento de agenda
se p = q então
retorna verdadeiro
se inferida[p] = falso então
inferida[p] ← verdadeiro
para cada cláusula c em que
p ∈ PREMISSAS(c) faça
decremente cont[c]
se cont[c] = 0 então
Adicione a conclusão de c à agenda
retorna falso;
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 17 / 34
144. Lógica Proposicional e Inferência
Forward Chaining: Algoritmo
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
BC: 1:
2:
3:
4:
5:
6:
7:
q: E
cont: 0 0 0 1 0 0 0
1 2 3 4 5 6 7
V V F V V V
inferida:
A D E F M P
agenda:
p: F c: 1
Função FORWARD CHAINING(BC, q): boolean
cont ← número de sı́mbolos em cada premissa
inferida ← inicializada com falso para todo sı́mbolo
agenda ← sı́mbolos verdadeiros na BC
enquanto agenda não estiver vazia faça
p ← retira o primeiro elemento de agenda
se p = q então
retorna verdadeiro
se inferida[p] = falso então
inferida[p] ← verdadeiro
para cada cláusula c em que
p ∈ PREMISSAS(c) faça
decremente cont[c]
se cont[c] = 0 então
Adicione a conclusão de c à agenda
retorna falso;
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 17 / 34
145. Lógica Proposicional e Inferência
Forward Chaining: Algoritmo
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
BC: 1:
2:
3:
4:
5:
6:
7:
q: E
cont: 0 0 0 1 0 0 0
1 2 3 4 5 6 7
V V F V V V
inferida:
A D E F M P
agenda:
p: F c: 1
Função FORWARD CHAINING(BC, q): boolean
cont ← número de sı́mbolos em cada premissa
inferida ← inicializada com falso para todo sı́mbolo
agenda ← sı́mbolos verdadeiros na BC
enquanto agenda não estiver vazia faça
p ← retira o primeiro elemento de agenda
se p = q então
retorna verdadeiro
se inferida[p] = falso então
inferida[p] ← verdadeiro
para cada cláusula c em que
p ∈ PREMISSAS(c) faça
decremente cont[c]
se cont[c] = 0 então
Adicione a conclusão de c à agenda
retorna falso;
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 17 / 34
146. Lógica Proposicional e Inferência
Forward Chaining: Algoritmo
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
BC: 1:
2:
3:
4:
5:
6:
7:
q: E
cont: 0 0 0 1 0 0 0
1 2 3 4 5 6 7
V V F V V V
inferida:
A D E F M P
E
agenda:
p: F c: 1
Função FORWARD CHAINING(BC, q): boolean
cont ← número de sı́mbolos em cada premissa
inferida ← inicializada com falso para todo sı́mbolo
agenda ← sı́mbolos verdadeiros na BC
enquanto agenda não estiver vazia faça
p ← retira o primeiro elemento de agenda
se p = q então
retorna verdadeiro
se inferida[p] = falso então
inferida[p] ← verdadeiro
para cada cláusula c em que
p ∈ PREMISSAS(c) faça
decremente cont[c]
se cont[c] = 0 então
Adicione a conclusão de c à agenda
retorna falso;
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 17 / 34
147. Lógica Proposicional e Inferência
Forward Chaining: Algoritmo
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
BC: 1:
2:
3:
4:
5:
6:
7:
q: E
cont: 0 0 0 1 0 0 0
1 2 3 4 5 6 7
V V F V V V
inferida:
A D E F M P
E
agenda:
p: F c: 4
Função FORWARD CHAINING(BC, q): boolean
cont ← número de sı́mbolos em cada premissa
inferida ← inicializada com falso para todo sı́mbolo
agenda ← sı́mbolos verdadeiros na BC
enquanto agenda não estiver vazia faça
p ← retira o primeiro elemento de agenda
se p = q então
retorna verdadeiro
se inferida[p] = falso então
inferida[p] ← verdadeiro
para cada cláusula c em que
p ∈ PREMISSAS(c) faça
decremente cont[c]
se cont[c] = 0 então
Adicione a conclusão de c à agenda
retorna falso;
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 17 / 34
148. Lógica Proposicional e Inferência
Forward Chaining: Algoritmo
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
BC: 1:
2:
3:
4:
5:
6:
7:
q: E
cont: 0 0 0 0 0 0 0
1 2 3 4 5 6 7
V V F V V V
inferida:
A D E F M P
E
agenda:
p: F c: 4
Função FORWARD CHAINING(BC, q): boolean
cont ← número de sı́mbolos em cada premissa
inferida ← inicializada com falso para todo sı́mbolo
agenda ← sı́mbolos verdadeiros na BC
enquanto agenda não estiver vazia faça
p ← retira o primeiro elemento de agenda
se p = q então
retorna verdadeiro
se inferida[p] = falso então
inferida[p] ← verdadeiro
para cada cláusula c em que
p ∈ PREMISSAS(c) faça
decremente cont[c]
se cont[c] = 0 então
Adicione a conclusão de c à agenda
retorna falso;
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 17 / 34
149. Lógica Proposicional e Inferência
Forward Chaining: Algoritmo
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
BC: 1:
2:
3:
4:
5:
6:
7:
q: E
cont: 0 0 0 0 0 0 0
1 2 3 4 5 6 7
V V F V V V
inferida:
A D E F M P
E
agenda:
p: F c: 4
Função FORWARD CHAINING(BC, q): boolean
cont ← número de sı́mbolos em cada premissa
inferida ← inicializada com falso para todo sı́mbolo
agenda ← sı́mbolos verdadeiros na BC
enquanto agenda não estiver vazia faça
p ← retira o primeiro elemento de agenda
se p = q então
retorna verdadeiro
se inferida[p] = falso então
inferida[p] ← verdadeiro
para cada cláusula c em que
p ∈ PREMISSAS(c) faça
decremente cont[c]
se cont[c] = 0 então
Adicione a conclusão de c à agenda
retorna falso;
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 17 / 34
150. Lógica Proposicional e Inferência
Forward Chaining: Algoritmo
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
BC: 1:
2:
3:
4:
5:
6:
7:
q: E
cont: 0 0 0 0 0 0 0
1 2 3 4 5 6 7
V V F V V V
inferida:
A D E F M P
E
agenda: P
p: F c: 4
Função FORWARD CHAINING(BC, q): boolean
cont ← número de sı́mbolos em cada premissa
inferida ← inicializada com falso para todo sı́mbolo
agenda ← sı́mbolos verdadeiros na BC
enquanto agenda não estiver vazia faça
p ← retira o primeiro elemento de agenda
se p = q então
retorna verdadeiro
se inferida[p] = falso então
inferida[p] ← verdadeiro
para cada cláusula c em que
p ∈ PREMISSAS(c) faça
decremente cont[c]
se cont[c] = 0 então
Adicione a conclusão de c à agenda
retorna falso;
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 17 / 34
151. Lógica Proposicional e Inferência
Forward Chaining: Algoritmo
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
BC: 1:
2:
3:
4:
5:
6:
7:
q: E
cont: 0 0 0 0 0 0 0
1 2 3 4 5 6 7
V V F V V V
inferida:
A D E F M P
E
agenda: P
p: F c: 4
Função FORWARD CHAINING(BC, q): boolean
cont ← número de sı́mbolos em cada premissa
inferida ← inicializada com falso para todo sı́mbolo
agenda ← sı́mbolos verdadeiros na BC
enquanto agenda não estiver vazia faça
p ← retira o primeiro elemento de agenda
se p = q então
retorna verdadeiro
se inferida[p] = falso então
inferida[p] ← verdadeiro
para cada cláusula c em que
p ∈ PREMISSAS(c) faça
decremente cont[c]
se cont[c] = 0 então
Adicione a conclusão de c à agenda
retorna falso;
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 17 / 34
152. Lógica Proposicional e Inferência
Forward Chaining: Algoritmo
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
BC: 1:
2:
3:
4:
5:
6:
7:
q: E
cont: 0 0 0 0 0 0 0
1 2 3 4 5 6 7
V V F V V V
inferida:
A D E F M P
E
agenda: P
p: F c: 4
Função FORWARD CHAINING(BC, q): boolean
cont ← número de sı́mbolos em cada premissa
inferida ← inicializada com falso para todo sı́mbolo
agenda ← sı́mbolos verdadeiros na BC
enquanto agenda não estiver vazia faça
p ← retira o primeiro elemento de agenda
se p = q então
retorna verdadeiro
se inferida[p] = falso então
inferida[p] ← verdadeiro
para cada cláusula c em que
p ∈ PREMISSAS(c) faça
decremente cont[c]
se cont[c] = 0 então
Adicione a conclusão de c à agenda
retorna falso;
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 17 / 34
153. Lógica Proposicional e Inferência
Forward Chaining: Algoritmo
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
BC: 1:
2:
3:
4:
5:
6:
7:
q: E
cont: 0 0 0 0 0 0 0
1 2 3 4 5 6 7
V V F V V V
inferida:
A D E F M P
P
agenda:
p: E c: 4
Função FORWARD CHAINING(BC, q): boolean
cont ← número de sı́mbolos em cada premissa
inferida ← inicializada com falso para todo sı́mbolo
agenda ← sı́mbolos verdadeiros na BC
enquanto agenda não estiver vazia faça
p ← retira o primeiro elemento de agenda
se p = q então
retorna verdadeiro
se inferida[p] = falso então
inferida[p] ← verdadeiro
para cada cláusula c em que
p ∈ PREMISSAS(c) faça
decremente cont[c]
se cont[c] = 0 então
Adicione a conclusão de c à agenda
retorna falso;
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 17 / 34
154. Lógica Proposicional e Inferência
Forward Chaining: Algoritmo
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
BC: 1:
2:
3:
4:
5:
6:
7:
q: E
cont: 0 0 0 0 0 0 0
1 2 3 4 5 6 7
V V F V V V
inferida:
A D E F M P
P
agenda:
p: E c: 4
Função FORWARD CHAINING(BC, q): boolean
cont ← número de sı́mbolos em cada premissa
inferida ← inicializada com falso para todo sı́mbolo
agenda ← sı́mbolos verdadeiros na BC
enquanto agenda não estiver vazia faça
p ← retira o primeiro elemento de agenda
se p = q então
retorna verdadeiro
se inferida[p] = falso então
inferida[p] ← verdadeiro
para cada cláusula c em que
p ∈ PREMISSAS(c) faça
decremente cont[c]
se cont[c] = 0 então
Adicione a conclusão de c à agenda
retorna falso;
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 17 / 34
155. Lógica Proposicional e Inferência
Forward Chaining: Algoritmo
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
BC: 1:
2:
3:
4:
5:
6:
7:
q: E
cont: 0 0 0 0 0 0 0
1 2 3 4 5 6 7
V V F V V V
inferida:
A D E F M P
P
agenda:
p: E c: 4
Função FORWARD CHAINING(BC, q): boolean
cont ← número de sı́mbolos em cada premissa
inferida ← inicializada com falso para todo sı́mbolo
agenda ← sı́mbolos verdadeiros na BC
enquanto agenda não estiver vazia faça
p ← retira o primeiro elemento de agenda
se p = q então
retorna verdadeiro
se inferida[p] = falso então
inferida[p] ← verdadeiro
para cada cláusula c em que
p ∈ PREMISSAS(c) faça
decremente cont[c]
se cont[c] = 0 então
Adicione a conclusão de c à agenda
retorna falso;
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 17 / 34
156. Lógica Proposicional e Inferência
Forward Chaining
Forward chaining é consistente
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 18 / 34
157. Lógica Proposicional e Inferência
Forward Chaining
Forward chaining é consistente
Toda inferência é aplicação de Modus Ponens
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 18 / 34
158. Lógica Proposicional e Inferência
Forward Chaining
Forward chaining é consistente
Toda inferência é aplicação de Modus Ponens
Assim, toda sentença atômica inferida é acarretada pela base
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 18 / 34
159. Lógica Proposicional e Inferência
Forward Chaining
Forward chaining é consistente
Toda inferência é aplicação de Modus Ponens
Assim, toda sentença atômica inferida é acarretada pela base
Também é completo
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 18 / 34
160. Lógica Proposicional e Inferência
Forward Chaining
Forward chaining é consistente
Toda inferência é aplicação de Modus Ponens
Assim, toda sentença atômica inferida é acarretada pela base
Também é completo
Toda sentença atômica acarretada pela base será derivada
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 18 / 34
161. Lógica Proposicional e Inferência
Forward Chaining
Forward chaining é consistente
Toda inferência é aplicação de Modus Ponens
Assim, toda sentença atômica inferida é acarretada pela base
Também é completo
Toda sentença atômica acarretada pela base será derivada
É um exemplo de raciocı́nio guiado por dados
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 18 / 34
162. Lógica Proposicional e Inferência
Forward Chaining
Forward chaining é consistente
Toda inferência é aplicação de Modus Ponens
Assim, toda sentença atômica inferida é acarretada pela base
Também é completo
Toda sentença atômica acarretada pela base será derivada
É um exemplo de raciocı́nio guiado por dados
Raciocı́nio em que o foco da atenção começa com os dados
conhecidos
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 18 / 34
163. Lógica Proposicional e Inferência
Backward Chaining
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 19 / 34
164. Lógica Proposicional e Inferência
Backward Chaining
Também se baseia em Modus Ponens
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 19 / 34
165. Lógica Proposicional e Inferência
Backward Chaining
Também se baseia em Modus Ponens
Porém caminha em direção contrária ao forward chaining,
voltando nas regras a partir da query Q
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 19 / 34
166. Lógica Proposicional e Inferência
Backward Chaining
Também se baseia em Modus Ponens
Porém caminha em direção contrária ao forward chaining,
voltando nas regras a partir da query Q
Para provar Q por Backward Chaining
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 19 / 34
167. Lógica Proposicional e Inferência
Backward Chaining
Também se baseia em Modus Ponens
Porém caminha em direção contrária ao forward chaining,
voltando nas regras a partir da query Q
Para provar Q por Backward Chaining
Comece do objetivo Q
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 19 / 34
168. Lógica Proposicional e Inferência
Backward Chaining
Também se baseia em Modus Ponens
Porém caminha em direção contrária ao forward chaining,
voltando nas regras a partir da query Q
Para provar Q por Backward Chaining
Comece do objetivo Q
Se Q for verdadeira, então não precisa fazer mais nada
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 19 / 34
169. Lógica Proposicional e Inferência
Backward Chaining
Também se baseia em Modus Ponens
Porém caminha em direção contrária ao forward chaining,
voltando nas regras a partir da query Q
Para provar Q por Backward Chaining
Comece do objetivo Q
Se Q for verdadeira, então não precisa fazer mais nada
Senão, encontre as implicações na BC que concluem Q
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 19 / 34
170. Lógica Proposicional e Inferência
Backward Chaining
Também se baseia em Modus Ponens
Porém caminha em direção contrária ao forward chaining,
voltando nas regras a partir da query Q
Para provar Q por Backward Chaining
Comece do objetivo Q
Se Q for verdadeira, então não precisa fazer mais nada
Senão, encontre as implicações na BC que concluem Q
Se todas as premissas de uma dessas implicações puderem
ser provadas verdadeiras (por backward chaining), então Q é
verdadeira
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 19 / 34
171. Lógica Proposicional e Inferência
Forward Chaining
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
Backward Chaining
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 20 / 34
172. Lógica Proposicional e Inferência
Forward Chaining
Começamos com fatos
conhecidos
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
Backward Chaining
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 20 / 34
173. Lógica Proposicional e Inferência
Forward Chaining
De A e D derivamos P
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
P
Backward Chaining
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 20 / 34
174. Lógica Proposicional e Inferência
Forward Chaining
De P e D derivamos M
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
P
M
Backward Chaining
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 20 / 34
175. Lógica Proposicional e Inferência
Forward Chaining
De P e M derivamos F
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
P
M
F
Backward Chaining
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 20 / 34
176. Lógica Proposicional e Inferência
Forward Chaining
De F temos E
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
P
M
F
Backward Chaining
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 20 / 34
177. Lógica Proposicional e Inferência
Forward Chaining
De F temos E
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
P
M
F
Backward Chaining
Buscamos regra com → E.
Precisamos de F
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 20 / 34
178. Lógica Proposicional e Inferência
Forward Chaining
De F temos E
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
P
M
F
Backward Chaining
Buscamos regra com → F.
Faltam P e M
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 20 / 34
179. Lógica Proposicional e Inferência
Forward Chaining
De F temos E
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
P
M
F
Backward Chaining
Buscamos regra com → P.
Faltam A e F
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 20 / 34
180. Lógica Proposicional e Inferência
Forward Chaining
De F temos E
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
P
M
F
Backward Chaining
Conhecemos A, falta F
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 20 / 34
181. Lógica Proposicional e Inferência
Forward Chaining
De F temos E
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
P
M
F
Backward Chaining
Cuidado! Se seguirmos
com F teremos um laço!
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 20 / 34
182. Lógica Proposicional e Inferência
Forward Chaining
De F temos E
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
P
M
F
Backward Chaining
Tentamos a próxima regra
com → P. Falta D
F → E
P ∧ M → F
D ∧ P → M
A ∧ F → P
A ∧ D → P
A
D
Norton Trevisan Roman(norton@usp.br) 10 de abril de 2019 20 / 34