Introdu - PowerPoint PPT Presentation

About This Presentation
Title:

Introdu

Description:

Introdu o a Programa o em L gica e Prolog Jacques Robin CIn-UFPE O que Prolog? Primeira e mais divulgada linguagem do paradigma da Programa o em L gica ... – PowerPoint PPT presentation

Number of Views:107
Avg rating:3.0/5.0
Slides: 60
Provided by: Departamen215
Category:
Tags: introdu | operas | soap

less

Transcript and Presenter's Notes

Title: Introdu


1
Introdução a Programação em Lógica e Prolog
  • Jacques Robin
  • CIn-UFPE

2
O que é Prolog?
  • Primeira e mais divulgada linguagem do paradigma
    da Programação em Lógica (PL)
  • Operacionalização simples, prática e eficiente da
    metáfora da PL
  • PL unifica
  • Engenharia de Software (especificação formal,
    linguagens de programação)
  • Inteligência Artificial (IA) (raciocínio com
    Formalismos de Representação do Conhecimento
    (FRCs))
  • Banco de Dados -- Dedutivos (BDDs)
  • Teoria Lógica (TL) das provas

3
Metáfora da programação em lógica
  • Teoria Lógica Programa BD dedutivo Base de
    Conhecimento (BC)
  • Programar apenas declarar axiomas e regras
  • Axiomas da TL
  • fatos da BC
  • parte extensional do BDD
  • dados explícitos de um BD tradicional
  • Regras da TL (e da BC)
  • parte intencional do BDD
  • Teoremas da TL
  • deduzidos a partir dos axiomas e das regras
  • dados implícitos do BDD

4
Aplicações da programação em lógica
  • Inteligência Artificial
  • Representação do conhecimento
  • Sistemas especialistas
  • Provadores de teoremas
  • Aprendizagem de máquina
  • Processamento de linguagem natural
  • Sistemas multi-agentes
  • Robótica
  • Sistemas Distribuídos e Internet
  • Comércio eletrónico
  • Recuperação, filtragem e extração de informação
  • Engenharia de Software
  • Prototipagem rápida de software complexos
  • Especificações formais executáveis
  • Programação por resolução de restrições
  • Programação multi-paradigma de alto-nível
  • Banco de Dados
  • BD dedutivos e DOO
  • Mineração de Dados e Descoberta de Conhecimento
  • Integração de Dados e Interoperabilidade

5
Programação procedimental x programação
declarativa
  • 1. Escolher linguagem de especificação formal
    (LE)
  • 2. Especificar formalmente os requisitos na LE
  • 3. Escolher linguagem de programação (LP)
  • 4. Codificar estruturas de dados na LP
  • 5. Codificar passo a passo estruturas de
    controle na LP
  • 6. Escolher/escrever compilador da LP
  • 7. Executar programa
  • Escolher FRC (1,3)
  • Declarar estruturas de conhecimento no FRC (2,4)
  • Escolher/escrever motor de inferência para FRC
    (6)
  • Consultar base de conhecimento sobre verdade de
    um fato (7)
  • foi declarado?
  • pode ser deduzido?
  • reposta
  • "booleana (L0, L1)
  • instanciação de variáveis (L1)

6
Revisão de L1 sintaxe
  • Fórmula Fórmula-Atômica
  • (Fórmula)
  • ù Fórmula
  • Quantificador Variável, ... Fórmula,
  • Fórmula Conectivo Fórmula
  • Fórmula-Atômica Predicado(Termo,...) Termo
    Termo
  • Termo Função(termo,...)
  • Constante
  • Variável
  • Conectivo Ú Ù Þ Û
  • Quantificador " !
  • Constante Wumpus Agente Flecha ...
  • Variável x y wumpus agente ...
  • Predicado Adjacente Vivo ...
  • Função Em Brisa ...

7
Revisão de L1 mecanismo de inferência completo
(para verificação)
Fórmula da lógica de 1a. ordem
Fórmula na forma normal
Refutação aplicação repetitiva da regra de
resolução Problema a cada passo, como escolher o
par de fórmulas a resolver?
8
Revisão de L1 forma normal e cláusulas de Horn
  • Def
  • Thm
  • Cláusula de Horn é uma formula de L1
  • em forma normal implicativa, com uma conclusão
    única e positiva
  • ie, da forma P1 ? ... ? Pn ? C
  • Muitas mas nem todas as formulas de L1 tem
    conjunto equivalente de cláusulas de Horn, cex
  • Lógica de Horn

