GSI010 - Programa˘c~ao L ogicaalbertini/1sem2013/prolog/aulas/aula01.pdf · O que e Prolog I...

Preview:

Citation preview

GSI010 - Programacao Logica

Organizacao da disciplina

I prof. Marcelo Keese Albertini

I albertini@facom.ufu.br

I Sala 1A-230I http://www.facom.ufu.br/~albertini/prolog

I Informacoes sobre a disciplinaI plano de aulaI notasI trabalhosI datasI slidesI avisosI listas de exercıciosI exemplos de aula

Avaliacao

I 3 provas teoricas, somando 85 pontosI 1a. prova: 05/07/2013, valendo 25 pontosI 2a. prova: 16/08/2013, valendo 30 pontosI 3a. prova: 20/09/2013, valendo 30 pontos

I listas de exercıcios preparatorios e trabalhos, somando 15pontos

Referencias Bibliograficas

Na biblioteca

I Clocksin, W. E and Mellish, C.S. Programming in Prolog, 2nded. 1984.

I Arariboia, G. Inteligencia Articial: um curso pratico. 1988.

I Bratko, I. Prolog Programming for Artificial Intelligence, 2nded. 1990.

Na InternetI Luiz A. M. Palazzo. Introducao a programacao Prolog

I http://puig.pro.br/Logica/palazzo.pdf

I Eloi L. Favero. Programacao em Prolog: uma abordagempratica

I http://www3.ufpa.br/favero

I Patrick Blackburn, Johan Bos and Kristina Striegnitz. LearnProlog Now!

I http://www.learnprolognow.org

Introducao

I Conceitos fundamentais da Programacao em Logica

I Desenvolvimento de aplicacoes em PrologI Implementacao utilizada: Swi-Prolog

I http://www.swi-prolog.org

O que e Prolog

I Introducao aos conceitos basicos da programacao em logica eda linguagem Prolog.

I Fatos e regras.

I Resolucao, unificacao, corte e negacao.

I Recursao, controle da execucao e estruturas de dados.

I Semantica declarativa e procedimental.

I Desenvolvimento de aplicacoes em Prolog.

Sintaxe do Prolog

Paradigma logicoI paradigma declarativo

I descrevem o problema, em vez da solucaoI descreve o que deve ser feito, em vez de como

Principal linguagem

I Prolog: Programming in Logic

Sintaxe do Prolog

Porque declarativo?

I declaracao de fatos

I declaracao de regrasI execucao de codigo por meio de consultas

I o prolog avalia consultas de acordo com as regras e fatospreviamente definidos

I o que nao esta declarado e falso ou tem resposta negativa

I conceito de mundo fechado

Declaracoes

ConhecimentoJoao que amava Teresa que amava Raimundo que amava Mariaque amava Joaquim que amava Lili que nao amava ninguem. Joaofoi para os Estados Unidos, Teresa para o convento, Raimundomorreu de desastre, Maria ficou para tia, Joaquim suicidou-se e Lilicasou com J. Pinto Fernandes que nao tinha entrado na historia.

Transformando em fatos

1 amava ( jo ao , t e r e s a ) .2 amava ( t e r e s a , ra imundo ) .3 amava ( raimundo , joaqu im ) .4 amava ( joaquim , l i l i ) .5 f o i p a r a ( jo ao , e s t a d o s u n i d o s ) .6 f o i p a r a ( t e r e s a , convento ) .7 f o i p a r a ( raimundo , c eu ) .8 f o i p a r a ( joaquim , ceu ) .9 f o i p a r a ( l i l i , f e r n a n d e s ) .

E as letras maiusculas?

Declaracoes

ConhecimentoJoao que amava Teresa que amava Raimundo que amava Mariaque amava Joaquim que amava Lili que nao amava ninguem. Joaofoi para os Estados Unidos, Teresa para o convento, Raimundomorreu de desastre, Maria ficou para tia, Joaquim suicidou-se e Lilicasou com J. Pinto Fernandes que nao tinha entrado na historia.

Transformando em fatos

