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

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

Inteligência Artificial IA IV. RACIOCÍNIO BASEADO EM REGRAS

Lógica predicados. Lógica predicados (continuação)

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

Linguagens Lógicas. Aluno: Victor Rocha

Inteligência Artificial 2016/2017. Grupo 1 Perguntas obrigatórias (15 Minutos)

Inteligência Artificial IA II. LÓGICA DE PREDICADOS PARA REPRESENTAÇÃO DO CONHECIMENTO

Fundamentos 1. Lógica de Predicados

Já falamos que, na Matemática, tudo se baseia em axiomas. Já estudamos os números inteiros partindo dos seus axiomas.

Paradigmas de Linguagens de Programação. Linguagens de Programação Lógicas

Lógica para computação - Linguagem da Lógica de Predicados

BUSCA DE SOLUÇÕES EM PROLOG

UNIDADE ACADÊMICA: Faculdade de

Cálculo proposicional

Introdução à Programação em Prolog

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

Inteligência Artificial Apontamentos para as aulas Luís Miguel Botelho

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

MD Lógica de Proposições Quantificadas Cálculo de Predicados 1

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

Capítulo 3 Lógica de Primeira Ordem

Lógica Proposicional (Consequência lógica / Dedução formal)

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

Negação. Matemática Básica. Negação. Negação. Humberto José Bortolossi. Parte 3. Regras do Jogo. Regras do Jogo

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

03/04/2016 LÓGICA MATEMÁTICA. Prof. Esp. Fabiano Taguchi. Introdução ao Prolog

Elisabete Raposo Freire Departamento de Matemática Universidade dos Açores 21 Abril 2012

Lógica. Fernando Fontes. Universidade do Minho. Fernando Fontes (Universidade do Minho) Lógica 1 / 65

INE5403 FUNDAMENTOS DE MATEMÁTICA DISCRETA

Linguagens Lógicas. Alunos: Josiane Novais Cláudio Moisés

Conferencia 6 Estruturas, pregados para o trabalho com estruturas, seletores. MSc. Angel Alberto Vazquez Sánchez

Prof. Dr. Silvio do Lago Pereira

Lógica. Cálculo Proposicional. Introdução

INE5403 FUNDAMENTOS DE MATEMÁTICA DISCRETA

Métodos para a construção de algoritmo

Análise de Algoritmos

Prolog. MATA56 - Paradigmas de Linguagens de Programação, UFBA, Prof. Rodrigo Rocha Prolog. Iniciando.

Gabarito da Avaliação 3 de Lógica Computacional 1

INTELIGÊNCIA ARTIFICIAL

Lógica de Predicados. Quantificadores

Cálculo proposicional

Linguagem com sintaxe e semântica precisas: lógica. Mecanismo de inferência: derivado da sintaxe e da

1 TEORIA DOS CONJUNTOS

1. Métodos de prova: Construção; Contradição.

Introdução. Esse programa recebeu o nome PROLOG (do francês PROgramation et LOGique ).

Linguagens de Programação Princípios e Paradigmas

Aula 1 Aula 2. Ana Carolina Boero. Página:

Lógica Computacional

INF 1771 Inteligência Artificial

Algoritmia e Programação APROG. Algoritmia 1. Lógica Proposicional (Noções Básicas) Nelson Freire (ISEP DEI-APROG 2013/14) 1/12

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

Para provar uma implicação se p, então q, é suficiente fazer o seguinte:

INF 1771 Inteligência Artificial

Prof. Dr. Alexandre da Silva Simões UNESP

Lógica Proposicional

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

Lógica de Predicados. Correção dos Exercícios Regras de Inferência

Introdução à Programação Prolog (Tutorial) Introdução. Programação Lógica. Programação em Prolog. Programação Lógica. Definindo Relações por Fatos

2 AULA. Conectivos e Quantificadores. lógicas. LIVRO. META: Introduzir os conectivos e quantificadores

Lógica Proposicional Parte 3

Lógica Formal. Matemática Discreta. Prof. Vilson Heck Junior

01. [Sebesta, 2000] Quais são os três principais usos da lógica simbólica na lógica formal?

Matemática discreta e Lógica Matemática

Lógica Formal. Matemática Discreta. Prof Marcelo Maraschin de Souza

01/09/2014. Capítulo 1. A linguagem da Lógica Proposicional

Professor conteudista: Ricardo Holderegger

n. 18 ALGUNS TERMOS...

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

Lógica dos Conectivos: demonstrações indiretas

