Raciocínio Automatizado Prof. Dr. Silvio do Lago Pereira Departamento de Tecnologia da Informação Faculdade de Tecnologia de São Paulo
Introdução Raciocínio automatizado simula raciocínio lógico por por meio de de processos computacionais SLD-refutação é um procedimento para raciocínio automatizado que apresenta as seguintes características: restringe-se à uma classe de fórmulas denominadas cláusulas de Horn usa um mecanismo de prova por refutação, que combina unificação e resolução usa uma estratégia de busca em profundidade para controlar as inferências introduz o conceito de predicados computáveis (ou predefinidos no sistema) introduz o conceito de negação por falha finita Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 2
Inferência com cláusulas de Horn Cláusulas de de Horn São São fórmulas da da forma ϕ ϕ 1, 1,..., ϕ nn para n 0, onde ϕ é uma conclusão e ϕ 1, 1,..., ϕ n são n são premissas (condições) Tipos de cláusulas: Fato...: ϕ Regra...: ϕ ϕ 1,..., ϕ n Consulta...: ϕ 1,..., ϕ n Contradição...: Um Um programa lógico é composto apenas por por fatos fatos e regras! Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 3
Inferência com cláusulas de Horn Inferências com cláusulas de Horn são efetuadas sempre entre: um fato e uma consulta α 0 β 1, β 2,, β n β 2,, β n uma regra e uma consulta a unificação de α 0 e β 1 tem efeito colateral no valor dos demais literais (i.e., na nova consulta) α 0 α 1, α 2,, α m β 1, β 2,, β n α 1, α 2,, α m, β 2,,..., β n O resultado de de uma uma inferência é uma uma nova nova consulta ou ou uma uma contradição! Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 4
Inferência com cláusulas de Horn Exemplo 1 inferência entre fato e consulta pai(adao adao,abel abel) pai(adao adao,y),y), pai(y,z) pai(abel abel,z),z) {Y=abel abel} Exemplo 2 inferência entre regra e consulta avo(x,z) pai(x,y), pai(y,z) avo(adao adao,a),a), pai(a,b) pai(adao adao,y),y), pai(y,a), pai(a,b) {X=adao adao,, Z=A} Z=A} Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 5
SLD-refutação Programa lógico 1 O que que é saudável? (1) (1) bebe(ze bebe(ze ze,pinga) ze,pinga) (2) (2) bebe(mane,agua bebe(mane,agua agua) agua) (3) (3) vivo(mane) vivo(mane) (4) (4) saudavel(x) saudavel(x) bebe(y,x), bebe(y,x), vivo(y) vivo(y) Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 6
SLD-refutação Programa lógico 1 O que que é saudável? (1) (1) bebe(ze bebe(ze ze,pinga) ze,pinga) (2) (2) bebe(mane,agua bebe(mane,agua agua) agua) (3) (3) vivo(mane) vivo(mane) (4) (4) saudavel(x) saudavel(x) bebe(y,x), bebe(y,x), vivo(y) vivo(y) Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 7
SLD-refutação Programa lógico 1 O que que é saudável? (1) (1) bebe(ze bebe(ze ze,pinga) ze,pinga) (2) (2) bebe(mane,agua bebe(mane,agua agua) agua) (3) (3) vivo(mane) vivo(mane) (4) (4) saudavel(x) saudavel(x) bebe(y,x), bebe(y,x), vivo(y) vivo(y) Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 8
SLD-refutação Programa lógico 1 O que que é saudável? (1) (1) bebe(ze bebe(ze ze,pinga) ze,pinga) (2) (2) bebe(mane,agua bebe(mane,agua agua) agua) (3) (3) vivo(mane) vivo(mane) (4) (4) saudavel(x) saudavel(x) bebe(y,x), bebe(y,x), vivo(y) vivo(y) Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 9
SLD-refutação Programa lógico 1 O que que é saudável? (1) (1) bebe(ze bebe(ze ze,pinga) ze,pinga) (2) (2) bebe(mane,agua bebe(mane,agua agua) agua) (3) (3) vivo(mane) vivo(mane) (4) (4) saudavel(x) saudavel(x) bebe(y,x), bebe(y,x), vivo(y) vivo(y) Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 10
SLD-refutação Programa lógico 2 Ana Ana fala fala que que idioma? (1) (1) nasceu(ana nasceu(ana ana,brasil ana,brasil brasil) brasil) (2) (2) nasceu(yves nasceu(yves yves,franca) yves,franca) (3) (3) idioma(brasil idioma(brasil brasil,portugues brasil,portugues portugues) portugues) (4) (4) idioma(franca,frances idioma(franca,frances frances) frances) (5) (5) estudou(ana estudou(ana ana,frances ana,frances frances) frances) (6) (6) fala(a,c) fala(a,c) nasceu(a,b), nasceu(a,b), idioma(b,c) idioma(b,c) (7) (7) fala(d,e) fala(d,e) estudou(d,e) estudou(d,e) Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 11
SLD-refutação Programa lógico 2 Yves Yves fala fala que que idioma? (1) (1) nasceu(ana nasceu(ana ana,brasil ana,brasil brasil) brasil) (2) (2) nasceu(yves nasceu(yves yves,franca) yves,franca) (3) (3) idioma(brasil idioma(brasil brasil,portugues brasil,portugues portugues) portugues) (4) (4) idioma(franca,frances idioma(franca,frances frances) frances) (5) (5) estudou(ana estudou(ana ana,frances ana,frances frances) frances) (6) (6) fala(a,c) fala(a,c) nasceu(a,b), nasceu(a,b), idioma(b,c) idioma(b,c) (7) (7) fala(d,e) fala(d,e) estudou(d,e) estudou(d,e) Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 12
SLD-refutação Exercício 1 Em Prolog, o operador é omitido nas cláusulas do tipo fato e substituído por :- nas cláusulas do tipo regra. Ademais, toda cláusula deve ser finalizada com.. Usando esta convenção, codifique o programa a seguir em Prolog e faça as seguintes consultas: Eva namora com Ary? Ivo namora com Ana? Ary namora com quem? Programa lógico 3 (1) (1) gosta(ary gosta(ary ary,eva ary,eva eva) eva) (2) (2) gosta(ivo gosta(ivo ivo,ana) ivo,ana) (3) (3) gosta(ivo gosta(ivo ivo,eva ivo,eva eva) eva) (4) (4) gosta(eva gosta(eva eva,ary eva,ary ary) ary) (5) (5) gosta(ana,ary gosta(ana,ary ary) ary) (6) (6) namora(a,b) namora(a,b) gosta(a,b), gosta(a,b), gosta(b,a) gosta(b,a) Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 13
SLD-refutação Exercício 2 Em Prolog, o predicado predefinido trace/0 permite rastrear o raciocínio feito pelo motor de inferência do sistema, ao responder a uma consulta. Usando este predicado para rastrear as consultas a seguir e desenhe a árvore de refutação correspondente:?- namora(eva eva,ary ary).?- namora(ivo ivo,ana).?- namora(ary ary,q). Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 14
SLD-refutação Exercício 3 Codifique o programa a seguir em Prolog e rastreie o raciocínio do sistema ao responder às seguintes consultas: Quem é avô de Enos? Seth é avô de quem? Caim é irmão de quem? Programa lógico 4 (1) (1) pai(adão,caim pai(adão,caim caim) caim) (2) (2) pai(adão,abel pai(adão,abel abel) abel) (3) (3) pai(adão,seth pai(adão,seth seth) seth) (4) (4) pai(seth pai(seth seth,enos seth,enos enos) enos) (5) (5) avô(a,c) avô(a,c) pai(a,b), pai(a,b), pai(b,c) pai(b,c) (6) (6) irmão(d,e) irmão(d,e) pai(f,d), pai(f,d), pai(f,e) pai(f,e) Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 15
Predicados computáveis Predicado computável é um um predicado avaliado diretamente pelo pelo procedimento de de refutação, sem sem que que este este tenha que que estar definido no no programa lógico. Exemplos: operadores aritméticos: +, -, *, / operadores relacionais: =,, <,, >, A SLD-refutação sinaliza fracasso se se um um predicado computável resulta em em falso! Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 16
Predicados computáveis Programa lógico 5 Quem é irmão de de Caim? (1) (1) pai(adão,caim pai(adão,caim caim) caim) (2) (2) pai(adão,abel pai(adão,abel abel) abel) (3) (3) pai(adão,seth pai(adão,seth seth) seth) (4) (4) irmão(x,y) irmão(x,y) pai(z,x), pai(z,x), pai(z,y), pai(z,y), X X Y Y Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 17
Predicados computáveis Exercício 4 Com base no programa a seguir, mostre como SLD-refutação responde à consulta (no Prolog, o operador é representado por \= ): Quem é infiel? Programa lógico 6 (1) (1) gosta(ary ary,eva eva) eva) (2) (2) gosta(ivo ivo,ana),ana) (3) (3) gosta(ary ary,bia),bia) (4) (4) gosta(eva eva,ary ary) ary) (5) (5) namora(a,b) gosta(a,b), gosta(b,a) (6) (6) infiel(c) namora(c,d), gosta(c,e), D E Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 18
Negação por falha finita Hipótese do do mundo fechado: tudo tudo o que que é verdadeiro está estádeclarado! Mecanismo de de negação por falha finita Ao Ao encontrar um um literal negativo ( λ ( λ λ) λ) o sistema dispara uma sub-prova do do literal complementar (λ): (λ): se se a prova de de λ termina com com sucesso, a prova de de λ λ termina com com fracasso se se a prova de de λ termina com com fracasso, a prova de de λ λ termina com com sucesso Prolog implementa negação por falha finita através do predicado computável not/1 /1. Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 19
Negação por falha finita Programa lógico 7 Quem voa? voa? (1) (1) ave(fred ave(fred fred) fred) (2) (2) ave(bob) ave(bob) (3) (3) pimguim(fred pimguim(fred fred) fred) (4) (4) voa(x) voa(x) ave(x), ave(x), pinguim(x) pinguim(x) Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 20
Negação por falha finita Exercício 5 Com base no programa a seguir, mostre como SLD-refutação responde às consultas: diferente(bola,bola) diferente(bola,bala) Programa lógico 8 (1) (1) igual(x,x) (2) (2) diferente(x,y) igual(x,y) Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 21
Fim