1 amava ( jo ao , t e r e s a ) .2 amava ( t e r e s a , ra imundo ) .3 amava ( raimundo , joaqu im ) .4 amava ( joaquim , l i l i ) .5 f o i p a r a ( jo ao , e s t a d o s u n i d o s ) .6 f o i p a r a ( t e r e s a , convento ) .7 f o i p a r a ( raimundo , c eu ) .8 f o i p a r a ( joaquim , ceu ) .9 f o i p a r a ( l i l i , f e r n a n d e s ) .

E as letras maiusculas?

Declaracoes

ConhecimentoJoao que amava Teresa que amava Raimundo que amava Mariaque amava Joaquim que amava Lili que nao amava ninguem. Joaofoi para os Estados Unidos, Teresa para o convento, Raimundomorreu de desastre, Maria ficou para tia, Joaquim suicidou-se e Lilicasou com J. Pinto Fernandes que nao tinha entrado na historia.

Transformando em fatos

1 amava ( jo ao , t e r e s a ) .2 amava ( t e r e s a , ra imundo ) .3 amava ( raimundo , joaqu im ) .4 amava ( joaquim , l i l i ) .5 f o i p a r a ( jo ao , e s t a d o s u n i d o s ) .6 f o i p a r a ( t e r e s a , convento ) .7 f o i p a r a ( raimundo , c eu ) .8 f o i p a r a ( joaquim , ceu ) .9 f o i p a r a ( l i l i , f e r n a n d e s ) .

E as letras maiusculas?

Aplicacoes da programacao logica

I Sistemas Baseados em ConhecimentoI sistemas que aplicam mecanismos automatizados de

racioncınio para a representacao e inferencia de conhecimento

I Bancos de Dados “Inteligentes”I sistemas que empregam “agentes” de busca de dados com

base em criterios

I Sistemas EspecialistasI sistemas que emulam a especializacao humana em algum

domınio especıfico

I Processamento da Linguagem NaturalI usada para desenvolvimento de ferramentas para a

comunicacao homem-maquina em geral e para a construcao deinterfaces

Aplicacoes

I NASAI Clarissa: interface de voz para execucao de procedimentos da

Estacao Espacial Internacional

I Industria de aviacao, em solucoes de planejamento eescalonamento

I coordena 30% do trafico aereo do mundo (2010)I http://www.travelport.com/Careers/InternshipI Estagio 2013: Experience in one or more of the following