Listas em Prolog. Listas

Capítulo 3 Lógica de Primeira Ordem

Cálculo de Predicados. Matemática Discreta. Profa. Sheila Morais de Almeida DAINF-UTFPR-PG. março

Fundamentos de Matemática

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

Sistemas Dedutivos Lógica de 1ª. Ordem (LPO)

Lógica dos Conectivos: demonstrações indiretas

Recursão PROGRAMAÇÃO EM LÓGICA. Recursão. Sonho Recursivo. Recursão. Recursão. Linguagem Prolog Parte IV

Sistemas Especialistas

Universidade Federal do Espírito Santo Centro de Ciências Agrárias CCA UFES Departamento de Computação. Sentenças Abertas

Inteligência Artificial

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

Programação de Computadores:

Lógica Proposicional Parte 2

MATEMÁTICA DISCRETA CONCEITOS PRELIMINARES

SEMÂNTICA. Rogério Rocha. rode = program simples = var x : int := 3 in x := x + 5 end.

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

aula 01 (Lógica) Ementa Professor: Renê Furtado Felix Site:

Aula 2, 2014/2 Sintaxe da Lógica dos Conectivos

Redes Neurais (Inteligência Artificial)

30/04/2013. Prof. Hudson Costa

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

Prof. Jorge Cavalcanti

Matemática Discreta - 04

Quantificadores, Predicados e Validade

Demonstrações. Terminologia Métodos

Lógica de Predicados

IME, UFF 3 de junho de 2014

Introdução à Computação (IC) Algoritmos: Expressões lógicas

Programa Analítico de Disciplina SIN213 Projeto de Algoritmos

Uma proposição é uma frase que pode ser apenas verdadeira ou falsa. Exemplos:

Transcrição:

SCC-630 - Capítulo 5 Representação de Conhecimento através do Prolog João Luís Garcia Rosa 1 1 Departamento de Ciências de Computação Instituto de Ciências Matemáticas e de Computação Universidade de São Paulo - São Carlos 2011 João Luís G. Rosa c 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 1/47

Sumário Representação do Conhecimento 1 Representação do Conhecimento Encadeamento Regressivo do Prolog 2 Exemplo Incluindo Regras Regra recursiva 3 João Luís G. Rosa c 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 2/47

Sumário Representação do Conhecimento Encadeamento Regressivo do Prolog 1 Representação do Conhecimento Encadeamento Regressivo do Prolog 2 Exemplo Incluindo Regras Regra recursiva 3 João Luís G. Rosa c 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 3/47

Prolog Representação do Conhecimento Encadeamento Regressivo do Prolog A idéia de usar lógica como um formalismo executável em computador recebeu um grande ímpeto com o advento da linguagem Prolog ( PROgrammation en LOGic ). Desenvolvida na década de 1970 em Edinburgh, a linguagem Prolog tem a sua aplicação dirigida à computação simbólica (não-numérica). Trata-se de uma evolução das linguagens de computador, pois Prolog tem características de linguagens procedimentais (o como), e de linguagens declarativas (o que). João Luís G. Rosa c 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 4/47

Encadeamento Regressivo do Prolog Prolog é uma linguagem de programação lógica. Um programa Prolog é uma base de conhecimento, onde cada asserção é uma tradução de uma implicação da lógica. A máquina de inferência do Prolog é capaz de realizar deduções lógicas a partir desta base de conhecimento e produzir conhecimento novo. Considere, por exemplo, as seguintes proposições [3]: 1 Todos os homens são mortais. 2 Platão é um homem. 3 Platão é mortal. João Luís G. Rosa c 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 5/47

Encadeamento Regressivo do Prolog Para a lógica, as duas primeiras proposições são premissas e a terceira é a conclusão lógica destas premissas. Na lógica de predicados de primeira ordem tem-se: X(homem(X) mortal(x)) (1) homem(platao) (2) mortal(platao) (3) onde a terceira fórmula seria facilmente obtida a partir das duas primeiras usando qualquer ferramenta lógica de dedução, como por exemplo a regra da resolução. João Luís G. Rosa c 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 6/47

Encadeamento Regressivo do Prolog Toda implicação da lógica da forma a b, equivalente a a b, gera uma regra Prolog da forma b :- a. Logo, um programa Prolog para esta base de conhecimento seria: mortal(x) :- homem(x). homem(platão). A partir deste programa, ao se perguntar se mortal(platão) é verdadeiro, a máquina de inferência do Prolog responde que sim (yes). João Luís G. Rosa c 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 7/47