9
Revisão de L1 refutação, unificação e
substituição
  • Motivação de provas por refutação
  • KB Þ P Û ØØ(KB Þ P)
  • Û ØØ(ØKB Ú P)
  • Û Ø(KB Ù Ø P)
  • Û Ø(KB Ù Ø P) Ú False
  • Û (KB Ù Ø P) Þ False
  • Substituição de variáveis de uma formula f
  • conjunto de pares Var/const ou Var1/Var2
  • Unificação de 2 formulas f e g
  • substituição S das variáveis de f e g tal que
    S(f)S(g)
  • 2 resultados
  • S
  • rS(f)s(g)

10
Revisão de L1 unificação posicional
  • Exemplos
  • unif(conhece(joao,X),conhece(Y,leandro))
    X/Leandro,Y/joao
  • unif(conhece(joao,X),conhece(X,leandro) fail
  • unif(conhece(joao,X),conhece(Y,mae(Y))
  • Y/joao, X/mae(joao)
  • unif(conhece(joão,X),conhece(Y,Z)) Y/João,
    X/Z, ou
  • Y/joão, X/Z, W/zelda ou Y/joão, X/joão,
    Z/joão ...
  • Unificador mais geral com menor número de
    variáveis instanciadas
  • Substituição mínima com menor número de pares
    Var/const

11
Revisão de L1 regra de resolução
  • simples
  • ex.
  • geral

12
Cláusulas Prolog e Cláusulas de Horn
  • Fatos Prolog
  • cláusulas de Horn com premissa única T implícita
  • ex C. ltgt T gt C
  • Regras Prolog
  • outras cláusulas de Horn
  • ex C - P1, ... ,Pn. ltgt P1 ... Pn gt C
  • Premissas de cláusulas com a mesma conclusão são
    implicitamente disjuntivas
  • ex C - P1, ... ,Pn., C - Q1, ... ,Qm
  • ltgt (P1 ... Pn) v (Q1 ... Qm) gt C
  • Escopo das variáveis uma cláusula

13
West é criminoso? em L1
  • Requisitos em inglês
  • 1. It is crimimal for an American to sell weapons
    to an hostile country
  • 2. Nono owns missiles
  • 3. Nono acquires all its missiles from West
  • 4. West is American
  • 5. Nono is a nation
  • 6. Nono is an enemy of the USA
  • 0. Is West a crimimal?
  • ????
  • Em lógica da 1a ordem
  • 1. ? P,W,N american(P) ? weapon(W) ? nation(N) ?
    hostile(N) ? sells(P,N,W) ? criminal(P)
  • 2. ? W owns(nono,W) ? missile(W)
  • 3. ? W owns(nono,W) ? missile(W) ?
    sells(west,nono,W)
  • 7. ? X missile(W) ? weapon(W)
  • 8. ? X enemy(N,america) ? hostile(N)
  • 4. american(west)
  • 5. nation(nono)
  • 6. enemy(nono,america)
  • 9. nation(america)

14
West é criminoso? em formal normal
  • Em lógica da 1a ordem
  • 1. ? P,W,N american(P) ? weapon(W) ? nation(N) ?
    hostile(N) ? sells(P,N,W) ? criminal(P)
  • 2. ? W owns(nono,W) ? missile(W)
  • 3. ? W owns(nono,W) ? missile(W) ?
    sells(west,nono,W)
  • 7. ? X missile(W) ? weapon(W)
  • 8. ? X enemy(N,america) ? hostile(N)
  • 4. american(west)
  • 5. nation(nono)
  • 6. enemy(nono,america)
  • 9. nation(america)
  • Em formal normal
  • american(P) ? weapon(W) ? nation(N) ?
    hostile(N) ? sells(P,N,W) ? criminal(P)
  • owns(nono,m1)
  • missile(m1)
  • owns(nono,W) ? missile(W) ? sells(west,nono,W)
  • missile(W) ? weapon(W)
  • enemy(N,america) ? hostile(N)
  • american(west)
  • nation(nono)
  • enemy(nono,america)
  • nation(america)

15
West é criminoso? em Prolog
  • Em Lógica de Horn
  • american(P) ? weapon(W) ? nation(N) ?
    hostile(N) ? sells(P,N,W) gt criminal(P)
  • owns(nono,m1)
  • missile(m1)
  • owns(nono,W) ? missile(W) ? sells(west,nono,W)
  • missile(W) ? weapon(W)
  • enemy(N,america) ? hostile(N)
  • american(west)
  • nation(nono)
  • enemy(nono,america)
  • nation(america)
  • Em Prolog
  • criminal(P) - american(P), weapon(W), nation(N),
    hostile(N), sells(P,N,W).
  • owns(nono,m1).
  • missile(m1).
  • sells(west,nono,W) - owns(nono,W), missile(W).
  • weapon(W) - missile(W).
  • hostile(N) - enemy(N,america).
  • american(west).
  • nation(nono).
  • enemy(nono,america).
  • nation(america).

16
West é criminoso? busca
  • criminal(P) - american(P), weapon(W), nation(N),
    hostile(N), sells(P,N,W).
  • owns(nono,m1).
  • missile(m1).
  • sells(west,nono,W) - owns(nono,W), missile(W).
  • weapon(W) - missile(W).
  • hostile(N) - enemy(N,america).
  • american(west).
  • nation(nono).
  • enemy(nono,america).
  • nation(america).
  • criminal(west)? lt- yes.
  • american(west)? -gt yes.
  • weapon(W)? lt- W m1.
  • missile(W)? -gt W m1.
  • nation(N)? -gt N nono.
  • hostile(nono)? lt- yes.
  • enemy(nono,america)? -gt yes.
  • sells(west,nono,m1)? lt- yes.
  • owns(nono,m1)? -gt yes.
  • missile(m1)? -gt yes.

17
West é criminoso? backtracking
  • criminal(P) - american(P), weapon(W), nation(N),
    hostile(N), sells(P,N,W).
  • owns(nono,m1).
  • missile(m1).
  • sells(west,nono,W) - owns(nono,W), missile(W).
  • weapon(W) - missile(W).
  • hostile(N) - enemy(N,america).
  • american(west).
  • nation(america).
  • enemy(nono,america).
  • nation(nono).
  • criminal(west)? lt- yes.
  • american(west)? -gt yes.
  • weapon(W)? lt- W m1.
  • missile(W)? -gt W m1.
  • nation(N)? -gt N america.
  • hostile(america)? lt- no.
  • enemy(america,america)? -gt no.
  • backtrack nation(N),
  • N \ america? -gt N nono.
  • hostile(nono)? lt- yes.
  • enemy(nono,america)? -gt yes.
  • sells(west,nono,m1)? lt- yes.
  • owns(nono,m1)? -gt yes.
  • missile(nono,m1)? -gt yes.

18
Interpretador Prolog controle e busca
  • Aplica regra de resolução
  • com estratégia linear (sempre tenta unificar
    ultimo fato a provar com a conclusão de uma
    cláusula do programa),
  • na ordem de escritura das cláusulas no programa,
  • com encadeamento de regras para trás,
  • busca em profundidade e
  • da esquerda para direita das premissas das
    cláusulas,
  • e com backtracking sistemático e linear quando a
    unificação falha,
  • e sem occur-check na unificação.
  • Estratégia eficiente mas incompleta.

19
Prolog devolve a primeira resposta
  • g1(a).
  • g21(a).
  • g3(a).
  • g4(a).
  • g1(b).
  • g21(b).
  • g22(b).
  • g3(b).
  • g(X) - g1(X), g2(X).
  • g(X) - g3(X), g4(X).
  • g2(X) - g21(X), g22(X).
  • prolog
  • ?- consult(g.pl).
  • yes
  • ?- g(U).
  • U b
  • ?-
  • U a
  • ?-
  • no
  • ?- halt.

20
Forçar o backtracking para obter todas as
respostas
  • g1(a).
  • g21(a).
  • g3(a).
  • g4(a).
  • g1(b).
  • g21(b).
  • g22(b).
  • g3(b).
  • g(X) - g1(X), g2(X).
  • g(X) - g3(X), g4(X).
  • g2(X) - g21(X), g22(X).
  • g(U)? lt- U b.
  • g1(U)? -gt U a.
  • g2(a)? lt- no.
  • g21(a)? -gt yes.
  • g22(a)? -gt no.
  • g1(U), U \ a? -gt U b.
  • g2(b)? lt- yes.
  • g21(b)? -gt yes.
  • g22(b)? -gt yes.
  • g1(U), U \ a,b ? -gt no.

21
Backtracking em cascatas
  • g1(a).
  • g21(a).
  • g3(a).
  • g4(a).
  • g1(b).
  • g21(b).
  • g22(b).
  • g3(b).
  • g(X) - g1(X), g2(X).
  • g(X) - g3(X), g4(X).
  • g2(X) - g21(X), g22(X).
  • g(U), g \ g1,g2? lt- U a.
  • g3(U)? -gt U a.
  • g4(a)? -gt yes.
  • g3(U), U \ a? -gt U b.
  • g4(b)? -gt no.
  • g3(U), U \ a,b? -gt no.
  • g(U), g \ g1,g2 g3,g4? -gt no.

22
Prolog sintaxe 1
  • fato -gt fa. (abrev. para Formula Atômica)
  • regra -gt fa0 - fa1, ... , faN.
  • consulta -gt fa1, ... , faN.
  • fa -gt pred(termo1, ... , termoN) preop termo1
    termo2
  • termo1 inop termo2 termo1 termo2
    postop
  • termo -gt constante variável fa
  • constante -gt átomos numeros
  • pred -gt átomo
  • Ao invés de L1
  • nenhuma distinção entre predicados e funções
  • ausência da igualdade semântica

23
Prolog sintaxe 2
  • variável ex G, Glr, geber-ramalho, 1geber, _glr,
    _
  • átomo ex g, glr, gt, geber_ramalho, geber1,
    geber ramalho
  • número ex 23
  • termos, fatos, regras e consultas sem variáveis
  • instanciados (ground)
  • ex. person(bob,40,cs).
  • termos, fatos e regras com variáveis
  • universais
  • ex. pai(X,adao).
  • ancestral(X,A) - pai(X,P),
    ancestral(P,A).
  • consultas com variáveis
  • existenciais
  • ex. ? pai(F,P).

24
Igualdade x unificação exemplos
  • ?- geber senior -gt no.
  • ?- prof(X,disc(Y,dept(di,ufpe)))
    prof(geber,disc(ia,Z)).
  • -gt X geber, Y ia, Z dept(di,ufpe).
  • ?- prof(X,disc(Y,dept(di,ufpe)))
    prof(geber,disc(ia,Z). -gt no.
  • ?- prof(X,disc(Y,dept(di,ufpe)))
    prof(U,disc(V,dept(di,ufpe))). -gt no.
  • ?- prof(X,disc(Y,dept(di,ufpe)))
    prof(X,disc(Y,dept(di,ufpe))). -gt yes.
  • prof(ia,di,ufpe,geber).
  • musico(senior).
  • ?- geber senior, prof(ia,di,ufpe,X),
    musico(X). -gt no.
  • e não X geber senior.
  • prof(ia,di,ufpe,pessoa(geber,_).
  • musico(pessoa(_,senior)).
  • pessoa(geber, senior).
  • ?- prof(ia,di,ufpe,X), musico(X). -gt X
    pessoa(geber,senior).

25
Prolog listas
  • e início e fim de lista
  • , separação entre eltos
  • separação entre 1o elto e resto da lista
  • açúcar sintático para predicado .(Head,Tail)
  • ex. a,b,c,d açúcar sintático para
    .(a,.(.(b,.(c,)),.(d,)))
  • ?- a,b,X,p(Y,C) HeadTail
  • Head a, Tail b,X,p(Y,C)
  • ?- p(X),a,q(b,c) HT1T2
  • H p(X), T1 a, T2 q(b,c)
  • member(X,X_).
  • member(X,YZ) - member(X,Z).
  • ?- member(b,a,b,c) -gt yes.
  • ?- member(X,a,b,c) -gt X a X b X
    c no.

26
Evitar backtracking inútil ! (o cut)
  • op built-in de pruning, logicalmente sempre
    verificado
  • com efeito colateral de impedir backtracking
  • na sua esquerda na cláusula que ocorre
  • em outras cláusulas com a mesma conclusão
  • ex A - B, C, D.
  • C - M, N, !, P, Q.
  • C - R.
  • impede backtracking P -gt N
  • permite backtracking N -gt M, Q -gt P,
  • D -gt (R xor Q), (P xor R) -gt B
  • R tentado
  • unicamente se M ou N falha
  • nunca se P ou Q falha

27
Cut exemplo
  • f1(X,0) - X lt 3.
  • f1(X,2) - 3 lt X, X lt 6.
  • f1(X,4) - 6 lt X.
  • f1(1,Y), 2 lt Y? lt- no
  • f1(1,Y)? -gt X 1, Y 0
  • 1 lt 3? -gt yes
  • 2 lt 0? -gt no
  • f1(1,Y)? -gt X 1, Y 2
  • 3 lt 1? -gt no
  • f1(1,Y)? -gt X 1, Y 4
  • 6 lt 1? -gt no
  • f2(X,0) - X lt 3, !.
  • f2(X,2) - 3 lt X, X lt 6, !.
  • f2(X,4) - 6 lt X, !.
  • f2(1,Y), 2 lt Y? lt- no
  • f2(1,Y)? -gt X 1, Y 0
  • 1 lt 3? -gt yes
  • 2 lt 0? -gt no

28
Cut exemplo (cont.)
  • f3(X,0) - X lt 3, !.
  • f3(X,2) - X lt 6, !.
  • f3(X,4).
  • ?- f3(1,Y).
  • Y 0
  • ?-
  • no.
  • ?-
  • Esses cuts modificam até a semântica declarativa
    do programa
  • f4(X,0) - X lt 3.
  • f4(X,2) - X lt 6.
  • f4(X,4).
  • ?- f4(1,Y).
  • Y 0
  • ?-
  • Y 2.
  • ?-

29
Hipótese do mundo fechado
  • Ao invés de L1, Prolog não permite nem fatos, nem
    conclusões de regras negativos, cex
  • animal_lover(geber).
  • kill(X,Y) - animal_lover(X), animal(Y).
  • Princípio de economia
  • declarar e deduzir apenas o que é verdadeiro,
  • supor que tudo que não é mencionado nem deduzível
    é falso (hipótese do mundo fechado)
  • Operador de negação por falha em premissas
  • not p(X) verificado sse p(X) falha
  • / de p(X) verificado sse p(X) no BDE ou na
    conclusão de uma regra com premissas verificadas

30
Negação por Falha (NF) 1
  • Permite raciocínio não monótono, ex
  • ave(piupiu).
  • papa_leguas(bipbip).
  • ave(X) - papa_leguas(X).
  • voa1(X) - ave(X), not papa_leguas(X).
  • voa1(X)? -gt X piupiu no.
  • Sem semântica declarativa em L1
  • Depende da ordem, ex
  • voa2(X) - not papa_leguas(X), ave(X).
  • voa2(X)? -gt no.

31
Negação por Falha 2
  • NF pode ser implementado apenas com !, fail
    (nunca verificado) e true (sempre verificado),
    ex
  • voa3(X) - papa_leguas(X), !, fail.
  • voa3(X) - ave(X).
  • não(X) - X, !, fail true.
  • NF torna resolução de Prolog (Select Depth-1st
    Linearly w/ Negation as Failure (SDLNF))
    inconsistente
  • ex edge(a,b).
  • sink(X) - not edge(X,Y).
  • sink(a)? -gt no.
  • sink(b)? -gt yes.
  • sink(X)? -gt no.

32
Prolog aritmética
  • 3 tipos de operadores built-in aritméticos
  • calculadores (n-ários infixos) , -, , /, mod
  • comparadores (binários infixos) , \, lt, gt,
    lt, gt
  • o atribuídor is Variável is ExpressãoAritmética
  • Expressão aritmética
  • fórmula atômica contendo apenas números e
    calculadores aritméticos
  • todos os argumentos dos calculadores e
    comparadores devem ser instanciados com
    expressões aritméticas

33
Prolog exemplos de aritmética 1
  • gt ?- 1 1 lt 1 2.
  • yes
  • gt ?- 1 3 2 2.
  • yes
  • gt ?- 1 3 2 2.
  • no
  • gt ?- 1 A B 2.
  • A 2
  • B 1
  • gt ?- 1 A B 2.
  • Error
  • gt ?- A 2, B 1, 1 A B 2.
  • A 2
  • B 1
  • gt ?- C 1 2.
  • C 12
  • gt ?- C 1 2.
  • no
  • gt ?- C is 1 2.
  • C 3
  • gt ?- C is D, D 1 2.
  • Error.
  • gt ?- D 1 2, C is D.
  • D12
  • C3
  • gt ?- -12 (-(1),2).
  • no
  • gt ?- -12 (-(1),2).
  • yes

34
Prolog exemplos de aritmética 2
  • fac(0,1) - !.
  • fac(I,O) - I1 is I - 1,
  • fac(I1,O1), O is I O1.
  • ?- fac(1,X).
  • X 1
  • ?- fac(3,X).
  • X 6
  • ?- fac(5,X).
  • X 120
  • sum(,0).
  • sum(HT,N) - sum(T,M),
  • N is H M.
  • ?- sum(2,1,3,1,S).
  • S 7
  • ?- sum(2,10,1,S).
  • S 13

35
Prolog exemplos de teste de tipos
  • ?- var(X).
  • X _3
  • ?- var(2).
  • no
  • ?- var(a).
  • no
  • ?- var(p(a,X)).
  • no
  • ?- nonvar(2), nonvar(p(2,X,a)).
  • X _11
  • ?- X is 2 3, var(X).
  • no
  • ?- var(X), X is 2 3.
  • X 5
  • ?-
  • numberp(Term) - integer(Term).
  • numberp(Term) - real(Term).
  • structp(Term) - nonvar(Term),
  • not atomic(Term).
  • listp(Term) - nonvar(Term),
  • listp1(term).
  • listp1().
  • listp1(HT) - listp1(T).
  • factp(Term) - strucp(Term),
  • not listp(Term).

36
Prolog conversão de tipos
  • name(Átomo,Caracteres)
  • conversão bi-direcional entre átomo e cadeia de
    caracteres que constitui o seu nome
  • list(CódigosAscii,Caracteres)
  • conversão bi-direcional entre um lista de
    inteiros vistos como códigos ascii e cadeia de
    caracteres correspondente
  • Fato .. Lista
  • conversão bi-direcional entre fato e lista,
    funtor sendo cabeça e argumentos sendo resto
  • ?- name(A,"blabla").
  • A blabla
  • ?- name(blabla,S).
  • S "blabla"
  • ?- list(X,"bla").
  • X 98,108,97
  • ?- list(98,108,97,Y).
  • Y "bla
  • ?- p(a,X,c) .. Y.
  • X _5, Y p,a,_5,c
  • ?- Y .. p,a,X,c.
  • Y p(a,_20,c), X _20

37
Prolog entrada/saída 1
  • Ler/escrever estrutura de dados dificilmente pode
    ser visto como resultando de uma dedução
  • E/S não se integre naturalmente no paradigma de
    PL
  • requer predicados extra-lógicos sem semântica
    declarativa em L1
  • Predicados built-in de Prolog para E/S
  • sempre verificados
  • cumprem sua tarefa por efeitos colaterais
  • não podem ser re-satisfeitos por backtracking

38
Prolog entrada/saída 2
  • Ler e escrever termos read, write, display.
  • Ler e escrever caracteres get, get0, put.
  • Formatar a saída legívelmente nl, tab.
  • Ligar um canal de E/S com a tela ou com arquivos
    tell, telling, told, see, seeing, seen .
  • Carregar arquivo fonte no ambiente do
    interpretador consult, reconsult
  • ex. ?- read(X), Z is X 1, write(Z).
  • 2.
  • 3
  • X 2, Z 3 no
  • ?

39
Prolog failure-driven loop
  • Loop gerada por backtracking forçado com fail e
    repeat.
  • repeat sempre verificado e re-verificado no
    backtracking (true sempre verificado mas falha no
    backtracking)
  • consult(File) - see(File), consult-loop, seen.
  • consult-loop - repeat, read(Clause),
    process(Clause), !.
  • process(X) - end_of_file(X), !.
  • process(Clause) - assert(Clause), fail.

40
Prolog x sistemas de produção controle
  • Raciocino dirigido pelo objetivo (e não pelos
    dados)
  • Regras encadeada para trás (e não para frente)
  • Busca em de cima para baixo e em profundidade na
    árvore de prova (e não de baixo para cima e em
    largura)
  • Sempre dispara 1a regra aplicável encontrada (ie,
    sem resolução de conflitos)
  • Backtracking quando 1a regra leva a uma falha

41
Prolog x sistemas de produçãopoder expressivo
  • Fatos universais (e não apenas instanciados)
  • ex ancestral(X,adão).
  • Unificação (e não apenas matching)
  • bidirecional
  • variáveis lógicas podem ser instanciadas com
    termos compostos (e não apenas atómicos)
  • ex ?- prof(X,disc(ia,dept(di,ufpe)))
  • prof(pessoa(geber,Y),disc(ia,Z))
  • -gt X pessoa(geber,Y), Z
    dept(di,ufpe).

42
Prolog x programação imperativa 1
  • Interativo
  • compilação transparente integrada na
    interpretação
  • rodar programa consultar um BD
  • Gerenciamento automático da memória
  • Mecanismo único de manipulação de dados --
    unificação de termos lógicos -- implementando
  • atribuição de valor
  • passagem de parâmetros
  • alocação de estruturas
  • leitura e escritura em campos de estruturas

43
Prolog x programação imperativa 2
  • Estrutura de dados única termo Prolog
  • variáveis lógicas sem tipo estático
  • Controle implícito built-in na estrategia de
    resolução, ex Em programação imperativa
  • procedure c(E)
  • const e0tipoE0
  • var EtipoE, S0tipoS0, l1tipo-I1, S1tipoS1
  • do if E e0 then do S0 call p0(e0) return
    S0 end
  • else do I1 call p1(E) S1 call
    p2(E,l1) return S1 end
  • end
  • Em Prolog
  • c(e0,S0) - p0(e0,S0).
  • c(E,S1) - p1(E,I1), p2(E,I1,S1).

44
Prolog x programação funcional 1
  • Matematicamente, predicado relação
  • não-determinismo
  • respostas múltiplas (disponíveis por
    backtracking),
  • unificação e busca built-in,
  • livra o programador da implementação do controle
  • bi-direcionalidade
  • cada argumento pode ser entrada ou saída,
    dependendo do contexto de chamada,
  • única definição para usos diferentes
    verificador, instanciador, resolvedor de
    restrições, enumerador.
  • integração imediata com BD relacional

45
Prolog x programação funcional 2
  • Append em Haskell
  • append L L
  • append HT L H append T L
  • ?- append(a,b,c,d)
  • a,b,c,d
  • Append em Prolog
  • append(,L,L).
  • append(HT1,L,HT2) - append(T1,L,T2).
  • ?- append(a,b,c,d,R).
  • R a,b,c,d.
  • Append relacional codifica 8 funções

46
Vários usos do mesmo predicado
  • verificador
  • ?- append(a,b,c,a,b,c). -gt yes.
  • ?- append(a,b,c,a). -gt no.
  • instanciador
  • ?- append(a,b,c,R). -gt R a,b,c.
  • ?- append(H,c,a,b,c). -gt H a,b.
  • resolvedor de restrições
  • ?- append(X,Y,a,b,c). -gt X , Y a,b,c
  • -gt X a,
    Y b,c ...
  • enumerador
  • ?- append(X,Y,Z). -gt X , Y , Z
  • -gt X _, Y ,
    Z _ ...

47
Prolog x programação OO
  • Funcionalidades built-in
  • unificação e busca
  • - tipos, herânça e encapsulação
  • Ontologicalmente
  • Entidade Atómica (EA) em OO, valor de tipo
    built-in
  • em Prolog,
    átomo (argumento ou predicado)
  • Entidade Composta (EC) em OO, objeto
  • em Prolog,
    fato
  • Relação simples entre EC e EA em OO, atributo de
    tipo built-in

  • em Prolog, posição em um predicado
  • Relação simples entre ECs em OO, atributo de
    tipo objeto
  • em
    Prolog, predicado
  • Relação complexa entre entidades em OO, método

  • em Prolog, conjunto de regras

48
Prolog x programação OO exemplo
  • Em OO
  • ptsubclass_of planobj
  • attrsX inst_of int, Y inst_of int
  • metsright(Pt inst_of pt) return self.X gt
    Pt.X
  • pt1inst_of pt attrsX 0, Y 0
  • pt2inst_of pt attrsX 1, Y 1
  • ?- pt1.right(pt2) -gt no.
  • Em Prolog
  • pt(0,0).
  • pt(1,1).
  • planobj(pt(_,_)).
  • right(pt(X1,_),pt(X2,_) - X1 gt X2.
  • ?- right(pt(0,0),pt(1,1)). -gt no.

49
Programação em Lógica Disciplina Eletiva de
Graduação e Pós-Graduação
  • Prolog aprofundado
  • Programação por resolução de restrições a base
    lógica (Constraint Logic Programming)
  • extensão de Prolog com resoluções de inequações e
    equações
  • restrições quantitativas (N, Z, R, C) ou
    qualitativas (tipos, ontologias)
  • Escalonamento, raciocínio espacial, otimização,
    automação industrial, CAD/CAM, música
    computacional
  • Programação em lógica funcional
  • Programação em lógica orientada a objetos
  • Programação multiparadigma a base lógica
  • lógica restrições funcional OO
  • todo a IA e mais !

50
Programação em Lógica Disciplina Eletiva de
Graduação e Pós-Graduação
  • Programação em lógica para engenharia de software
  • especificação formal ? prototipágem rápido
  • aceleração do modelo de desenvolvimento em
    espiral
  • Programação em lógica probabilista e bayesiana
  • raciocínio com incerteza
  • Programação em lógica indutiva
  • aprendizagem de máquina, agentes adaptativos,
    mineração de dados, descoberta de conhecimento
    em BD,programação automática, bio-informática
  • Programação em lógica multiagentes
  • sistemas inteligentes distribuídos
  • comercio eletrônico
  • jogos, competição de futebol de robôs

51
Programação em Lógica Disciplina Eletiva de
Graduação e Pós-Graduação
  • Bancos de dados dedutivos
  • descoberta de conhecimento em BD, sistemas
    especialistas de grande porte, servidores de
    conhecimento ontológico
  • Bancos de dados dedutivos orientada a objetos
  • Bancos de dados dedutivos temporais
  • Bancos de dados de restrições
  • GIS, BD espaciais, BD espaço-temporais,
    integração de dados e interoperablidade
  • Bancos de dados de restrições orientada a objetos
  • toda a IA de grande escala e mais !
  • Bancos de dados probabilistas
  • BD de sensores, data warehousing, integração de
    dados com fontes não confiáveis ou mutualmente
    inconsistentes,

52
Programação em Lógica Disciplina Eletiva de
Graduação e Pós-Graduação
  • Gramáticas lógicas
  • Parser e gerador de linguagem built-in em Prolog
  • Basta desenvolver gramática (i.e., como com lex e
    yacc)
  • Mineração da web, extração de informação na
    Internet, compilação
  • tradução automática, geração automática de
    resumos, chatterbots
  • APIs Prolog/Java e Prolog/XML
  • sistemas de informação inteligentes distribuídos
    e heterogêneos a infra-estrutura web
  • integração de dados, interoperabilidade entre
    sistemas, mediadores, data warehousing
  • comercio eletrônico
  • agentes inteligentes de recuperação,
    classificação, extração e notificação de
    informação na web, na Internet, em Intranet
  • inteligência na computação pervasiva
  • toda a IA embutida e mais !

53
Programação em Lógica Disciplina Eletiva de
Graduação e Pós-Graduação
  • Aplicação fio condutor para ilustração dos
    conceitos

54
Programação em Lógica Disciplina Eletiva de
Graduação e Pós-Graduação
55
Exercícios
  • A terrível novela
  • em lógica da 1a ordem
  • em Prolog
  • O banco de dados acadêmico
  • em Prolog
  • em lógica da 1a ordem
  • A curiosidade matou o gato? em Prolog
  • Coloração de mapa em Prolog

56
A terrível novela requisitos em inglês
  • 1. A soap opera is a TV show whose characters
    include a husband, a wife and a mailman such
    that
  • 2. the wife and the mailman blackmail each other
  • 3. everybody is either alcoholic, drug addict or
    gay
  • 4. Dick is gay, Jane is alcoholic and Harry is a
    drug addict
  • 5. the wife is always an alcoholic and the
    long-lost sister of her husband
  • 6. the husband is always called Dick and the
    lover of the mailman
  • 7. the long-lost sister of any gay is called
    either Jane or Cleopatra
  • 8. Harry is the lover of every gay
  • 9. Jane blackmails every drug addicted lover of
    Dick
  • 10. soap operas are invariably terrible!
  • 0. Who are the characters of a terrible TV show?

57
O BD acadêmico requisitos em inglês
  • 1. Bob is 40 and the manager of the CS
    department.
  • 2. His assistants are John and Sally.
  • 3. Marys highest degree is an MS and she works
    at the CS department.
  • 4. She co-authored with her boss and her
    friends, John and Sally, a paper published in the
    Journal of the ACM.
  • 5. Phil is a faculty, who published a paper on
    F-Logic at a Conference of the ACM, jointly with
    Mary and Bob.
  • 6. Every faculty is a midaged person who writes
    article, makes in the average 50,000 a year and
    owns a degree of some kind, typically a PhD.
  • 7. One is considered midage if one is between 30
    and 50 years old.
  • 8. A facultys boss is both a faculty and a
    manager.
  • 9. Friends and children of a person are also
    persons.
  • 10. Every department has a manager who is an
    employee and assistants who are both employees
    and students
  • 11. A boss is an employee who is the manager of
    another employee of the same department.
  • 12. A joint work is a paper that is written by
    two faculties
  • 13. There are three types of papers technical
    reports, journal papers and conference papers
  • 0a Who are the midaged employees of the CS
    department and who are their boss?
  • 0b Who published jointly with Mary in the
    Journal of the ACM?
  • 0c Where did Mary published joint work with
    Phil?

58
A curiosidade matou o gato?
  • Requisitos em inglês
  • 1. Jack owns a dog.
  • 2. Every dog owner is an animal lover.
  • 3. No animal lover kills an animal.
  • 4. Either Jack or curiosity killed Tuna
  • 5. Tuna is a cat
  • 0. Did curiosity kill the cat?
  • Em L1
  • 1. x Dog(x) Ù Owns(Jack,x)
  • 2. "x (y Dog(y) Ù Owns(x,y)) Þ AnimalLover(x)
  • 3. "x AnimalLover(x) Þ "y Animal(y) Þ ØKills(x,y)
  • 4. Kills(Jack, Tuna) Ú Kills(Curiosity, Tuna)
  • 5. Cat(Tuna)
  • 6. "x Cat(x) Þ Animal(x)
  • 0. Kills(Curiosity,Tuna)

59
Coloração de mapa
  • Colorir mapa tal que
  • países adjacentes
  • de cores diferentes
  • Instância de problema de resolução de restrições

B
A
B
A
C
C
D
D
F
E
F
E
Write a Comment
User Comments (0)
About PowerShow.com