languages: .NET (C#, ASP), C++, Prolog, C, Java,HTML/CSS

I Prolog “comercial”I Artigo SICStus Prolog–the first 25 years, 2010

I Mineracao de dadosI busca automatica em bancos de dados por padroes e

relacionamentos significantesI RDS (Compumine usando SICStus Prolog)

Mudanca de paradigma

Desenvolvimento

I pensar declarativamente, nao mais em “procedimentos”

I modo de abordar problemas e diferente

I linguagem de alto nıvel

I permite a rapida construcao de prototiposI permite abordar problemas complexos com pouco codigo

I mecanismo de busca de solucoes para problema e inerente aoProlog

Base de conhecimento 1

1 mulher ( mar ia ) .2 mulher ( j o a n a ) .3 mulher ( i o l a n d a ) .4 t o c a V i o l a o ( j o a n a ) .5 f e s t a .

1 ?− mulher ( mar ia ) .2 t r u e3 ?− t o c a V i o l a o ( j o a n a ) .4 t r u e5 ?− t o c a V i o l a o ( mar ia ) .6 f a l s e

Base de conhecimento 1

1 mulher ( mar ia ) .2 mulher ( j o a n a ) .3 mulher ( i o l a n d a ) .4 t o c a V i o l a o ( j o a n a ) .5 f e s t a .

1 ?−

mulher ( mar ia ) .2 t r u e3 ?− t o c a V i o l a o ( j o a n a ) .4 t r u e5 ?− t o c a V i o l a o ( mar ia ) .6 f a l s e

Base de conhecimento 1

1 mulher ( mar ia ) .2 mulher ( j o a n a ) .3 mulher ( i o l a n d a ) .4 t o c a V i o l a o ( j o a n a ) .5 f e s t a .

1 ?− mulher ( mar ia ) .2

t r u e3 ?− t o c a V i o l a o ( j o a n a ) .4 t r u e5 ?− t o c a V i o l a o ( mar ia ) .6 f a l s e

Base de conhecimento 1

1 mulher ( mar ia ) .2 mulher ( j o a n a ) .3 mulher ( i o l a n d a ) .4 t o c a V i o l a o ( j o a n a ) .5 f e s t a .

1 ?− mulher ( mar ia ) .2 t r u e3 ?−

t o c a V i o l a o ( j o a n a ) .4 t r u e5 ?− t o c a V i o l a o ( mar ia ) .6 f a l s e

Base de conhecimento 1

1 mulher ( mar ia ) .2 mulher ( j o a n a ) .3 mulher ( i o l a n d a ) .4 t o c a V i o l a o ( j o a n a ) .5 f e s t a .

1 ?− mulher ( mar ia ) .2 t r u e3 ?− t o c a V i o l a o ( j o a n a ) .4

t r u e5 ?− t o c a V i o l a o ( mar ia ) .6 f a l s e

Base de conhecimento 1

1 mulher ( mar ia ) .2 mulher ( j o a n a ) .3 mulher ( i o l a n d a ) .4 t o c a V i o l a o ( j o a n a ) .5 f e s t a .

1 ?− mulher ( mar ia ) .2 t r u e3 ?− t o c a V i o l a o ( j o a n a ) .4 t r u e5 ?−

t o c a V i o l a o ( mar ia ) .6 f a l s e

Base de conhecimento 1

1 mulher ( mar ia ) .2 mulher ( j o a n a ) .3 mulher ( i o l a n d a ) .4 t o c a V i o l a o ( j o a n a ) .5 f e s t a .

1 ?− mulher ( mar ia ) .2 t r u e3 ?− t o c a V i o l a o ( j o a n a ) .4 t r u e5 ?− t o c a V i o l a o (

mar ia ) .6 f a l s e

Base de conhecimento 1

1 mulher ( mar ia ) .2 mulher ( j o a n a ) .3 mulher ( i o l a n d a ) .4 t o c a V i o l a o ( j o a n a ) .5 f e s t a .

1 ?− mulher ( mar ia ) .2 t r u e3 ?− t o c a V i o l a o ( j o a n a ) .4 t r u e5 ?− t o c a V i o l a o ( mar ia ) .6

f a l s e

Base de conhecimento 1

1 mulher ( mar ia ) .2 mulher ( j o a n a ) .3 mulher ( i o l a n d a ) .4 t o c a V i o l a o ( j o a n a ) .5 f e s t a .

1 ?− mulher ( mar ia ) .2 t r u e3 ?− t o c a V i o l a o ( j o a n a ) .4 t r u e5 ?− t o c a V i o l a o ( mar ia ) .6 f a l s e

Base de conhecimento 1

1 mulher ( mar ia ) .2 mulher ( j o a n a ) .3 mulher ( i o l a n d a ) .4 t o c a V i o l a o ( j o a n a ) .5 f e s t a .

1 ?− t a t u a d a ( j o a n a ) .2 ERROR: p r e d i c a t e t a t u a d a /1 not d e f i n e d .34 ?− f e s t a .5 t r u e

Base de conhecimento 1

1 mulher ( mar ia ) .2 mulher ( j o a n a ) .3 mulher ( i o l a n d a ) .4 t o c a V i o l a o ( j o a n a ) .5 f e s t a .

1 ?−

t a t u a d a ( j o a n a ) .2 ERROR: p r e d i c a t e t a t u a d a /1 not d e f i n e d .34 ?− f e s t a .5 t r u e

Base de conhecimento 1

1 mulher ( mar ia ) .2 mulher ( j o a n a ) .3 mulher ( i o l a n d a ) .4 t o c a V i o l a o ( j o a n a ) .5 f e s t a .

1 ?− t a t u a d a ( j o a n a ) .2 ERROR: p r e d i c a t e t a t u a d a /1 not d e f i n e d .3

4 ?− f e s t a .5 t r u e

Base de conhecimento 1

1 mulher ( mar ia ) .2 mulher ( j o a n a ) .3 mulher ( i o l a n d a ) .4 t o c a V i o l a o ( j o a n a ) .5 f e s t a .

1 ?− t a t u a d a ( j o a n a ) .2 ERROR: p r e d i c a t e t a t u a d a /1 not d e f i n e d .34 ?− f e s t a .5

t r u e

Base de conhecimento 1

1 mulher ( mar ia ) .2 mulher ( j o a n a ) .3 mulher ( i o l a n d a ) .4 t o c a V i o l a o ( j o a n a ) .5 f e s t a .

1 ?− t a t u a d a ( j o a n a ) .2 ERROR: p r e d i c a t e t a t u a d a /1 not d e f i n e d .34 ?− f e s t a .5 t r u e

Introducao

Usuario InterfaceMotor deInferencia

Base deconhecimento

consultas

respostas

O prolog e baseado em:

I Fatos

I Regras

I Consultas

Programacao em Prolog

Fatos

I sao entendidos como relacoes entre objetos

I constituem-se de afirmacoes que sao feitas ao prolog

I sao verdades nas quais o prolog ira basear-se para responderas consultas solicitadas

I arvore genealogica

Programacao em Prolog

Joao Maria

Ana Jose

Barbara

Iris

Jorge

Fatos

1 p r o g e n i t o r ( maria , j o s e ) .

Programacao em prolog

Regras

I especificacao de algo que pode ser verdadeiro se algumascondicoes forem satisfeitas

I e composta de duas partes: conclusao (esquerda) e condicao(direita)

I exemplo: relacao Filho.

1 f i l h o (X, Y) :− p r o g e n i t o r (Y, X) .

Programacao em prolog

Consultas

I questionamentos que serao respondidos avaliando-se os fatose regras

I Joao e filho de Jose?→ ?− filho (joao , jose ) .I Quem e o filho de Jose?→?− filho (X, jose ) .I Quem sao os filhos de Joao?→?−filho(X,joao) .

I X e uma variavel que representa um objeto desconhecido

I variaveis sao escritas com a primeira letra em maiusculo

Base de conhecimento 21 p r o g e n i t o r ( maria , j o s e ) .2 p r o g e n i t o r ( jo ao , j o s e ) .3 p r o g e n i t o r ( jo ao , ana ) .4 p r o g e n i t o r ( j o s e , j u l i a ) .5 p r o g e n i t o r ( j o s e , ı r i s ) .6 p r o g e n i t o r ( ı r i s , j o r g e ) .7

8 f i l h o (X, Y) :− p r o g e n i t o r (Y, X) .

Dando nomes aos bois:

I fato: progenitor(maria, jose).I regra: filho(X, Y) :- progenitor(Y, X).

I cabeca (da regra): filho(X, Y)I corpo (da regra): progenitor(Y, X)

I clausula: um fato ou uma regra (sao 7 nessa base)

I marcado por ponto final

I functor: filho(X,Y)

I argumentos: filho(X, Y)

Base de conhecimento 21 p r o g e n i t o r ( maria , j o s e ) .2 p r o g e n i t o r ( jo ao , j o s e ) .3 p r o g e n i t o r ( jo ao , ana ) .4 p r o g e n i t o r ( j o s e , j u l i a ) .5 p r o g e n i t o r ( j o s e , ı r i s ) .6 p r o g e n i t o r ( ı r i s , j o r g e ) .78 f i l h o (X, Y) :− p r o g e n i t o r (Y, X) .

Dando nomes aos bois:

I fato: progenitor(maria, jose).

I regra: filho(X, Y) :- progenitor(Y, X).

I cabeca (da regra): filho(X, Y)I corpo (da regra): progenitor(Y, X)

I clausula: um fato ou uma regra (sao 7 nessa base)

I marcado por ponto final

I functor: filho(X,Y)

I argumentos: filho(X, Y)

Base de conhecimento 21 p r o g e n i t o r ( maria , j o s e ) .2 p r o g e n i t o r ( jo ao , j o s e ) .3 p r o g e n i t o r ( jo ao , ana ) .4 p r o g e n i t o r ( j o s e , j u l i a ) .5 p r o g e n i t o r ( j o s e , ı r i s ) .6 p r o g e n i t o r ( ı r i s , j o r g e ) .78 f i l h o (X, Y) :− p r o g e n i t o r (Y, X) .

Dando nomes aos bois:

I fato: progenitor(maria, jose).I regra: filho(X, Y) :- progenitor(Y, X).

I cabeca (da regra): filho(X, Y)I corpo (da regra): progenitor(Y, X)

I clausula: um fato ou uma regra (sao 7 nessa base)

I marcado por ponto final

I functor: filho(X,Y)

I argumentos: filho(X, Y)

Base de conhecimento 21 p r o g e n i t o r ( maria , j o s e ) .2 p r o g e n i t o r ( jo ao , j o s e ) .3 p r o g e n i t o r ( jo ao , ana ) .4 p r o g e n i t o r ( j o s e , j u l i a ) .5 p r o g e n i t o r ( j o s e , ı r i s ) .6 p r o g e n i t o r ( ı r i s , j o r g e ) .78 f i l h o (X, Y) :− p r o g e n i t o r (Y, X) .

Dando nomes aos bois:

I fato: progenitor(maria, jose).I regra: filho(X, Y) :- progenitor(Y, X).

I cabeca (da regra): filho(X, Y)

I corpo (da regra): progenitor(Y, X)

I clausula: um fato ou uma regra (sao 7 nessa base)

I marcado por ponto final

I functor: filho(X,Y)

I argumentos: filho(X, Y)

Base de conhecimento 21 p r o g e n i t o r ( maria , j o s e ) .2 p r o g e n i t o r ( jo ao , j o s e ) .3 p r o g e n i t o r ( jo ao , ana ) .4 p r o g e n i t o r ( j o s e , j u l i a ) .5 p r o g e n i t o r ( j o s e , ı r i s ) .6 p r o g e n i t o r ( ı r i s , j o r g e ) .78 f i l h o (X, Y) :− p r o g e n i t o r (Y, X) .

Dando nomes aos bois:

I fato: progenitor(maria, jose).I regra: filho(X, Y) :- progenitor(Y, X).

I cabeca (da regra): filho(X, Y)I corpo (da regra): progenitor(Y, X)

I clausula: um fato ou uma regra (sao 7 nessa base)

I marcado por ponto final

I functor: filho(X,Y)

I argumentos: filho(X, Y)

Base de conhecimento 21 p r o g e n i t o r ( maria , j o s e ) .2 p r o g e n i t o r ( jo ao , j o s e ) .3 p r o g e n i t o r ( jo ao , ana ) .4 p r o g e n i t o r ( j o s e , j u l i a ) .5 p r o g e n i t o r ( j o s e , ı r i s ) .6 p r o g e n i t o r ( ı r i s , j o r g e ) .78 f i l h o (X, Y) :− p r o g e n i t o r (Y, X) .

Dando nomes aos bois:

I fato: progenitor(maria, jose).I regra: filho(X, Y) :- progenitor(Y, X).

I cabeca (da regra): filho(X, Y)I corpo (da regra): progenitor(Y, X)

I clausula: um fato ou uma regra (sao 7 nessa base)

I marcado por ponto final

I functor: filho(X,Y)

I argumentos: filho(X, Y)

Base de conhecimento 21 p r o g e n i t o r ( maria , j o s e ) .2 p r o g e n i t o r ( jo ao , j o s e ) .3 p r o g e n i t o r ( jo ao , ana ) .4 p r o g e n i t o r ( j o s e , j u l i a ) .5 p r o g e n i t o r ( j o s e , ı r i s ) .6 p r o g e n i t o r ( ı r i s , j o r g e ) .78 f i l h o (X, Y) :− p r o g e n i t o r (Y, X) .

Dando nomes aos bois:

I fato: progenitor(maria, jose).I regra: filho(X, Y) :- progenitor(Y, X).

I cabeca (da regra): filho(X, Y)I corpo (da regra): progenitor(Y, X)

I clausula: um fato ou uma regra (sao 7 nessa base)I marcado por ponto final

I functor: filho(X,Y)

I argumentos: filho(X, Y)

Base de conhecimento 21 p r o g e n i t o r ( maria , j o s e ) .2 p r o g e n i t o r ( jo ao , j o s e ) .3 p r o g e n i t o r ( jo ao , ana ) .4 p r o g e n i t o r ( j o s e , j u l i a ) .5 p r o g e n i t o r ( j o s e , ı r i s ) .6 p r o g e n i t o r ( ı r i s , j o r g e ) .78 f i l h o (X, Y) :− p r o g e n i t o r (Y, X) .

Dando nomes aos bois:

I fato: progenitor(maria, jose).I regra: filho(X, Y) :- progenitor(Y, X).

I cabeca (da regra): filho(X, Y)I corpo (da regra): progenitor(Y, X)

I clausula: um fato ou uma regra (sao 7 nessa base)I marcado por ponto final

I functor: filho(X,Y)

I argumentos: filho(X, Y)

Base de conhecimento 21 p r o g e n i t o r ( maria , j o s e ) .2 p r o g e n i t o r ( jo ao , j o s e ) .3 p r o g e n i t o r ( jo ao , ana ) .4 p r o g e n i t o r ( j o s e , j u l i a ) .5 p r o g e n i t o r ( j o s e , ı r i s ) .6 p r o g e n i t o r ( ı r i s , j o r g e ) .78 f i l h o (X, Y) :− p r o g e n i t o r (Y, X) .

Dando nomes aos bois:

I fato: progenitor(maria, jose).I regra: filho(X, Y) :- progenitor(Y, X).

I cabeca (da regra): filho(X, Y)I corpo (da regra): progenitor(Y, X)

I clausula: um fato ou uma regra (sao 7 nessa base)I marcado por ponto final

I functor: filho(X,Y)

I argumentos: filho(X, Y)

Base de conhecimento 3

1 f e l i z ( i o l a n d a ) .2

3 e s c u t a m u s i c a ( mar ia ) .4 e s c u t a m u s i c a ( i o l a n d a ) :− f e l i z ( i o l a n d a ) .56 t o c a V i o l a o ( mar ia ) :− e s c u t a m u s i c a ( mar ia ) .7 t o c a V i o l a o ( i o l a n d a ) :− e s c u t a m u s i c a ( i o l a n d a ) .

Sao cinco clausulas na base de conhecimento.Sao tres predicados, feliz, escuta musica e ...

1 ?− t o c a V i o l a o ( mar ia ) .23 t r u e45 ?− t o c a V i o l a o ( i o l a n d a ) .67 t r u e

Base de conhecimento 3

1 f e l i z ( i o l a n d a ) .23 e s c u t a m u s i c a ( mar ia ) .4 e s c u t a m u s i c a ( i o l a n d a ) :− f e l i z ( i o l a n d a ) .5

6 t o c a V i o l a o ( mar ia ) :− e s c u t a m u s i c a ( mar ia ) .7 t o c a V i o l a o ( i o l a n d a ) :− e s c u t a m u s i c a ( i o l a n d a ) .

Sao cinco clausulas na base de conhecimento.Sao tres predicados, feliz, escuta musica e ...

1 ?− t o c a V i o l a o ( mar ia ) .23 t r u e45 ?− t o c a V i o l a o ( i o l a n d a ) .67 t r u e

Base de conhecimento 3

1 f e l i z ( i o l a n d a ) .23 e s c u t a m u s i c a ( mar ia ) .4 e s c u t a m u s i c a ( i o l a n d a ) :− f e l i z ( i o l a n d a ) .56 t o c a V i o l a o ( mar ia ) :− e s c u t a m u s i c a ( mar ia ) .7 t o c a V i o l a o ( i o l a n d a ) :− e s c u t a m u s i c a ( i o l a n d a ) .

Sao cinco clausulas na base de conhecimento.

Sao tres predicados, feliz, escuta musica e ...

1 ?− t o c a V i o l a o ( mar ia ) .23 t r u e45 ?− t o c a V i o l a o ( i o l a n d a ) .67 t r u e

Base de conhecimento 3

1 f e l i z ( i o l a n d a ) .23 e s c u t a m u s i c a ( mar ia ) .4 e s c u t a m u s i c a ( i o l a n d a ) :− f e l i z ( i o l a n d a ) .56 t o c a V i o l a o ( mar ia ) :− e s c u t a m u s i c a ( mar ia ) .7 t o c a V i o l a o ( i o l a n d a ) :− e s c u t a m u s i c a ( i o l a n d a ) .

Sao cinco clausulas na base de conhecimento.Sao tres predicados, feliz, escuta musica e ...

1 ?− t o c a V i o l a o ( mar ia ) .2

3 t r u e45 ?− t o c a V i o l a o ( i o l a n d a ) .67 t r u e

Base de conhecimento 3

1 f e l i z ( i o l a n d a ) .23 e s c u t a m u s i c a ( mar ia ) .4 e s c u t a m u s i c a ( i o l a n d a ) :− f e l i z ( i o l a n d a ) .56 t o c a V i o l a o ( mar ia ) :− e s c u t a m u s i c a ( mar ia ) .7 t o c a V i o l a o ( i o l a n d a ) :− e s c u t a m u s i c a ( i o l a n d a ) .

Sao cinco clausulas na base de conhecimento.Sao tres predicados, feliz, escuta musica e ...

1 ?− t o c a V i o l a o ( mar ia ) .23 t r u e4

5 ?− t o c a V i o l a o ( i o l a n d a ) .67 t r u e

Base de conhecimento 3

1 f e l i z ( i o l a n d a ) .23 e s c u t a m u s i c a ( mar ia ) .4 e s c u t a m u s i c a ( i o l a n d a ) :− f e l i z ( i o l a n d a ) .56 t o c a V i o l a o ( mar ia ) :− e s c u t a m u s i c a ( mar ia ) .7 t o c a V i o l a o ( i o l a n d a ) :− e s c u t a m u s i c a ( i o l a n d a ) .

Sao cinco clausulas na base de conhecimento.Sao tres predicados, feliz, escuta musica e ...

1 ?− t o c a V i o l a o ( mar ia ) .23 t r u e45 ?− t o c a V i o l a o ( i o l a n d a ) .6

7 t r u e

Base de conhecimento 3

1 f e l i z ( i o l a n d a ) .23 e s c u t a m u s i c a ( mar ia ) .4 e s c u t a m u s i c a ( i o l a n d a ) :− f e l i z ( i o l a n d a ) .56 t o c a V i o l a o ( mar ia ) :− e s c u t a m u s i c a ( mar ia ) .7 t o c a V i o l a o ( i o l a n d a ) :− e s c u t a m u s i c a ( i o l a n d a ) .

Sao cinco clausulas na base de conhecimento.Sao tres predicados, feliz, escuta musica e ...

1 ?− t o c a V i o l a o ( mar ia ) .23 t r u e45 ?− t o c a V i o l a o ( i o l a n d a ) .67 t r u e

Base de conhecimento 4

1 f e l i z ( v i c e n t e ) .2 e s c u t a m u s i c a ( bruno ) .3 t o c a V i o l a o ( v i c e n t e ) :− e s c u t a m u s i c a ( v i c e n t e ) ,4 f e l i z ( v i c e n t e ) .5 t o c a V i o l a o ( bruno ) :− f e l i z ( bruno ) .6 t o c a V i o l a o ( bruno ) :− e s c u t a m u s i c a ( bruno ) .7 t o c a V i o l a o ( bruno ) :− f e l i z ( bruno ) ; e s c u t a m u s i c a ( bruno ) .8 t o c a V i o l a o ( v i c e n t e ) :− \+ f e l i z ( mar ia ) .

Leia-se

I operador “dois pontos hıfen” “:-”: se

I operador “vırgula” ,: “e” (conjuncao)

I operador “ponto-e-vırgula” ; : “ou” (disjuncao)

I operador “\+”: negacao

Variaveis

1 mulher ( mar ia ) .2 mulher ( j o a n a ) .3 mulher ( i o l a n d a ) .4 ama( v i c e n t e , mar ia ) .5 ama( jo ao , mar ia ) .6 ama( abobr inha , c o e l h i n h o ) .7 ama( c o e l h i n h o , a b o b r i n h a ) .

1 ?− mulher (X) .2 X = mar ia

;3 X = j o a n a ;4 X = i o l a n d a .5 ?

Operador ; significa “ou”

Variaveis

1 mulher ( mar ia ) .2 mulher ( j o a n a ) .3 mulher ( i o l a n d a ) .4 ama( v i c e n t e , mar ia ) .5 ama( jo ao , mar ia ) .6 ama( abobr inha , c o e l h i n h o ) .7 ama( c o e l h i n h o , a b o b r i n h a ) .

1 ?− mulher (X) .2 X = mar ia ;3 X = j o a n a

;4 X = i o l a n d a .5 ?

Operador ; significa “ou”

Variaveis

1 mulher ( mar ia ) .2 mulher ( j o a n a ) .3 mulher ( i o l a n d a ) .4 ama( v i c e n t e , mar ia ) .5 ama( jo ao , mar ia ) .6 ama( abobr inha , c o e l h i n h o ) .7 ama( c o e l h i n h o , a b o b r i n h a ) .

1 ?− mulher (X) .2 X = mar ia ;3 X = j o a n a ;4 X = i o l a n d a

.5 ?

Operador ; significa “ou”

Variaveis

1 mulher ( mar ia ) .2 mulher ( j o a n a ) .3 mulher ( i o l a n d a ) .4 ama( v i c e n t e , mar ia ) .5 ama( jo ao , mar ia ) .6 ama( abobr inha , c o e l h i n h o ) .7 ama( c o e l h i n h o , a b o b r i n h a ) .

1 ?− mulher (X) .2 X = mar ia ;3 X = j o a n a ;4 X = i o l a n d a .5 ?

Operador ; significa “ou”

Base de conhecimento 5

1 mulher ( mar ia ) .2 mulher ( j o a n a ) .3 mulher ( i o l a n d a ) .4 ama( v i c e n t e , mar ia ) .5 ama( jo ao , mar ia ) .6 ama( abobr inha , c o e l h i n h o ) .7 ama( c o e l h i n h o , a b o b r i n h a ) .

Usando o operador vırgula ,

1 ?− ama( abobr inha , X) , mulher (X) .2 f a l s e

Base de conhecimento 6

1 mulher ( mar ia ) .2 mulher ( j o a n a ) .3 mulher ( i o l a n d a ) .4 ama( v i c e n t e , mar ia ) .5 ama( jo ao , mar ia ) .6 ama( abobr inha , c o e l h i n h o ) .7 ama( c o e l h i n h o , a b o b r i n h a ) .89 tem ciumes (X, Y) :− ama(X, Z) , ama(Y, Z) .

1 ?− tem ciumes ( jo ao ,W) .2 W = v i c e n t e ;3 W = j o a o ;4 f a l s e .5 ?−

Base de conhecimento 7

Fatos

1 g o s t a ( joao , p e i x e ) .2 g o s t a ( joao , mar ia ) .3 g o s t a ( maria , l i v r o ) .4 g o s t a ( pedro , l i v r o ) .5 g o s t a ( maria , f l o r ) .6 g o s t a ( maria , v i n h o ) .

Qual e o resultados de:

1 ?− g o s t a ( maria , X) .2 ?− g o s t a (X, l i v r o ) .3 ?− g o s t a (Quem , Oque ) .4 ?− g o s t a (X, Y) .5 ?− g o s t a (X, X) .6 ?− g o s t a ( a , b ) .7 ?− g o s t a (A, p e i x e ) .

Referencias

I Luis, A. M. Palazzo, Introducao a programacao prolog,Educat, 1997

I Slides da Profa. Solange - ICMC - USP

Recommended