Sumário Representação do Conhecimento Encadeamento Regressivo do Prolog 1 Representação do Conhecimento Encadeamento Regressivo do Prolog 2 Exemplo Incluindo Regras Regra recursiva 3 João Luís G. Rosa c 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 8/47

Encadeamento Regressivo do Prolog Encadeamento Regressivo do Prolog A linguagem Prolog trabalha com encadeamento regressivo. Por exemplo, seja o seguinte programa: p(x,y) :- q(x,y). q(a,b). E se coloque a seguinte questão:?- p(a,b). Prolog faz as instanciações X = a e Y = b, e dispara a primeira regra, ou seja, troca p(a,b) por q(a,b). (Na verdade, como p(x,y) :- q(x,y) corresponde à implicação da lógica q(x, Y ) p(x, Y ), então o Prolog está trocando o conseqüente da implicação p(a, b) pelo seu antecedente q(a, b), ou seja, encadeamento regressivo). João Luís G. Rosa c 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 9/47

Sumário Representação do Conhecimento Encadeamento Regressivo do Prolog 1 Representação do Conhecimento Encadeamento Regressivo do Prolog 2 Exemplo Incluindo Regras Regra recursiva 3 João Luís G. Rosa c 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 10/47

Encadeamento Regressivo do Prolog Uma cláusula (disjunção de literais) consiste de literais positivos e negativos: Usando a lei de De Morgan: p 0 p 1... n 0 n 1... (4) p q (p q) (5) pode-se expressar as cláusulas como uma única implicação: (n 0 n 1...) (p 0 p 1...) (6) João Luís G. Rosa c 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 11/47

Encadeamento Regressivo do Prolog Prolog não é baseado na forma clausal completa, mas sim num subconjunto bem menos expressivo, as cláusulas de Horn, que são cláusulas com no máximo um literal positivo. Existem então apenas três tipos de cláusulas de Horn: cláusulas unitárias: com um literal positivo da forma p 0 (ou, equivalentemente, p 0 ). cláusulas não unitárias: com um literal positivo e um ou mais literais negativos, isto é, da forma p 0 n 0 n 1... (ou, equivalentemente, (n 0 n 1...) p 0 ). cláusulas negativas: sem literais positivos, com um ou mais literais negativos, isto é, da forma n 0 n 1... (ou, equivalentemente, (n 0 n 1...) ). João Luís G. Rosa c 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 12/47

Encadeamento Regressivo do Prolog Os dois primeiros tipos de cláusulas de Horn são conhecidas como cláusulas definidas porque têm exatamente um literal positivo - uma única conclusão definida para a implicação - ao contrário de cláusulas gerais com seu conseqüente potencialmente disjuntivo e indefinido. João Luís G. Rosa c 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 13/47

Sumário Representação do Conhecimento Exemplo Incluindo Regras Regra recursiva 1 Representação do Conhecimento Encadeamento Regressivo do Prolog 2 Exemplo Incluindo Regras Regra recursiva 3 João Luís G. Rosa c 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 14/47

Exemplo: Relações familiares Exemplo Incluindo Regras Regra recursiva Prolog é adequada para resolver problemas que envolvem objetos e relações entre objetos. Veja o exemplo da árvore familiar da figura abaixo [1]: João Luís G. Rosa c 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 15/47

Exemplo: Relações familiares Exemplo Incluindo Regras Regra recursiva O fato de que Tom é pais (pai/mãe) de Bob se escreve: pais(tom,bob). pais: relação tom, bob: argumentos Os fatos na árvore familiar do exemplo são: pais(pam,bob). pais(tom,bob). pais(bob,ann). pais(bob,pat). pais(tom,liz). pais(pat,jim). João Luís G. Rosa c 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 16/47

Exemplo: Relações familiares Exemplo Incluindo Regras Regra recursiva São 6 cláusulas declarando fatos sobre a relação pais. Uma vez comunicado ao sistema Prolog os fatos sobre a relação pais, pode-se colocar questões:? - pais(bob,pat). yes? - pais(liz,pat). no? - pais(x,liz). X = tom Outra relação, avós:? - pais(y,jim),pais(x,y). X = bob Y = pat João Luís G. Rosa c 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 17/47

