Raciocínio Automatizado

Documentos relacionados
Raciocínio Automatizado

Prof. Dr. Silvio do Lago Pereira

Lógica, Raciocínio Automatizado e Prolog

Programação Lógica. Programação Lógica PROLOG

Lógica Proposicional. Prof. Dr. Silvio do Lago Pereira. Departamento de Tecnologia da Informação Faculdade de Tecnologia de São Paulo

Linguagem Prolog. Prof. Dr. Silvio do Lago Pereira. Departamento de Tecnologia da Informação Faculdade de Tecnologia de São Paulo

Recursividade e listas

Lógica Proposicional. LEIC - Tagus Park 2 o Semestre, Ano Lectivo 2007/08. c Inês Lynce c Luísa Coheur

Linguagem Prolog. Prof. Dr. Silvio do Lago Pereira. Departamento de Tecnologia da Informação Faculdade de Tecnologia de São Paulo

Programação em Lógica

Lógica Proposicional. Prof. Dr. Silvio do Lago Pereira. Departamento de Tecnologia da Informação Faculdade de Tecnologia de São Paulo

Linguagem Prolog. Prof. Dr. Silvio do Lago Pereira. Departamento de Tecnologia da Informação Faculdade de Tecnologia de São Paulo

Conferência Árvores de resolução SLD

Descrição do Mundo de Wumpus. Inteligência Artificial

Programação Lógica. Controle (Bactracking, Cut, Fail) Paulo Henrique Ribeiro Gabriel

CURRÍCULO DO CURSO TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO (noturno) [Campus Araranguá] 20171

Paradigmas de Programação. Programação Lógica. Profª Andréa Schwertner Charão DLSC/CT/UFSM

Lógica Computacional

Lógica Computacional DCC/FCUP 2017/18

BUSCA DE SOLUÇÕES EM PROLOG

Lógica Computacional. Nelma Moreira. Departamento de Ciência de Computadores Faculdade de Ciências, Universidade do Porto

Lógica de primeira ordem (Capítulo 8 - Russell) Inteligência Artificial

UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ PROLOG PROF. CESAR A. TACLA UTFPR/CURITIBA

Lógica de Primeira Ordem. Capítulo 9

Programação Lógica. (Capítulo 11) LÓGICA APLICADA A COMPUTAÇÃO. Professor: Rosalvo Ferreira de Oliveira Neto

Programação em Lógica. UCPEL/CPOLI/BCC Lógica para Ciência da Computação Luiz A M Palazzo Maio de 2010

UNIDADE ACADÊMICA: Faculdade de

SCC Capítulo 2 Lógica de Predicados

Lógica Computacional

Fundamentos de Lógica Matemática

Fórmulas da lógica proposicional

Programação Lógica. A Linguagem Prolog. Paulo Henrique Ribeiro Gabriel Faculdade de Computação Universidade Federal de Uberlândia

Cálculo proposicional

Capítulo 3 Lógica de Primeira Ordem

Paradigmas de Linguagens de Programação

Basicamente, um programa PROLOG é constituído por fatos acerca do domínio e regras que são sentenças ou fórmulas.

Busca no espaço de estados (parte I)

LÓGICA PARA COMPUTAÇÃO

INF 1771 Inteligência Artificial

Aula 8: Tableaux Analíticos

Capítulo 3 Lógica de Primeira Ordem

Fundamentos de Lógica Matemática

Lógica Computacional DCC/FCUP 2017/18

Lógica Computacional Aula 1

Lógica para Computação Primeiro Semestre, Aula 10: Resolução. Prof. Ricardo Dutra da Silva

Lógica. Professor Mauro Cesar Scheer

Lógica Computacional

CENTRO UNIVERSITÁRIO LUTERANO DE PALMAS PROLOG. Elias Melgaço Chaves Júnior Jonatas Luiz da Costa Rafael Gonçalves Barreira

Aula 2 Programação Lógica Sintaxe Prolog. Profa. Elaine Faria UFU -2014

MATEMÁTICA DISCRETA E LÓGICA MATEMÁTICA PROF. APARECIDO EDILSON MORCELLI

JOÃO NUNES de SOUZA. LÓGICA para CIÊNCIA da COMPUTAÇÃO. Uma introdução concisa

SCC Capítulo 5 Representação de Conhecimento através do Prolog

LÓGICA PARA COMPUTAÇÃO

Roteiro de Aula Prática

Dedução Natural e Sistema Axiomático Pa(Capítulo 6)

Lógica Clássica Proposicional

Inteligência Artificial. Prolog. Aula 2 Introdução (cont.)

Lógica Computacional

Estrutura Sequencial. Prof. Dr. Silvio do Lago Pereira. Departamento de Tecnologia da Informação Faculdade de Tecnologia de São Paulo

impossível conclusão falso premissas verdadeiro

Introdução à Programação em Prolog

Introdução. Prof. Dr. Silvio do Lago Pereira. Departamento de Tecnologia da Informação Faculdade de Tecnologia de São Paulo

Inteligência Artificial. Prof. Tiago A. E. Ferreira Aula 15 Agentes que Raciocinam Logicamente

