introdução a programação em lógica e prolog jacques robin cin-ufpe
TRANSCRIPT
![Page 1: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/1.jpg)
Introdução a Introdução a Programação em Lógica e PrologProgramação em Lógica e Prolog
Jacques RobinCIn-UFPE
![Page 2: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/2.jpg)
Para a IA: um paradigma de representação do conhecimento e raciocínio automático
Para a engenharia de software: um paradigma de especificação de software e de programação
Para os bancos de dados: um modelo conceitual de dados Para a teoria da computação: um conjunto de lógicas
O que é a Programação em Lógica?O que é a Programação em Lógica?
L1c:Lógica
Clássica dos Predicados
L1ch:Lógica
Clássica deHorn da1a ordem
L1nh:Lógica
não-monótonade Horn da1a ordem
Lógica da Programaçã
oem Lógica
Visão unificadora trans-disciplinar de várias área da computação
![Page 3: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/3.jpg)
Metáfora da programação em lógicaMetáfora da programação em lógica
Teoria lógica = Base de Conhecimento (BC)• Axiomas e regras da teoria lógica = BC estática• Teoremas da teoria lógica = BC dinâmica
deduzidos a partir dos axiomas e das regras
• Máquina de inferência = provador de teorema Teoria lógica = modelo de software = implementação de
software• Programar = apenas declarar axiomas e regras• Execução do programa = construção de prova de teorema• Compilador/interpretador = provador de teorema• Estrutura de controle (única) = mecanismo de dedução automática• Disparar execução do programa = perguntar verdade de um
teorema Teoria lógica = Banco de Dados (BD)
• Definir dados = declarar axiomas e regras• Consultar BD = perguntar verdade de um teorema
![Page 4: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/4.jpg)
Aplicações da programação em lógicaAplicações da programação em lógica
Inteligência Artificial• Representação do
conhecimento• Sistemas especialistas• Planejamento• Aprendizagem de máquina• Processamento de
linguagem natural• Sistemas multi-agentes• Robótica• Matemática computacional
simbólica 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
![Page 5: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/5.jpg)
O que é Prolog?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, embora teoricamente impura
Padrão ISO Maioria das outras linguagens de PL são extensões
de Prolog Surgiu na década de 70 Na moda na década de 80 (o Java da época ) Hoje permanece pouco divulgado e usado na
indústria
![Page 6: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/6.jpg)
Representação do conhecimentoRepresentação do conhecimento
Regras
Regras + Lógica
Lógica
Regras + Procedimentos
Classes/Objetos
Classes/Objetos + Procedimentos
Classes/Objetos + Lógica
Regras + Classes/Objetos + Procedimentos
Regras + Classes/Objetos + Lógica
Procedimentos
Provadores de Teoremas
Shells de Sistemas Especialistas
Sistemas de Produção
Programação Imperativa
Programação OO
Lógicas descritivas
Programação em lógica
Sistemas de Produção OO
Programação em lógica OO
Redes Semânticas
Frames
![Page 7: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/7.jpg)
Lógica dos predicados como formalismo Lógica dos predicados como formalismo de representação do conhecimentode representação do conhecimento
Vantagens: • Muito versátil e expressivo• Com semântica declarativa bem definida• Com grande número de mecanismos de inferência dedutivos com
propriedades formais e custos computacionais muito bem conhecidos
Porque então L1C não vingou como FRC padrão?
• De fato vingou a nível teórico, já que cada novo FRC proposto acaba ser re-estudado em termos lógicos
• Desvantagens práticos: Não é intuitiva para especialistas do domínio de aplicação do sistema
inteligente (médico, advogado, lingüista, engenheiro, etc.) Oferece variedade de modelagens excessiva (muita fórmulas
sintaticamente diferentes porém semanticamente equivalentes) Prova de teoremas em L1
C é computacionalmente inviável para grandes bases de conhecimento
![Page 8: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/8.jpg)
West é criminoso?West é criminoso? em lógica dos em lógica dos predicados: variantes sintáticaspredicados: variantes sintáticas
( P,W,N american(P) weapon(W) nation(N) hostile(N) sells(P,N,W) criminal(P))
( W owns(nono,W) missile(W)) ( W owns(nono,W) missile(W)
sells(west,nono,W)) american(west) nation(nono) enemy(nono,america) ( W missile(W) weapon(W)) ( N enemy(N,america)
hostile(N)) nation(america)
( ( P,W,N criminal(P) american(P)
weapon(W) nation(N) hostile(N)) ( W owns(nono,W) missile(W1)) ( W sells(west,nono,W) owns(nono,W) missile(W)) ( P american(P) P = west) ( N nation(N) N = nono) ( W weapon(W)) missile(W)) ( N1,N2 N1=nono N2=america emeny(N1,N2)) ( N hostile(N) enemy(N,america)) ( N nation(N) N = america))
![Page 9: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/9.jpg)
Regras de shell de sistemas especialistasRegras de shell de sistemas especialistas
IF premissa THEN conclusão• Premissas e conclusão em linguagem pseudo-natural com
conectivas genécias IF_THEN, AND, OR, ISA, HAS e outras dependente do domínio ligando nomes de entidades (classes) e propriedades (atributos) do domínio
Vantagens: • Intuitivas para especialista do domínio de aplicação• Variedade mais restrita de modelagens
Desvantagens: • Atalha nível da formalização no processo de engenharia de
conhecimento• Semântica declarativa ambígua• Mecanismo de dedução ad-hoc com propriedades e formais
e custos computacionais mal conhecidos
![Page 10: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/10.jpg)
West é criminoso? West é criminoso? Lógica x Regras “intuitivas” de shellLógica x Regras “intuitivas” de shell
Em lógica dos predicados:Em lógica dos predicados: ( P,W,N american(P) weapon(W) nation(N) hostile(N) sells(P,N,W) criminal(P)) ( W owns(nono,W) missile(W)) ( W owns(nono,W) missile(W) sells(west,nono,W)) american(west) nation(nono) enemy(nono,america)( X missile(W) weapon(W)) ( X enemy(N,america) hostile(N)) nation(america)
Com shell de sistema especialistaCom shell de sistema especialista:Base deBase de regras:regras:IF P ISA american AND W ISA weapon AND N ISA nation AND N IS hostile AND P sells W TO N THEN P IS criminalIF W ISA missile AND nono HAS W THEN west sells W TO nonoIF W ISA missile THEN W ISA weaponIF america HAS enemy N THEN N IS hostileBase deBase de fatos iniciaisfatos iniciais:west ISA americannono ISA nationamerica ISA nationamerica HAS enemy nononono HAS m1m1 ISA missile
![Page 11: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/11.jpg)
Engenharia de uma base de Engenharia de uma base de conhecimentoconhecimento
Elicitação do conhecimento
Formalização do conhecimento
Implementação do conhecimento
Nível do conhecimento:• Nos termos do especialista do domínio de aplicação• Linguagem natural, Notações gráficas ad-hoc
Nível semi-formal:• Notação textual estruturada padrão (ex, XML) • Notação gráfica padrão (ex, UML)• Validação com especialista
Nível formal:• Notação sem ambigüidade com semântica definida matematicamente (ex, lógica, probabilidades)• Verificação de consistência
Nível da implementação:• Codificação em uma linguagem de programação• Teste de protótipo
• Entrevistas estruturadas com especialista• Preparação de dados
• Linguagens formaisde representação do conhecimento• Aprendizagemde Máquina
• Ontologias• Linguagenssemi-formaisde representaçãodo conhecimento
• Compiladores• Máquinas de inferências• Aprendizagemde Máquina
![Page 12: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/12.jpg)
Problema com regras não baseadas na Problema com regras não baseadas na lógicalógica
fatos fatos
sentenças sentenças
Mundo
Representação
segue-se ??
derivasem
ânti
ca ?
?
sem
ânti
ca ?
?
![Page 13: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/13.jpg)
Formas normais da lógica dos predicadosFormas normais da lógica dos predicados
Forma normal conjuntiva:• Conjunção de cláusulas disjuntiva, i.e., de disjunção de formulas atômicas
positivas ou negadas
• (P11 ... Pi1 C11 ... Ci1) ... (Pn1 ... Pk1 Cn1 ... Ck1)
• Dispensa conectivas , e , torna implícito Formal norma implicativa:
• conjunção de cláusulas implicativas, i.e., de implicações de conjunção de formulas atômicas positivas para disjunção de formulas atômicas positivas
• (P11 ... Pi1 C11 ... Ci1) ... (Pn1 ... Pk1 Cn1 ... Ck1)
• Dispensa conectivas , e , torna implícito São equivalentes pela definição da implicação: (P C) (P C)
(P11 ... Pi1 C11 ... Ci1) ... (Pn1 ... Pk1 Cn1 ... Ck1)
((P11 ... Pi1) (C11 ... Ci1)) ... ((Pn1 ... Pk1) (Cn1 ... Ck1))
(P11 ... Pi1 C11 ... Ci1) ... (Pn1 ... Pk1 Cn1 ... Ck1)
![Page 14: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/14.jpg)
Prolog puro: Lógica de Horn LProlog puro: Lógica de Horn L11chch
Programa Prolog = formula da Lógica de Horn L1ch
sem predicado de igualdade Formula de L1
ch: • Formula da lógica dos predicados em forma normal
implicativa com clausulas de conclusão únicaconclusão única
• (P11 ... Pi1 C1) ... (Pn1 ... Pk1 Cn)
L1ch L1
h: • Algumas formulas da lógica dos predicados não tem formula
de Horn equivalente• ex, animalLover(X) animal(Y) kills(X,Y).
![Page 15: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/15.jpg)
Programação em lógica como formalismo Programação em lógica como formalismo de representação do conhecimentode representação do conhecimento
Meio termo entre lógica dos predicados e regras “intuitivas” de shell
Vantagens para aquisição de conhecimento:• Formula da lógica de Horn tem mapeamento direto com de bases fatos
e de regras intuitivas de shell de sistemas especialistas• Representação mais simples e intuitiva do que lógica sem atalhar nível
da formalização• Reduz consideravelmente número de paráfrases sintáticas
Vantagens para máquina de inferência:• Raciocínio dedutivo correto e semi-completo: a refutação por resolução • Espaço de busca da refutação por resolução muito menor em lógica de
Horn do que é lógica dos predicados (eficiência) Perda de expressividade em comparação da lógica dos predicados:
• Facilmente contornável para maioria das aplicações de IA• Uso prático principal dos provadores de teoremas da lógica dos
predicados: engenharia de software formal e matemática computacional, não IA
![Page 16: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/16.jpg)
UnificaçãoUnificação
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
![Page 17: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/17.jpg)
Cláusulas Prolog x Cláusulas de HornCláusulas Prolog x Cláusulas de Horn
Fatos Prolog:• Cláusulas de Horn com premissa única T implícitapremissa única T implícita• Escritos C. Com semântica: T C
Regras Prolog:• Outras cláusulas de Horn • Escrita C :- P1, ... ,Pn. Com semântica: P1 ... Pn C• Escopo das variáveis = uma cláusula
Premissas de várias cláusulas com a mesma conclusão são implicitamente disjuntivasimplicitamente disjuntivas• Semântica de: C :- P1, ... ,Pn. C :- Q1, ... ,Qm, é:
(P1 ... Pn C) (Q1 ... Qm C) ((P1 ... Pn ) C) ((Q1 ... Qm )) C) (p+c).(q+c) ((P1 ... Pn ) (Q1 ... Qm )) C pq + c ((P1 ... Pn ) (Q1 ... Qm )) C ((P1 ... Pn ) (Q1 ... Qm )) C
![Page 18: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/18.jpg)
West é criminoso?West é criminoso? em lógica dos em lógica dos predicadospredicados
Requisitos em inglês1. It is crimimal for an American to
sell weapons to an hostile country
2. Nono owns missiles3. Nono acquires all its missiles
from West4. West is American5. Nono is a nation6. Nono is an enemy of the USA0. Is West a crimimal?
Em lógica da 1a ordem1. 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)
![Page 19: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/19.jpg)
West é criminoso?West é criminoso? em formal normal implicativaem formal normal implicativa
Em lógica da 1a ordem1. 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 normalamerican(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)
![Page 20: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/20.jpg)
West é criminoso?West é criminoso? em Prolog em Prolog
Em Lógica de Horn: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)
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).
![Page 21: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/21.jpg)
West é criminoso?West é criminoso? busca 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)? <- yes.•american(west)? -> yes.•weapon(W)? <- W = m1.
missile(W)? -> W = m1.•nation(N)? -> N = nono.•hostile(nono)? <- yes.
enemy(nono,america)? -> yes.•sells(west,nono,m1)? <- yes.
owns(nono,m1)? -> yes.missile(m1)? -> yes.
![Page 22: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/22.jpg)
West é criminoso?West é criminoso? Encadeamento de regras para trásEncadeamento de regras para trás
criminal(P)
american(P) weapon(W) nation(N) hostile(N) sells(P,N,W)
criminal(west)?
missile(W) enemy(N,america) owns(nono,W)
missile(m1)american(west) nation(nono)
nation(america)
enermy(nono,america)owns(nono,m1)
sells(west,nono,W)
![Page 23: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/23.jpg)
West é criminoso?West é criminoso? Encadeamento de regras para trásEncadeamento de regras para trás
criminal(west)
american(P) weapon(W) nation(N) hostile(N) sells(P,N,W)
criminal(west)?
missile(W) enemy(N,america) owns(nono,W)
missile(m1)american(west) nation(nono)
nation(america)
enermy(nono,america)owns(nono,m1)
sells(west,nono,W)
![Page 24: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/24.jpg)
West é criminoso?West é criminoso? Encadeamento de regras para trásEncadeamento de regras para trás
criminal(west)
american(west) weapon(W) nation(N) hostile(N) sells(west,N,W)
criminal(west)?
missile(W) enemy(N,america) owns(nono,W)
missile(m1)american(west) nation(nono)
nation(america)
enermy(nono,america)owns(nono,m1)
sells(west,nono,W)
![Page 25: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/25.jpg)
West é criminoso?West é criminoso? Encadeamento de regras para trásEncadeamento de regras para trás
criminal(west)
american(west) weapon(W) nation(N) hostile(N) sells(west,N,W)
criminal(west)?
missile(W) enemy(N,america) owns(nono,W)
missile(m1)american(west) nation(nono)
nation(america)
enermy(nono,america)owns(nono,m1)
sells(west,nono,W)
![Page 26: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/26.jpg)
West é criminoso?West é criminoso? Encadeamento de regras para trásEncadeamento de regras para trás
criminal(west)
american(west) weapon(W) nation(N) hostile(N) sells(west,N,W)
criminal(west)?
missile(W) enemy(N,america) owns(nono,W)
missile(m1)american(west) nation(nono)
nation(america)
enermy(nono,america)owns(nono,m1)
sells(west,nono,W)
![Page 27: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/27.jpg)
West é criminoso?West é criminoso? Encadeamento de regras para trásEncadeamento de regras para trás
criminal(west)
american(west) weapon(W) nation(N) hostile(N) sells(west,N,W)
criminal(west)?
missile(W) enemy(N,america) owns(nono,W)
missile(m1)american(west) nation(nono)
nation(america)
enermy(nono,america)owns(nono,m1)
sells(west,nono,W)
![Page 28: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/28.jpg)
West é criminoso?West é criminoso? Encadeamento de regras para trásEncadeamento de regras para trás
criminal(west)
american(west) weapon(W) nation(N) hostile(N) sells(west,N,W)
criminal(west)?
missile(W) enemy(N,america) owns(nono,W)
missile(m1)american(west) nation(nono)
nation(america)
enermy(nono,america)owns(nono,m1)
sells(west,nono,W)
![Page 29: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/29.jpg)
West é criminoso?West é criminoso? Encadeamento de regras para trásEncadeamento de regras para trás
criminal(west)
american(west) weapon(W) nation(N) hostile(N) sells(west,N,W)
criminal(west)?
missile(m1) enemy(N,america) owns(nono,W)
missile(m1)american(west) nation(nono)
nation(america)
enermy(nono,america)owns(nono,m1)
sells(west,nono,W)
![Page 30: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/30.jpg)
West é criminoso?West é criminoso? Encadeamento de regras para trásEncadeamento de regras para trás
criminal(west)
american(west) weapon(m1) nation(N) hostile(N) sells(west,N,W)
criminal(west)?
missile(m1) enemy(N,america) owns(nono,W)
missile(m1)american(west) nation(nono)
nation(america)
enermy(nono,america)owns(nono,m1)
sells(west,nono,W)
![Page 31: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/31.jpg)
West é criminoso?West é criminoso? Encadeamento de regras para trásEncadeamento de regras para trás
criminal(west)
american(west) weapon(m1) nation(N) hostile(N) sells(west,N,m1)
criminal(west)?
missile(m1) enemy(N,america) owns(nono,W)
missile(m1)american(west) nation(nono)
nation(america)
enermy(nono,america)owns(nono,m1)
sells(west,nono,W)
![Page 32: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/32.jpg)
West é criminoso?West é criminoso? Encadeamento de regras para trásEncadeamento de regras para trás
criminal(west)
american(west) weapon(m1) nation(N) hostile(N) sells(west,N,m1)
criminal(west)?
missile(m1) enemy(N,america) owns(nono,W)
missile(m1)american(west) nation(nono)
nation(america)
enermy(nono,america)owns(nono,m1)
sells(west,nono,W)
![Page 33: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/33.jpg)
West é criminoso?West é criminoso? Encadeamento de regras para trásEncadeamento de regras para trás
criminal(west)
american(west) weapon(m1) nation(N) hostile(N) sells(west,N,m1)
criminal(west)?
missile(m1) enemy(N,america) owns(nono,W)
missile(m1)american(west) nation(nono)
nation(america)
enermy(nono,america)owns(nono,m1)
sells(west,nono,W)
![Page 34: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/34.jpg)
West é criminoso?West é criminoso? Encadeamento de regras para trásEncadeamento de regras para trás
criminal(west)
american(west) weapon(m1) nation(nono) hostile(N) sells(west,N,m1)
criminal(west)?
missile(m1) enemy(N,america) owns(nono,W)
missile(m1)american(west) nation(nono)
nation(america)
enermy(nono,america)owns(nono,m1)
sells(west,nono,W)
![Page 35: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/35.jpg)
West é criminoso?West é criminoso? Encadeamento de regras para trásEncadeamento de regras para trás
criminal(west)
american(west) weapon(m1) nation(nono) hostile(nono) sells(west,nono,m1)
criminal(west)?
missile(m1) enemy(N,america) owns(nono,W)
missile(m1)american(west) nation(nono)
nation(america)
enermy(nono,america)owns(nono,m1)
sells(west,nono,W)
![Page 36: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/36.jpg)
West é criminoso?West é criminoso? Encadeamento de regras para trásEncadeamento de regras para trás
criminal(west)
american(west) weapon(m1) nation(nono) hostile(nono) sells(west,nono,m1)
criminal(west)?
missile(m1) enemy(N,america) owns(nono,W)
missile(m1)american(west) nation(nono)
nation(america)
enermy(nono,america)owns(nono,m1)
sells(west,nono,W)
![Page 37: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/37.jpg)
West é criminoso?West é criminoso? Encadeamento de regras para trásEncadeamento de regras para trás
criminal(west)
american(west) weapon(m1) nation(nono) hostile(nono) sells(west,nono,m1)
criminal(west)?
missile(m1) enemy(nono,america) owns(nono,W)
missile(m1)american(west) nation(nono)
nation(america)
enermy(nono,america)owns(nono,m1)
sells(west,nono,W)
![Page 38: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/38.jpg)
West é criminoso?West é criminoso? Encadeamento de regras para trásEncadeamento de regras para trás
criminal(west)
american(west) weapon(m1) nation(nono) hostile(nono) sells(west,nono,m1)
criminal(west)?
missile(m1) enemy(nono,america) owns(nono,W)
missile(m1)american(west) nation(nono)
nation(america)
enermy(nono,america)owns(nono,m1)
sells(west,nono,W)
![Page 39: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/39.jpg)
West é criminoso?West é criminoso? Encadeamento de regras para trásEncadeamento de regras para trás
criminal(west)
american(west) weapon(m1) nation(nono) hostile(nono) sells(west,nono,m1)
criminal(west)?
missile(m1) enemy(nono,america) owns(nono,W)
missile(m1)american(west) nation(nono)
nation(america)
enermy(nono,america)owns(nono,m1)
sells(west,nono,W)
![Page 40: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/40.jpg)
West é criminoso?West é criminoso? Encadeamento de regras para trásEncadeamento de regras para trás
criminal(west)
american(west) weapon(m1) nation(nono) hostile(nono) sells(west,nono,m1)
criminal(west)?
missile(m1) enemy(nono,america) owns(nono,W)
missile(m1)american(west) nation(nono)
nation(america)
enermy(nono,america)owns(nono,m1)
sells(west,nono,W)
![Page 41: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/41.jpg)
West é criminoso?West é criminoso? Encadeamento de regras para trásEncadeamento de regras para trás
criminal(west)
american(west) weapon(m1) nation(nono) hostile(nono) sells(west,nono,m1)
criminal(west)?
missile(m1) enemy(nono,america) owns(nono,W)
missile(m1)american(west) nation(nono)
nation(america)
enermy(nono,america)owns(nono,m1)
sells(west,nono,m1)
![Page 42: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/42.jpg)
West é criminoso?West é criminoso? Encadeamento de regras para trásEncadeamento de regras para trás
criminal(west)
american(west) weapon(m1) nation(nono) hostile(nono) sells(west,nono,m1)
criminal(west)?
missile(m1) enemy(nono,america) owns(nono,m1)
missile(m1)american(west) nation(nono)
nation(america)
enermy(nono,america)owns(nono,m1)
sells(west,nono,m1)
![Page 43: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/43.jpg)
West é criminoso?West é criminoso? Encadeamento de regras para trásEncadeamento de regras para trás
criminal(west)
american(west) weapon(m1) nation(nono) hostile(nono) sells(west,nono,m1)
criminal(west)?
missile(m1) enemy(nono,america) owns(nono,m1)
missile(m1)american(west) nation(nono)
nation(america)
enermy(nono,america)owns(nono,m1)
sells(west,nono,m1)
![Page 44: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/44.jpg)
West é criminoso?West é criminoso? Encadeamento de regras para trásEncadeamento de regras para trás
criminal(west)
american(west) weapon(m1) nation(nono) hostile(nono) sells(west,nono,m1)
criminal(west)?
missile(m1) enemy(nono,america) owns(nono,m1)
missile(m1)american(west) nation(nono)
nation(america)
enermy(nono,america) owns(nono,m1)
sells(west,nono,m1)
![Page 45: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/45.jpg)
West é criminoso?West é criminoso? Encadeamento de regras para trásEncadeamento de regras para trás
criminal(west)
american(west) weapon(m1) nation(nono) hostile(nono) sells(west,nono,m1)
criminal(west)?
missile(m1) enemy(nono,america) owns(nono,m1)
missile(m1)american(west) nation(nono)
nation(america)
enermy(nono,america) owns(nono,m1)
sells(west,nono,m1)
![Page 46: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/46.jpg)
West é criminoso?West é criminoso? Encadeamento de regras para trásEncadeamento de regras para trás
criminal(west)
american(west) weapon(m1) nation(nono) hostile(nono) sells(west,nono,m1)
criminal(west)?
missile(m1) enemy(nono,america) owns(nono,m1)
missile(m1)american(west) nation(nono)
nation(america)
enermy(nono,america) owns(nono,m1)
sells(west,nono,m1)
![Page 47: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/47.jpg)
West é criminoso?West é criminoso? Encadeamento de regras para trásEncadeamento de regras para trás
criminal(west)
american(west) weapon(m1) nation(nono) hostile(nono) sells(west,nono,m1)
criminal(west)?
missile(m1) enemy(nono,america) owns(nono,m1)
missile(m1)american(west) nation(nono)
nation(america)
enermy(nono,america) owns(nono,m1)
sells(west,nono,m1)
![Page 48: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/48.jpg)
West é criminoso?West é criminoso? Encadeamento de regras para trásEncadeamento de regras para trás
criminal(west)
american(west) weapon(m1) nation(nono) hostile(nono) sells(west,nono,m1)
criminal(west)?
missile(m1) enemy(nono,america) owns(nono,m1)
missile(m1)american(west) nation(nono)
nation(america)
enermy(nono,america) owns(nono,m1)
sells(west,nono,m1)
![Page 49: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/49.jpg)
West é criminoso?West é criminoso? Encadeamento de regras para trásEncadeamento de regras para trás
criminal(west)
american(west) weapon(m1) nation(nono) hostile(nono) sells(west,nono,m1)
criminal(west)? yes
missile(m1) enemy(nono,america) owns(nono,m1)
missile(m1)american(west) nation(nono)
nation(america)
enermy(nono,america) owns(nono,m1)
sells(west,nono,m1)
![Page 50: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/50.jpg)
West é criminoso ?West é criminoso ? backtracking 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)? <- yes.•american(west)? -> yes.•weapon(W)? <- W = m1.
missile(W)? -> W = m1.•nation(N)? -> N = america.•hostile(america)? <- no.
enemy(america,america)? -> no.•backtrack: nation(N), N \ {america}? -> N = nono.•hostile(nono)? <- yes.
enemy(nono,america)? -> yes.•sells(west,nono,m1)? <- yes.
owns(nono,m1)? -> yes.missile(nono,m1)? -> yes.
![Page 51: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/51.jpg)
West é criminoso?West é criminoso? Encadeamento de regras para trásEncadeamento de regras para trás
criminal(west)
american(west) weapon(m1) nation(N) hostile(N) sells(west,N,m1)
criminal(west)?
missile(m1) enemy(N,america) owns(nono,W)
missile(m1)american(west)
nation(nono)
nation(america) enermy(nono,america)owns(nono,m1)
sells(west,nono,W)
![Page 52: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/52.jpg)
West é criminoso?West é criminoso? Encadeamento de regras para trásEncadeamento de regras para trás
criminal(west)
american(west) weapon(m1) nation(N) hostile(N) sells(west,N,m1)
criminal(west)?
missile(m1) enemy(N,america) owns(nono,W)
missile(m1)american(west)
nation(nono)
nation(america) enermy(nono,america)owns(nono,m1)
sells(west,nono,W)
![Page 53: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/53.jpg)
West é criminoso?West é criminoso? Encadeamento de regras para trásEncadeamento de regras para trás
criminal(west)
american(west) weapon(m1) nation(america) hostile(N) sells(west,N,m1)
criminal(west)?
missile(m1) enemy(N,america) owns(nono,W)
missile(m1)american(west)
nation(nono)
nation(america) enermy(nono,america)owns(nono,m1)
sells(west,nono,W)
![Page 54: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/54.jpg)
West é criminoso?West é criminoso? Encadeamento de regras para trásEncadeamento de regras para trás
criminal(west)
american(west) weapon(m1) nation(america) hostile(america) sells(west,america,m1)
criminal(west)?
missile(m1) enemy(N,america) owns(nono,W)
missile(m1)american(west)
nation(nono)
nation(america) enermy(nono,america)owns(nono,m1)
sells(west,nono,W)
![Page 55: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/55.jpg)
West é criminoso?West é criminoso? Encadeamento de regras para trásEncadeamento de regras para trás
criminal(west)
american(west) weapon(m1) nation(america) hostile(america) sells(west,america,m1)
criminal(west)?
missile(m1) enemy(N,america) owns(nono,W)
missile(m1)american(west)
nation(nono)
nation(america) enermy(nono,america)owns(nono,m1)
sells(west,nono,W)
![Page 56: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/56.jpg)
West é criminoso?West é criminoso? Encadeamento de regras para trásEncadeamento de regras para trás
criminal(west)
american(west) weapon(m1) nation(america) hostile(america) sells(west,america,m1)
criminal(west)?
missile(m1) enemy(N,america) owns(nono,W)
missile(m1)american(west)
nation(nono)
nation(america) enermy(nono,america)owns(nono,m1)
sells(west,nono,W)
![Page 57: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/57.jpg)
West é criminoso?West é criminoso? Encadeamento de regras para trásEncadeamento de regras para trás
criminal(west)
american(west) weapon(m1) nation(america) hostile(america) sells(west,america,m1)
criminal(west)?
missile(m1) enemy(N,america) owns(nono,W)
missile(m1)american(west)
nation(nono)
nation(america) enermy(nono,america)owns(nono,m1)
sells(west,nono,W)
fail
![Page 58: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/58.jpg)
West é criminoso?West é criminoso? Encadeamento de regras para trásEncadeamento de regras para trás
criminal(west)
american(west) weapon(m1) nation(america) hostile(america) sells(west,america,m1)
criminal(west)?
missile(m1) enemy(N,america) owns(nono,W)
missile(m1)american(west)
nation(nono)
nation(america) enermy(nono,america)owns(nono,m1)
sells(west,nono,W)
fail
backtrack
![Page 59: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/59.jpg)
West é criminoso?West é criminoso? Encadeamento de regras para trásEncadeamento de regras para trás
criminal(west)
american(west) weapon(m1) nation(N) hostile(N) sells(west,N,m1)
criminal(west)?
missile(m1) enemy(N,america) owns(nono,W)
missile(m1)american(west)
nation(nono)
nation(america) enermy(nono,america)owns(nono,m1)
sells(west,nono,W)
backtrack
![Page 60: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/60.jpg)
West é criminoso?West é criminoso? Encadeamento de regras para trásEncadeamento de regras para trás
criminal(west)
american(west) weapon(m1) nation(N) hostile(N) sells(west,N,m1)
criminal(west)?
missile(m1) enemy(N,america) owns(nono,W)
missile(m1)american(west)
nation(nono)
nation(america) enermy(nono,america)owns(nono,m1)
sells(west,nono,W)
![Page 61: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/61.jpg)
West é criminoso?West é criminoso? Encadeamento de regras para trásEncadeamento de regras para trás
criminal(west)
american(west) weapon(m1) nation(nono) hostile(N) sells(west,N,m1)
criminal(west)?
missile(m1) enemy(N,america) owns(nono,W)
missile(m1)american(west)
nation(nono)
nation(america) enermy(nono,america)owns(nono,m1)
sells(west,nono,W)
![Page 62: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/62.jpg)
West é criminoso?West é criminoso? Encadeamento de regras para trásEncadeamento de regras para trás
criminal(west)
american(west) weapon(m1) nation(nono) hostile(nono) sells(west,nono,m1)
criminal(west)?
missile(m1) enemy(N,america) owns(nono,W)
missile(m1)american(west)
nation(nono)
nation(america) enermy(nono,america)owns(nono,m1)
sells(west,nono,W)
![Page 63: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/63.jpg)
Algoritmo da máquina de inferência Algoritmo da máquina de inferência PrologProlog
Tentar unificar termo do objetivo Oi corrente com as cabeças das claúsulas da BC, na ordem de escritura
Seja C a 1a cabeça a se unificar com Oi via subsituição :• se C for um fato, devolve: T e como resultado
• se C for conclusão da regra C :- P1, ..., Pn, então: o novo objetivo corrente Oi+1 = P1 se P1 for verdade, então recursivamente tentar provar P2, ..., Pn
Se nenhuma cabeça das claúsulas da BC se unifica com Oi:• devolver F como resultado, e
• retroceder, buscando uma prova alternativa para Oi-1, o último objetivo provado antes de Oi
![Page 64: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/64.jpg)
West é criminoso?West é criminoso? Encadeamento de regras para frenteEncadeamento de regras para frente
criminal(P)
american(P) weapon(W) nation(N) hostile(N) sells(P,N,W)
criminal(west)?
missile(W) enemy(N,america) owns(nono,W)
missile(m1)american(west) nation(nono)
nation(america)
enermy(nono,america)owns(nono,m1)
sells(west,nono,W)
![Page 65: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/65.jpg)
West é criminoso?West é criminoso? Encadeamento de regras para frenteEncadeamento de regras para frente
criminal(P)
american(P) weapon(W) nation(N) hostile(N) sells(P,N,W)
criminal(west)?
missile(m1) enemy(nono,N) owns(nono,m1)
missile(m1)american(west) nation(nono)
nation(america)
enermy(nono,america) owns(nono,m1)
sells(west,nono,W)
![Page 66: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/66.jpg)
West é criminoso?West é criminoso? Encadeamento de regras para frenteEncadeamento de regras para frente
criminal(P)
american(P) weapon(m1) nation(N) hostile(N) sells(P,N,W)
criminal(west)?
missile(W) enemy(nono,N) owns(nono,W)
missile(m1)american(west) nation(nono)
nation(america)
enermy(nono,america) owns(nono,m1)
sells(west,nono,W)
![Page 67: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/67.jpg)
West é criminoso?West é criminoso? Encadeamento de regras para frenteEncadeamento de regras para frente
criminal(P)
american(P) weapon(m1) nation(N) hostile(N) sells(P,N,W)
criminal(west)?
missile(m1) enemy(nono,N) owns(nono,m1)
missile(m1)american(west) nation(nono)
nation(america)
enermy(nono,america) owns(nono,m1)
sells(west,nono,W)
![Page 68: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/68.jpg)
West é criminoso?West é criminoso? Encadeamento de regras para frenteEncadeamento de regras para frente
criminal(P)
american(P) weapon(m1) nation(N) hostile(nono) sells(P,N,W)
criminal(west)?
missile(W) owns(nono,W)
missile(m1)american(west) nation(nono)
nation(america)
enemy(nono,N) owns(nono,m1)
sells(west,nono,W)
![Page 69: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/69.jpg)
West é criminoso?West é criminoso? Encadeamento de regras para frenteEncadeamento de regras para frente
criminal(P)
american(P) weapon(m1) nation(N) hostile(nono) sells(P,N,W)
criminal(west)?
missile(m1) owns(nono,m1)
missile(m1)american(west) nation(nono)
nation(america)
enemy(nono,america) owns(nono,m1)
sells(west,nono,W)
![Page 70: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/70.jpg)
West é criminoso?West é criminoso? Encadeamento de regras para frenteEncadeamento de regras para frente
criminal(P)
american(P) weapon(m1) nation(N) hostile(nono) sells(P,N,W)
criminal(west)?
missile(m1)american(west) nation(nono)
nation(america)
enermy(nono,america) owns(nono,m1)
sells(west,nono,m1)
![Page 71: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/71.jpg)
West é criminoso?West é criminoso? Encadeamento de regras para frenteEncadeamento de regras para frente
criminal(P)
american(west) weapon(m1) nation(nono) hostile(nono) sells(west,nono,m1)
criminal(west)?
missile(m1)american(west) nation(nono)
nation(america)
enermy(nono,america) owns(nono,m1)
sells(west,nono,m1)
![Page 72: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/72.jpg)
West é criminoso?West é criminoso? Encadeamento de regras para frenteEncadeamento de regras para frente
criminal(west)
weapon(m1) hostile(nono)
criminal(west)?
missile(m1)american(west) nation(nono)
nation(america)
enermy(nono,america) owns(nono,m1)
sells(west,nono,m1)
![Page 73: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/73.jpg)
West é criminoso?West é criminoso? Encadeamento de regras para frenteEncadeamento de regras para frente
criminal(west)
weapon(m1) hostile(nono)
criminal(west)? yes
missile(m1)american(west) nation(nono)
nation(america)
enermy(nono,america) owns(nono,m1)
sells(west,nono,m1)
![Page 74: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/74.jpg)
Prolog, refutação e resoluçãoProlog, refutação e resolução
Mecanismo de inferência de Prolog:• forma particular de refutação por resolução• com estratégia de resolução linear de entradalinear de entrada, i.e., a cada passo
sempre resolvendo uma das clausulas iniciais (base de conhecimento e negação da consulta), varrendo as candidatas na ordem de escritura do programa de cima para baixo
• com outra clausula sendo a última a ter sido derivada• escolhendo os literais na ordem de escritura das premissas de
esquerda para direita Estratégia com bom compromisso simplicidade/eficiência Criar a árvore de prova por meio de cima para baixo em
profundidade primeira Em caso de falha, efetua um retrocesso linear e sistemático Encadeia as regras para trás É dirigido pelos objetivos
![Page 75: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/75.jpg)
West é criminoso?West é criminoso? Prova Prolog como Prova Prolog como refutação com resolução SLDrefutação com resolução SLD
(american(P) weapon(W) nation(N) hostile(N) sells(P,N,W) criminal(P)) //1 (T owns(nono,m1)) //2a
(T missile(m1)) //2b
(owns(nono,W) missile(W) sells(west,nono,W)) //3
(T american(west)) //4 (T nation(nono)) //5 (T enemy(nono,america)) //6
(missile(W) weapon(W)) //7 (enemy(N,america) hostile(N)) //8
(T nation(america)) //9 (criminal(west) F) //0
1. Resolver 0 com 1 unificando P/west:american(west) weapon(W) nation(N) hostile(N) sells(west,N,W) F //102. Resolver 10 com 4:weapon(W) nation(N) hostile(N) sells(west,N,W) F //113. Resolver 11 com 7: missile(W) nation(N) hostile(N) sells(west,N,W) F //124. Resolver 12 com 2b unificando W/m1:nation(N) hostile(N) sells(west,N,m1) F //135. Resolver 13 com 5 unificando N/nono:hostile(nono) sells(west,nono,m1) F //146. Resolver 14 com 8 unificando N/nono:enemy(nono,america) sells(west,nono,m1)
F //157. Resolver 15 com 6: sells(west,nono,m1) F //168. Resolver 16 com 3 unificando W/m1:owns(nono,m1) missile(m1) F //179. Resolver 17 com 2a: missile(m1) F //1810. Resolver 18 com 2b: F
![Page 76: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/76.jpg)
Prolog devolve a primeira respostaProlog 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.$
![Page 77: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/77.jpg)
Forçar o backtracking Forçar o backtracking para obter todas as respostaspara 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)? <- U = b. g1(U)? -> U = a. g2(a)? <- no.
• g21(a)? -> yes.• g22(a)? -> no.
g1(U), U \ {a}? -> U = b. g2(b)? <- yes.
• g21(b)? -> yes.• g22(b)? -> yes.
; g1(U), U \ {a,b} ? -> no.
![Page 78: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/78.jpg)
Backtracking em cascatasBacktracking 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}? <- U = a. g3(U)? -> U = a. g4(a)? -> yes.; g3(U), U \ {a}? -> U = b. g4(b)? -> no. g3(U), U \ {a,b}? -> no.g(U), g \ {g1,g2 ; g3,g4}? ->
no.
![Page 79: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/79.jpg)
Prolog puro: Prolog puro: sem atribuição, nem predicado de sem atribuição, nem predicado de
igualdadeigualdade Em Prolog, = é o operador de unificaçãounificação explícita:
• é uma consulta consulta lógica que retorno verdadeiro ou falso e potencialmente instância variáveis
• nãonão é um operador de atribuiçãoatribuição como na programação imperativa• nãonão é um predicado de declaraçãodeclaração de igualdade como na lógica dos
predicados
?- geber = senior -> no. ?- prof(X,disc(Y,dept(di,ufpe))) = prof(geber,disc(ia,Z)).
-> X = geber, Y = ia, Z = dept(di,ufpe). prof(ia,di,ufpe,geber). musico(senior). ?- geber = senior, prof(ia,di,ufpe,X), musico(X). -> 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). -> X = pessoa(geber,senior).
![Page 80: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/80.jpg)
Prolog: listasProlog: 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)] = [Head|Tail] Head = a, Tail = [b,X,p(Y,C)] ?- [[p(X),[a]],q([b,c])] = [[H|T1]|T2] H = p(X), T1 = [[a]], T2 = [q([b,c])] member(X,[X|_]). member(X,[_|Z]) :- member(X,Z). ?- member(b,[a,b,c]) -> yes. ?- member(X,[a,b,c]) -> X = a ; X = b ; X = c ; no.
![Page 81: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/81.jpg)
Programação Programação relacional:relacional: vários usos do mesmo predicadovários usos do mesmo predicado
Definiçaõ única:append([],L,L).append([H|T1],L,[H|T2]) :- append(T1,L,T2).
Uso como verificador: ?- append([a,b],[c],[a,b,c]). -> yes.?- append([a,b],[c],[a]). -> no.
Uso como instanciador:?- append([a,b],[c],R). -> R = [a,b,c].?- append(H,[c],[a,b,c]). -> H = [a,b].
Uso como resolvedor de restrições:?- append(X,Y,[a,b,c]). -> X = [], Y = [a,b,c] ; -> X = [a], Y = [b,c] ...
Uso como enumerador: ?- append(X,Y,Z). -> X = [], Y =[], Z = [] ; -> X = [_], Y = [], Z = [_] ...
Implementa sozinha funcionalidades de 8 métodos imperativos!
![Page 82: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/82.jpg)
Programação procedimental Programação procedimental x programação em lógicax programação em lógica
1. Modelagem estrutural2. Modelagem comportamental3. Codificar estruturas de
dados4. Codificar passo a passopasso a passo
estruturas de controle5. Compilar/interpretar
programa6. Executar programa
A. Declarar o que é verdade (fatos e regras)
B. Compilar/interpretar programa C. Fazer consulta sobre verdade
de um fato
A = 1+3C = 6
Programação declarativadeclarativa: • não há necessidade de 2 e 4 !• estrutura de controle única
(dedução automática) embutida no compilador/interpretador usada para todos os problemas !
![Page 83: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/83.jpg)
Aspectos de Prolog foraAspectos de Prolog forada Lógica Clássica de Horn da 1da Lógica Clássica de Horn da 1aa ordem ordem
Acrescentados por necessidades práticas de programação
Semântica imperativa ou funcional, de lógicas não clássicas ou clássicas de ordem superior
Negação por falha: not Controle e poda da busca: ! (cut), repeat, ... Entrada/saída: read, write, ... Atribuição aritmética: is Modificação dinâmica da base de conhecimento:
assert, retract Meta-programação: var, =.., name, list
![Page 84: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/84.jpg)
Prolog: aritméticaProlog: aritmética
3 tipos de operadores built-in aritméticos:• calculadores (n-ários infixos): +, -, *, /, mod • comparadores (binários infixos): =:=, =\=, <, >, =<, >=• 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
![Page 85: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/85.jpg)
Prolog: exemplos de aritmética 1Prolog: exemplos de aritmética 1
> ?- 1 + 1 < 1 + 2.yes> ?- 1 + 3 =:= 2 + 2.yes> ?- 1 + 3 = 2 + 2.no> ?- 1 + A = B + 2.A = 2B = 1yes> ?- 1 + A =:= B + 2.Error> ?- A = 2, B = 1, 1 + A =:= B +
2.A = 2B = 1yes
> ?- C = 1 + 2.C = 1+2yes> ?- C is 1 + 2.C = 3yes> ?- C is D, D = 1 + 2.Error.> ?- D = 1 + 2, C is D.D=1+2C=3yes> ?- -1+2 = +(-(1),2).no> ?- -1+2 =:= +(-(1),2).yes
![Page 86: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/86.jpg)
Prolog: exemplos de aritmética 2Prolog: 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 = 1yes?- fac(3,X).X = 6yes?- fac(5,X).X = 120yes?
sum([],0).sum([H|T],N) :- sum(T,M), N is H + M.?- sum([2,1,3,1],S).S = 7yes?- sum([2,10,1],S).S = 13yes?
![Page 87: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/87.jpg)
Evitar backtracking inútil: Evitar backtracking inútil: !! (o Cut) (o Cut)
Operador built-in de poda da árvore de prova Logicamente 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 -> N• permite backtracking N -> M, Q -> P, D -> (R xor Q), (P xor R) -> B• R tentado:
unicamente se M ou N falha nunca se P ou Q falha
![Page 88: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/88.jpg)
Exemplo de Exemplo de CutCut
sign(X,-1) :- X<0, !.
sign(X,0) :- X=0, !.sign(X,1) :- X>0.
?- sign(-2,Y).Y=-1yes?- sign(0,Y).Y=0yes
sign(-2,Y)
-2 < 0, !
!
Y=-1
yes
Y=0 Y=1
-2=0, !
-2 > 0
fail fail
Sub-árvore podada
sign(0,Y)
0 < 0, !
Y=-1
Y=0 Y=1
0=0, ! 0 > 0
fail
Sub-árvore podada
fail !
yes
![Page 89: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/89.jpg)
Perigos do CutPerigos do Cut
member(X,[X|_]).member(X,[_|Z]) :- member(X,Z).add2set1(E,Si,_) :-
member[E,Si], !.add2set1(E,Si,[E|Si]).
?- add2set1(a,[a,b],So).yes, So=[a,b]?- add2set1(c,[a,b],So).yes, So=[c,a,b]?- add2set1(a,[a],[a,a]).yes
member(X,[X|_]).member(X,[_|Z]) :- member(X,Z).add2set1(E,Si,So) :- member[E,Si], !,
So=Si.add2set1(E,Si,[E|Si]).
?- add2set1(a,[a,b],So).yes, So=[a,b]?- add2set1(c,[a,b],So).yes, So=[c,a,b]?- add2set1(a,[a],[a,a]).no
• Programas com cuts não possuem semântica declarativa em lógica de Horn.• Apenas uma semântica procedimental, como um programa imperativo.
![Page 90: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/90.jpg)
Prolog: exemplos de teste de tiposProlog: exemplos de teste de tipos
?- var(X).X = _3yes?- var(2).no ?- var(a).no ?- var(p(a,X)).no ?- nonvar(2), nonvar(p(2,X,a)).X = _11yes?- X is 2 + 3, var(X).no ?- var(X), X is 2 + 3.X = 5yes
numberp(Term) :- integer(Term).numberp(Term) :- real(Term).
structp(Term) :- nonvar(Term), not atomic(Term).
listp(Term) :- nonvar(Term),
listp1(term).listp1([]).listp1([H|T]) :- listp1(T).
factp(Term) :- strucp(Term), not listp(Term).
![Page 91: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/91.jpg)
Prolog: conversão de tiposProlog: 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
![Page 92: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/92.jpg)
Prolog: entrada/saída 1Prolog: 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
![Page 93: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/93.jpg)
Prolog: entrada/saída 2Prolog: 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 ?
![Page 94: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/94.jpg)
Prolog: failure-driven loopProlog: 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.
![Page 95: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/95.jpg)
Hipóteses sobre completudeHipóteses sobre completudeda base de conhecimentoda base de conhecimento
Dado uma base de conhecimento lógica B, existem sentenças lógicas S (consultas Ask) tal que nem S, nem S é conseqüência lógica de B
Exemplo:B = {ônibusPara(garanhuns,10:00), ônibusPara(salgueiro,12:00)}S = ônibusPara(garanhuns,12:00)B | S e B | S
Resposta a tal consulta depende da hipótese sobre a completude da informação na BC feita pela máquina de inferência
Hipótese de mundo aberto (BC suposta incompleta ):• se B | S e B | S, então Ask(S) = unknown• provadores de teorema em cálculo dos predicados e pelas lógicas
descritivas Hipótese de mundo fechado (BC suposta completa ):
• se B | S e B | S, então Ask(S) = False
• programação em lógica, sistemas de produção e bancos de dados
![Page 96: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/96.jpg)
Hipótese do mundo fechadoHipótese do mundo fechado
Concluir Ask(S) = False apenas a partir de B | S não é uma inferência dedutivamente correta
Epistemologicamente:• Ask(S) = False concluído a partir de B | S,• é mais fraco do que Ask(S) = False derivado a partir de B | S
É uma forma limitada de:• Abdução• Raciocínio por default• Raciocínio não monótono
Maioria da máquinas de inferência que utilizam a hipótese do mundo fechado:• Não armazenam fatos negativos nas suas BC, i.e., não há ações
Tell(S)• Nem são capaz de deduções da forma B | S, apenas B | S
![Page 97: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/97.jpg)
Hipótese do mundo fechadoHipótese do mundo fechadoe manutenção da verdadee manutenção da verdade
Manutenção da verdade:• Manter consistência de B depois de Tell(S,t)• Requer Retract(S´,t+1), S´, S foi utilizada na prova de S´
Ask(S,t) = False porque B(t) | S:• é apenas uma hipótese por default• pode ser revisada na luz de nova evidência• ex, no caso de Tell(S´,t+1) com B(t+1) = B(t) {S´} | S
Ask(S,t) False porque B(t) | S:• é uma dedução provada• não pode ser revisada na luz de novos fatos• ex, Tell(S´,t+1) com B(t+1) = B(t) {S´} | S
é contraditório com B(t) | S
![Page 98: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/98.jpg)
Negação por falhaNegação por falha
Prolog permite uso da negação for falha (operador not ) em consultas e em premissas de regras
Não permite negação por falha em fatos ou conclusão de regras
not L = T concluído a partir de P | L Diferente de L = T concluído a partir de P | L Quando encontra objetivo not L, Prolog tenta provar
L• se conseguir, conclui not L = fail• se não conseguir, conclui not L = true
![Page 99: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/99.jpg)
Uso da negação por falha paraUso da negação por falha pararaciocínio por defaultraciocínio por default
ave(piupiu).papa_leguas(bipbip).ave(X) :- papa_leguas(X).voa1(X) :- ave(X), not papa_leguas(X).voa2(X) :- not papa_leguas(X), ave(X).?- voa1(X).X = piupiuyes?- ;no.?- voa2(X).no.
![Page 100: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/100.jpg)
Perigos do uso ingênuo da negação por Perigos do uso ingênuo da negação por falhafalha
edge(a,b).sink(X) :- not edge(X,Y).?- sink(a)no.?- sink(b)yes.? sink(X)no.
![Page 101: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/101.jpg)
Estilo recomendado para evitarEstilo recomendado para evitarsemântica não intuitiva e loopssemântica não intuitiva e loops
Evitar: Regras universais (non ground) antes de fatos instanciados
(ground) Regras recursivas antes da regra de caso base Premissas recursivas antes das premissas não recursivas Premissas negadas antes ou sem premissas positivas
compartilhando as mesmas variáveis (floundering) Recursão através da negação (stratificação) Conclusão com variável X de profundidade p junto com
premissa com variável X de profundidade q p antes de outra premissa com variável X de profundidade r p (occur-check)
Cuts em casos não excludentes
![Page 102: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/102.jpg)
Semântica declarativa de programas Semântica declarativa de programas Prolog Prolog
Semântica de P1: {ônibusPara(garanhuns,10:00). ônibusPara(salgueiro,12:00)}.
Com hipótese do mundo aberto seria:X,Y ((X=garanhuns Y=10:00) (X=salgueiro Y=12:00)) ônibusPara(X,Y))
Mas com a hipótese do mundo fechado de Prolog, é de fato: X,Y ((X=garanhuns Y=10:00) (X=salgueiro Y=12:00)) ônibusPara(X,Y)) Semântica de P2:
{prof(geber). prof(jacques). aluno(Y) :- not prof(Y).} X (prof(X) X=geber X=jacques)
X (aluno(X) Y (X=Y prof(Y))
![Page 103: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/103.jpg)
Uso dual de Prolog para sistema Uso dual de Prolog para sistema inteligenteinteligente
Como formalismo de representação do conhecimento
Como linguagem de programação
Base de Conhecimento:Fatos e Regras
Prolog
Maquina deInferência:
Compilador/Interpretador
Prolog
Ask
Tell
Retract
Base de Conhecimento:sentenças emformalismo F
Maquina deInferência
implementandoem Prolog
raciocínio Rem formalismo F
Ask
Tell
Retract
Maquina deInferência:
Compilador/Interpretador
Prolog
![Page 104: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/104.jpg)
Implementação Prolog de máquina de Implementação Prolog de máquina de inferência encadeando regrasinferência encadeando regras
Codificação da base de fatos• fact(TermoProlog).
Codificação da base de regras
• if P1 conj ... conj Pn then C onde
• P1 ... Pn e C são termos Prolog
• conj é and ou or
Codificação das consultas• forward deriva todos os fatos
Exemplo de base de conhecimentoif hallWet and kitchenDry then leakInBathroomif hallWet and bathroonDry then problemInKitchenif windowClosed or noRain then noWaterFromOutsideif problemInKitchen and noWaterFromOutside then leakInKitchen
Exemplos de consulta?- forwardDerive: problemInKitchenDerive: noWaterFromOutsideDerive: leakInKitchenNo more facts
?- is_true(leak_in_kitchen).yes
![Page 105: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/105.jpg)
Implementação Prolog de máquina de Implementação Prolog de máquina de inferência encadeando regrasinferência encadeando regras
Para frente::- op( 800, fx, if).:- op( 700, xfx, then).:- op( 300, xfy, or).:- op( 200, xfy, and).
forward :- new_derived_fact(P), !, write('Derived: '), write(P), nl, assert(fact(P)), forward ; write('No more facts').
new_derived_fact(Concl) :- if Cond then Concl, not fact(Concl), composed_fact(Cond). composed_fact(Cond) :- fact(Cond).
composed_fact(Cond1 and Cond2) :- composed_fact(Cond1),
composed_fact(Cond2). composed_fact(Cond1 or Cond2) :- composed_fact(Cond1) ;
composed_fact(Cond2).
Pata trás::- op( 800, fx, if).:- op( 700, xfx, then).:- op( 300, xfy, or).:- op( 200, xfy, and).
is_true( P) :- fact( P).is_true( P) :- if Condition then P, is_true( Condition). is_true( P1 and P2) :- is_true( P1),
is_true( P2).is_true( P1 or P2) :- is_true( P1) ; is_true( P2).
![Page 106: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/106.jpg)
Prolog x Programação OOProlog x Programação OO
Funcionalidades built-in: • + unificação e busca• - tipos, herança e encapsulamento
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
![Page 107: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/107.jpg)
Vantagens de PrologVantagens de Prolog
Como formalismo de representação do conhecimento• Intuitividade das regras com
rigor formal da lógica• Teoria muito completa sobre
semântica, corretude e completude da inferência, limites de expressividade, complexidade etc.
• Compiladores muito eficientes
• Versátil, serve de base para grande maioria dos mecanismos de inferência da IA
Como linguagem de programação• Declarativo com semântica
formal• Conciso• Eficiente• De nível suficientemente alto
para implementação rápida e concisa de máquinas de inferência
• Computacionalmente completo
• Versátil, serve como linguagem de programação, de script e de definição e consulta de dados
![Page 108: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/108.jpg)
Limitações de PrologLimitações de Prolog
Como formalismo de representação do conhecimento• Objetos compostos com
restrições complexas• Raciocínio com hipótese do
mundo aberto • Conhecimento procedimental
e numérico• Tratamento da incerteza• Atualização da base de
conhecimento (Tell e Retract) com semântica declarativa
• Especificação declarativa de estratégia de busca
Como linguagem de programação• Recursos muito limitados
para: Estruturação de objetos
complexos Programação de larga escala
• Sem recursos para interfaces gráfica, programação concorrente e distribuída
• Baixa integração com metodologias e ferramentas de desenvolvimento de larga divulgação
UML, RUP, Java, XML, .net, web services, BD O-R, etc.
![Page 109: Introdução a Programação em Lógica e Prolog Jacques Robin CIn-UFPE](https://reader033.vdocuments.mx/reader033/viewer/2022050808/552fc12c497959413d8d1969/html5/thumbnails/109.jpg)
Extensões de PrologExtensões de Prolog
PL tabelada, ex, XSB PL tipada, ex, Mercury PL funcional, ex, -Prolog PL de ordem superior, ex, Hilog PL orientada a objetos, ex, F-Logic PL multi-paradigma, ex, LIFE PL com restrições, ex, Eclipse PL concorrente, ex, BinProlog PL distribuída, ex, Jinni BD dedutivos, ex, Transaction Logic
Disciplinas:• Paradigmas de linguagens
computacionais• Programação declarativa e banco de
dados inteligentes
PL com negação explícita PL com disjunções PL abdutiva PL indutiva PL probabilista
Disciplinas:• Agentes autônomos e
sistemas multiagentes• Engenharia do
conhecimento e sistemas especialistas
• Aprendizagem de máquina