Resumo Representação do Conhecimento Exemplo Incluindo Regras Regra recursiva Uma relação é definida pelo estabelecimento das n-uplas de objetos que satisfazem a relação. Um programa Prolog é constituído de cláusulas. Cada cláusula termina com um ponto. Os argumentos das relações podem ser (entre outras coisas) constantes ou variáveis. Perguntas ao sistema Prolog são constituídas de um ou mais objetivos. Uma seqüência de objetivos separados por vírgulas significa a conjunção desses objetivos. João Luís G. Rosa c 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 18/47

Sumário Representação do Conhecimento Exemplo Incluindo Regras Regra recursiva 1 Representação do Conhecimento Encadeamento Regressivo do Prolog 2 Exemplo Incluindo Regras Regra recursiva 3 João Luís G. Rosa c 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 19/47

Exemplo Incluindo Regras Regra recursiva Estendendo o exemplo através de regras Vai-se incluir uma nova informação para a base de dados: o sexo das pessoas. Pode-se usar uma relação unária: feminino(pam). masculino(tom). ou usar uma relação binária: sexo(pam,feminino). sexo(tom,masculino). João Luís G. Rosa c 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 20/47

Exemplo Incluindo Regras Regra recursiva Estendendo o exemplo através de regras Para a também nova relação filhos (filho/filha), que é o inverso da relação pais. cabeça corpo filhos(y,x) :- pais(x,y). (conclusão) (condição) em Linguagem de Predicados de Primeira Ordem: X Y (pais(x, Y ) filhos(y, X)) (7) João Luís G. Rosa c 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 21/47

Exemplo Incluindo Regras Regra recursiva Estendendo o exemplo através de regras A diferença principal entre fatos e regras, é que o fato é uma cláusula incondicionalmente verdadeira, e a regra é uma cláusula que pode ser verdade dependendo se alguma condição for verdade. Como as regras são usadas em Prolog? Para a verificação da veracidade do seguinte fato:? - filhos(liz,tom). % liz é filha de tom? o procedimento do Prolog, para executar a prova de tal fato é o seguinte: João Luís G. Rosa c 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 22/47

Exemplo Incluindo Regras Regra recursiva Estendendo o exemplo através de regras 1 Procura tal fato na base de conhecimento. Não existe tal fato. 2 Procura se existe uma regra sobre a relação filhos. Como existe, aplica a particular instanciação X = tom e Y = liz, ou seja, filhos(liz,tom) :- pais(tom,liz). 3 O objetivo original filhos(liz,tom) é substituído por um novo objetivo: pais(tom,liz). 4 O novo objetivo é encontrado como um fato na base de conhecimento e o Prolog responde yes. João Luís G. Rosa c 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 23/47

Resumo Representação do Conhecimento Exemplo Incluindo Regras Regra recursiva Cláusulas em Prolog são constituídas de cabeça e corpo. O corpo é uma lista de objetivos separados por vírgulas, esta entendida como conjunção de objetivos. Cláusulas em Prolog: fatos, regras e questões: Fatos declaram coisas verdadeiras e possuem só cabeça. Regras declaram coisas que são verdade dependendo de uma condição e possuem cabeça e corpo. Questões: através delas o usuário pode perguntar ao programa sobre a verdade de certas coisas e possuem somente corpo. Durante a execução, uma variável pode ser instanciada por algum objeto. Variáveis são assumidas ser universalmente quantificadas e são lidas como para todo. Leituras alternativas são possíveis para variáveis que aparecem somente no corpo. João Luís G. Rosa c 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 24/47

Sumário Representação do Conhecimento Exemplo Incluindo Regras Regra recursiva 1 Representação do Conhecimento Encadeamento Regressivo do Prolog 2 Exemplo Incluindo Regras Regra recursiva 3 João Luís G. Rosa c 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 25/47

Definição recursiva de regra Exemplo Incluindo Regras Regra recursiva Para definir uma nova relação, predecessor, vai-se fazê-lo da seguinte forma: predecessor(x,z) :- pais(x,z). predecessor(x,z) :- pais(x,y), predecessor(y,z). Note que a definição do predicado predecessor usa recursividade. A programação recursiva é um dos princípios fundamentais da programação em Prolog. A relação predecessor é definida por duas cláusulas, o que consiste em um procedimento. João Luís G. Rosa c 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 26/47

Sumário Representação do Conhecimento 1 Representação do Conhecimento Encadeamento Regressivo do Prolog 2 Exemplo Incluindo Regras Regra recursiva 3 João Luís G. Rosa c 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 27/47