PCS 2428 / PCS 2059 lnteligência Artificial. Lógica de Predicados. Representação de Conhecimento. Uranus. Aphrodite Kronos Atlas Prometheus

Transcrição:

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 meio 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 Horn São fórmulas da forma ϕ ϕ 1,..., ϕ n para n 0, onde ϕ é uma conclusão e ϕ 1,..., ϕ n são premissas (condições) Tipos de cláusulas: Fato...: ϕ Regra...: ϕ ϕ 1,..., ϕ n Consulta...: ϕ 1,..., ϕ n Contradição...: Um programa lógico é composto apenas por 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 uma inferência é uma nova consulta ou 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,abel) pai(adao,y), pai(y,z) pai(abel,z) {Y=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} Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 5

SLD-refutação Programa lógico 1 O que é saudável? (1) bebe(ze,pinga) (2) bebe(mane,agua) (3) vivo(mane) (4) saudavel(x) bebe(y,x), vivo(y) Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 6

SLD-refutação Programa lógico 1 O que é saudável? (1) bebe(ze,pinga) (2) bebe(mane,agua) (3) vivo(mane) (4) saudavel(x) bebe(y,x), vivo(y) Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 7

SLD-refutação Programa lógico 1 O que é saudável? (1) bebe(ze,pinga) (2) bebe(mane,agua) (3) vivo(mane) (4) saudavel(x) bebe(y,x), vivo(y) Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 8

SLD-refutação Programa lógico 1 O que é saudável? (1) bebe(ze,pinga) (2) bebe(mane,agua) (3) vivo(mane) (4) saudavel(x) bebe(y,x), vivo(y) Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 9

SLD-refutação Programa lógico 1 O que é saudável? (1) bebe(ze,pinga) (2) bebe(mane,agua) (3) vivo(mane) (4) saudavel(x) bebe(y,x), vivo(y) Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 10

SLD-refutação Programa lógico 2 Ana fala que idioma? (1) nasceu(ana,brasil) (2) nasceu(yves,franca) (3) idioma(brasil,portugues) (4) idioma(franca,frances) (5) estudou(ana,frances) (6) fala(a,c) nasceu(a,b), idioma(b,c) (7) fala(d,e) estudou(d,e) Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 11

SLD-refutação Programa lógico 2 Yves fala que idioma? (1) nasceu(ana,brasil) (2) nasceu(yves,franca) (3) idioma(brasil,portugues) (4) idioma(franca,frances) (5) estudou(ana,frances) (6) fala(a,c) nasceu(a,b), idioma(b,c) (7) fala(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) gosta(ary,eva) (2) gosta(ivo,ana) (3) gosta(ivo,eva) (4) gosta(eva,ary) (5) gosta(ana,ary) (6) namora(a,b) gosta(a,b), 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,ary).?- namora(ivo,ana).?- namora(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) pai(adão,caim) (2) pai(adão,abel) (3) pai(adão,seth) (4) pai(seth,enos) (5) avô(a,c) pai(a,b), pai(b,c) (6) irmão(d,e) pai(f,d), pai(f,e) Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 15

Predicados computáveis Predicado computável é um predicado avaliado diretamente pelo procedimento de refutação, sem que este tenha que estar definido no programa lógico. Exemplos: operadores aritméticos: +, -, *, / operadores relacionais: =,, <,, >, A SLD-refutação sinaliza fracasso se um predicado computável resulta em falso! Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 16

Predicados computáveis Programa lógico 5 Quem é irmão de Caim? (1) pai(adão,caim) (2) pai(adão,abel) (3) pai(adão,seth) (4) irmão(x,y) pai(z,x), pai(z,y), X 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) gosta(ary,eva) (2) gosta(ivo,ana) (3) gosta(ary,bia) (4) gosta(eva,ary) (5) namora(a,b) gosta(a,b), gosta(b,a) (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 mundo fechado: tudo o que é verdadeiro está declarado! Mecanismo de negação por falha finita Ao encontrar um literal negativo ( λ λ) o sistema dispara uma sub-prova do literal complementar (λ): λ se a prova de λ termina com sucesso, a prova de λ termina com fracasso se a prova de λ termina com fracasso, a prova de λ termina com sucesso Prolog implementa negação por falha finita através do predicado computável not/1. Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 19

Negação por falha finita Programa lógico 7 Quem voa? (1) ave(fred) (2) ave(bob) (3) pimguim(fred) (4) voa(x) ave(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) igual(x,x) (2) diferente(x,y) igual(x,y) Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 21

Bônus: interface gráfica main :- new(d, (D,dialog dialog('interface gráfica')), new(t, (T,text_item text_item('nome')), send(d,append,t), send(d,append, (D,append,button button(ok, (ok,message message(@prolog,oi,t? (@prolog,oi,t?selection selection))), send(d,append, (D,append,button button(limpar, (limpar,message message(t, (T,clear clear))), send(d,append, (D,append,button button(sair, (sair,message message(d, (D,destroy destroy))), send(d,open). oi(n) :- format('~noi ~w~n',[n]). % exibe saudação Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 22

Fim