Uma questão em Prolog é uma seqüência de objetivos (um ou mais). Prolog tenta satisfazer os objetivos, isto é, demonstrar que os objetivos seguem logicamente a partir dos fatos e regras do programa. Se as questões contêm variáveis, Prolog também tenta achar a particular instanciação que satisfaz os objetivos. Os fatos e regras são aceitos como um conjunto de axiomas (hipóteses). João Luís G. Rosa c 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 28/47

A questão do usuário é aceita como uma possível tese de um teorema. Prolog tenta provar esse teorema (demonstrar que ele segue logicamente dos axiomas). Prolog realiza encadeamento lógico regressivo, ou seja, a partir da meta, aplica as regras (no sentido regressivo) e termina nos fatos. Pode-se dizer também que Prolog parte da negação (implícita) da meta até chegar a cláusula vazia, utilizando a estratégia por preferência unitária (demonstração por absurdo): refutação. João Luís G. Rosa c 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 29/47

Exemplo: seqüência de prova da conjectura (tese):?- predecessor(tom,pat). Observação: note o sinal - após a interrogação no prompt do interpretador Prolog. Esse sinal representa que a cláusula meta deve ser negada antes do início da prova. Essa negação é feita internamente pelo mecanismo de inferência do Prolog. Mesmo porque, a questão Prolog deve ser um (ou mais) literal negativo! João Luís G. Rosa c 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 30/47

1 Prolog procura um fato que combine com o objetivo: se sim: yes se não: vai para o passo 2. Quando Prolog encontra o fato que unifica com a meta, aplica-se a regra da resolução (literal negativo da meta e literal positivo do fato se cancelam, resultando na cláusula vazia). A razão do Prolog procurar primeiro o fato é que a estratégia usada é a preferência unitária e o fato é cláusula unitária. Apesar da estratégia por preferência unitária não ser completa, é a mais eficiente de todas. Caso a busca não seja bem sucedida, o Prolog realiza o backtracking e uma nova busca é efetuada. João Luís G. Rosa c 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 31/47

2 Prolog procura uma regra cuja cabeça combine com o objetivo: se não: no se sim: vai para o passo 3. Se não há fato e nem regra cuja cabeça (literal positivo), então não há como aplicar a regra da resolução. Portanto não há solução. João Luís G. Rosa c 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 32/47

3 Prolog dispara a regra para a particular instanciação predecessor(x,z) :- pais(x,z). X = tom Z = pat e substitui o objetivo corrente por? - pais(tom,pat). A cabeça da regra corresponde ao conseqüente da implicação lógica (conclusão) e o corpo ao antecedente (condição). Quando Prolog dispara a regra, na verdade troca a cabeça pelo corpo, ou seja, retorna do conseqüente para o antecedente na implicação lógica (encadeamento regressivo). Em termos de regra da resolução: trocar a cabeça pelo corpo significa cancelar o literal negativo da meta com o literal positivo da cabeça, resultando no literal negativo do corpo da cláusula Prolog. João Luís G. Rosa c 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 33/47

4 Prolog procura uma cláusula cuja cabeça combina com o objetivo (novo) se sim e cláusula = fato: yes se sim e cláusula = regra: dispara a regra se não: backtrack Repete-se o processo. Caso encontre um fato, termina, pois no encadeamento regressivo o encadeamento termina no fato. E na refutação, encontrar o fato significa chegar à cláusula vazia (lembre-se: havia um literal negativo e o fato é seu literal complementar). João Luís G. Rosa c 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 34/47

5 Prolog dispara a segunda regra predecessor(x,z) :- pais(x,y), predecessor(y,z). X = tom Z = pat e substitui o objetivo corrente? - pais (tom,y), predecessor (Y,pat). João Luís G. Rosa c 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 35/47

6 Prolog procura o primeiro objetivo, que combina com o fato pais(tom,bob), instanciando Y = bob. 7 Resta analisar? - predecessor(bob,pat). 8 Prolog dispara a primeira regra novamente e substitui o objetivo? - pais(bob,pat). que finalmente é encontrado como fato no banco de conhecimento. João Luís G. Rosa c 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 36/47

Sumário Representação do Conhecimento 1 Representação do Conhecimento Encadeamento Regressivo do Prolog 2 Exemplo Incluindo Regras Regra recursiva 3 João Luís G. Rosa c 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 37/47

É possível distinguir entre os significados declarativo (o que) do procedimental (o como) de um programa Prolog. A habilidade do Prolog realizar muitos detalhes procedimentais por si mesmo é considerado uma de suas vantagens. João Luís G. Rosa c 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 38/47

Resumo Representação do Conhecimento A programação em Prolog consiste em definir relações e fazer questões sobre essas relações. Prolog consiste de cláusulas de três tipos: fatos, regras e questões. Uma relação pode ser especificada por fatos simplesmente estabelecendo as n-uplas de objetos que satisfazem a relação, ou estabelecendo regras a respeito da relação. Um procedimento é um conjunto de cláusulas a respeito de uma mesma relação. João Luís G. Rosa c 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 39/47

Resumo Representação do Conhecimento Questionar sobre relações, através de perguntas, lembra questionar um banco de dados. A resposta consiste de um conjunto de objetos que satisfazem a questão. A resposta é obtida através de um complexo processo que envolve inferência lógica, exploração entre alternativas, backtracking. Existem dois significados nos programas Prolog: declarativo e procedimental. O declarativo é vantajoso do ponto de vista da programação. Apesar de que os detalhes procedimentais muitas vezes devem ser considerados pelo programador. João Luís G. Rosa c 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 40/47

Sumário Representação do Conhecimento 1 Representação do Conhecimento Encadeamento Regressivo do Prolog 2 Exemplo Incluindo Regras Regra recursiva 3 João Luís G. Rosa c 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 41/47

Listas Representação do Conhecimento A lista é uma estrutura de dados simples muito usada em programação não-numérica. Uma lista é uma seqüência de qualquer número de itens, tais como ana, tenis, tom, esqui. Tal lista pode ser escrita em Prolog como: [ana, tenis, tom, esqui] Esta é entretanto, apenas a aparência externa das listas, pois todos os objetos estruturados em Prolog são árvores. João Luís G. Rosa c 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 42/47

Listas Representação do Conhecimento Como se pode representar uma lista como um objeto Prolog padrão? Deve-se considerar dois casos: ou a lista está vazia ou não vazia. No primeiro caso, a lista é simplesmente escrita como o átomo do Prolog, []. No segundo caso, a lista pode ser vista como consistindo de duas coisas: 1 o primeiro item, chamado a cabeça da lista; 2 a parte remanescente da lista, chamada de cauda. João Luís G. Rosa c 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 43/47

Resumo Representação do Conhecimento Uma lista é uma estrutura de dados que ou está vazia ou consiste de duas partes: uma cabeça e uma cauda. A cauda por sua vez também é uma lista. As listas são manipuladas pelo Prolog com um caso especial de árvores binárias. Para melhorar a legibilidade, Prolog provê uma notação especial para listas: [Item1, Item2,...] ou [Cabeca Cauda] ou [Item1, Item2,... Outros] João Luís G. Rosa c 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 44/47

Conclusões Representação do Conhecimento Prolog é a linguagem para programação lógica e pode fazer muitas coisas. Mas tem quatro fraquezas lógicas fundamentais [5]: 1 Prolog não permite fatos ou conclusões disjuntivos, ou seja, sentenças onde uma ou mais coisas são verdadeiras, mas não se sabe quais. 2 Prolog não permite fatos ou conclusões negativos, isto é, sentenças diretas onde alguma coisa é falsa. 3 Prolog não permite que muitos fatos, conclusões ou regras tenham quantificação existencial, isto é, sentenças onde exista algum valor de variável, ainda que não se saiba qual, tal que o predicado que a contém seja verdadeiro. 4 Prolog não permite diretamente lógica de segunda ordem, nomes de predicados como variáveis, isto é, sentenças sobre P onde P significa um nome de predicado. João Luís G. Rosa c 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 45/47

Apêndice Bibliografia Referências I [1] Bratko, I. Prolog Programming for Artificial Intelligence. 3rd edition. Addison-Wesley Pub Co., 2000. [2] Casanova, M. A., Giorno, F. A. C., Furtado, A. L. Programação em Lógica e a Linguagem Prolog. Ed. Edgard Blücher Ltda., 1987 [3] Pereira, F. C. N., Shieber, S. M. Prolog and Natural Language Analysis. CSLI - Center for the Study of Language and Information, 1987. João Luís G. Rosa c 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 46/47

Apêndice Bibliografia Referências II [4] Rosa, J. L. G. Fundamentos da Inteligência Artificial. Editora LTC. Rio de Janeiro, 2011. No prelo. [5] Rowe, N. C. Artificial Intelligence Through Prolog. Prentice Hall, 1988. João Luís G. Rosa c 2011 - SCC-630: V. Representação de Conhecimento através do Prolog 47/47